class Targetmy::Robot
Constants
- ADV_PROD_INDEXES
- ADV_TYPES_INDEXES
- CAMPAIGNS_CREATE_URL
- CAMPAIGNS_URL
- LOGIN_URL
Public Class Methods
create(opts)
click to toggle source
# File lib/targetmy/robot.rb, line 11 def self.create(opts) new(opts) end
new(opts)
click to toggle source
# File lib/targetmy/robot.rb, line 15 def initialize(opts) @driver = opts.has_key?(:driver) ? opts[:driver] : :chrome @config_raw = opts.has_key?(:config) ? opts[:config] : [] puts "create config" @config = Targetmy::Config.new @config_raw # OR # @config = OpenStruct.new(items: JSON.parse(config.to_json, object_class: OpenStruct)) end
Public Instance Methods
create_campaign()
click to toggle source
# File lib/targetmy/robot.rb, line 35 def create_campaign puts "create campaign" # Watir::Wait.until { @browser.link(:css, ".campaign-toolbar .campaign-toolbar__create-button").present? } # @browser.link(:css, ".campaign-toolbar .campaign-toolbar__create-button").click # @browser.goto CAMPAIGNS_CREATE_URL begin @browser.goto CAMPAIGNS_URL @config.items.each do |config| # click to create_campaign_btn Watir::Wait.until { @browser.link(:css, ".campaign-toolbar .campaign-toolbar__create-button").present? } @browser.link(:css, ".campaign-toolbar .campaign-toolbar__create-button").click # select product type and set link to the advertised site Watir::Wait.until { @browser.div(:css, ".product-types.js-product-types-wrap").present? } @adv_type_index = ADV_TYPES_INDEXES[config.type.to_sym] @browser.div(css: ".product-types__item", index: @adv_type_index).click @browser.text_field(:css, ".base-setting-my__main-url__input.js-main-url-input").set(config.link) # setup adv_products Watir::Wait.until { @browser.div(:css, ".js-pacs-wrapper").present? } @adv_prod_index = nil config.adv_products.each do |prod| # select adv product if @adv_prod_index != ADV_PROD_INDEXES[prod.type.to_sym] @adv_prod_index = ADV_PROD_INDEXES[prod.type.to_sym] @browser.div(css: ".pac-item._gray-block", index: @adv_prod_index).click end # create ads Watir::Wait.until { @browser.div(:css, ".banner-form").present? } prod.ads.each do |ad| # set ad form fields @browser.text_field(:css, ".banner-form__input.js-text-value").set(ad.title) @browser.textarea(:css, ".banner-form__input.js-text-value.banner-form__input_text-area").set(ad.text) @browser.file_field(:css, ".banner-form__img-file.banner-form__input.js-image-value").set(ad.image) # handle crop image Watir::Wait.until { @browser.button(:css, ".image-cropper__save").present? } @browser.button(:css, ".image-cropper__save").click # create ad click Watir::Wait.until { @browser.button(:css, ".banner-form__save-button.js-banner-save").present? } Watir::Wait.until { sleep 1 } @browser.button(:css, ".banner-form__save-button.js-banner-save").click end # set another fields @browser.text_field(:css, ".js-campaign-name").set(prod.campaign_name) # click to the finish btn @browser.div(:css, ".create-page__main-button").click puts "finish" end end rescue Exception => e @browser.close raise e end end
login(email, password)
click to toggle source
# File lib/targetmy/robot.rb, line 97 def login(email, password) puts "login" @browser.goto LOGIN_URL @browser.text_field(:id, "email").set(email) @browser.text_field(:id, "password").set(password) @browser.form(:id,'login_form').submit if @browser.div(css: ".formMsg.js_form_msg.js_form_msg").present? puts "Wrong login or password!" @browser.close end true end
start(email, password)
click to toggle source
# File lib/targetmy/robot.rb, line 25 def start(email, password) puts "start" @browser = Watir::Browser.new @driver if login(email, password) create_campaign end end