代码之家  ›  专栏  ›  技术社区  ›  Rajagopalan

如何通过ruby selenium binding(或watir)创建chrome配置文件

  •  0
  • Rajagopalan  · 技术社区  · 6 年前

    我知道如何为Firefox创建配置文件

    require 'watir'
    options = Selenium::WebDriver::Firefox::Options.new
    options.profile = "default"
    @driver = Selenium::WebDriver.for :firefox, options: options
    @b = Watir::Browser.new @driver
    

    但当我对chrome做同样的事情时,实际上我意识到options(请看上面)对象甚至没有方法 profile= 所以我尝试添加如下所示的配置文件(我看到人们是如何在JavaSelenium绑定中创建的,所以我也做了同样的工作,但在这里不起作用)

    options = Selenium::WebDriver::Firefox::Options.new
    options.add_argument('user-data-dir=C:\Users\user_name\AppData\Local\Google\Chrome\User Data\Default')
    @driver = Selenium::WebDriver.for :chrome, options: options
    

    有人能帮助我如何通过ruby selenium binding(或watir)创建chrome配置文件吗?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Justin Ko    6 年前

    使用现有的或创建新的配置文件可以通过ChordMeLoad用户数据DIR参数来完成。在watir,你可以通过 :args 参数:

    browser = Watir::Browser.new :chrome, 
      args: ['user-data-dir=C:\Users\user_name\AppData\Local\Google\Chrome\User Data']
    

    注意,如果您试图使用现有的默认配置文件,则不希望在路径中包含“默认”目录。

        2
  •  0
  •   shakeel rauf    6 年前

    我做了一个创建新浏览器的功能。你可以用它。

     def new_browser
      if Rails.env.production?
        chrome_bin = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
        Selenium::WebDriver::Chrome.path = "/app/.apt/usr/bin/google-chrome"
        Selenium::WebDriver::Chrome.driver_path = "/app/vendor/bundle/bin/chromedriver"
      end
    
    
      profile = Selenium::WebDriver::Chrome::Profile.new
      profile['general.useragent.override'] = 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
    
      driver = Selenium::WebDriver.for :chrome, :profile => profile
      pid = driver.instance_variable_get(:@service).instance_variable_get(:@process).instance_variable_get(:@pid)
    
      begin
        browser = Watir::Browser.new driver
      rescue => e
        system("kill -9 #{@pid}")
      end
      return {:browser => browser , :pid => pid}
    end
    
        3
  •  0
  •   Jay Schneider    6 年前

    既然你在评论中要求对水豚做更详细的解释,我就把它作为一个答案来发布(尽管你现在似乎已经有了一个可行的解决方案——很抱歉延迟了回答)。

    在我的rails项目中,我通常按如下方式配置selenium chrome驱动程序:

    gem 'chromedriver-helper'
    

    在gemfile中(或在本地安装)。然后在系统测试初始值设定项中定义

    Capybara.register_driver :selenium_chrome_headless_no_sandbox do |app|
      browser_options = ::Selenium::WebDriver::Chrome::Options.new
      browser_options.args << '--headless'
      browser_options.args << '--disable-gpu'
      browser_options.args << '--no-sandbox'
      Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
    end
    

    稍后(配置rspec)我将其设置为使用的驱动程序,如:

    RSpec.configure do |config|
      config.before(:each, type: :system, js: true) do
        driven_by :selenium_chrome_headless_no_sandbox
      end
    end
    

    也许这对某人有帮助。干杯

    编辑:添加chromedriver助手