3

Chrome と Firefox の両方で Selenium を使用して、Rails 2 に対する統合テストを正常に実行しています。ただし、最近 Rails 3 にアップグレードしたため、chrome webdriver インスタンスの作成で問題が発生しています。

作成しようとすると、次のスタックが取得されます。

irb(main):002:0> profile = Selenium::WebDriver::Chrome::Profile.new
translate])#<Selenium::WebDriver::Chrome::Profile:0x64f2fd0 @extensions=[], @model=nil>
irb(main):003:0> profile['download.prompt_for_download'] = false
false
irb(main):004:0> driver = Selenium::WebDriver.for(:chrome, :profile  => profile,     :switches => %w[--ignore-certificate-errors --disable-popup-blocking --disable-translate])
ArgumentError: wrong number of arguments (0 for 1)
  from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:157:in `open'
  from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:157:in `ip'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/platform.rb:170:in `interfaces'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/port_prober.rb:23:in `free?'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/port_prober.rb:5:in `above'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/chrome/service.rb:33:in `default_service'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/chrome/bridge.rb:14:in `initialize'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/driver.rb:37:in `new'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver/common/driver.rb:37:in `for'
    from /var/www/myapp/shared/bundle/ruby/1.8/gems/selenium-webdriver-2.27.2/lib/selenium/webdriver.rb:67:in `for'
    from (irb):4

任意のヒント?

4

3 に答える 3

3

これは、依存関係の一部として「バックポート」gem を含む gem を Gemfile に含めたときに見られました。UDPSocketbackports gem は、いくつかの Ruby 1.8 内部を書き換え、コア クラスの一部を上書きしました。backports gem を削除して試してみてください。

于 2012-12-17T23:21:19.500 に答える
1

ChromeDriver のインストール:

「 http://chromedriver.storage.googleapis.com/index.html?path=2.8/ 」から Chromedriver 2.x をダウンロードします。解凍し、任意のドライブのフォルダーに保存します。次の手順でパスを設定します。

パスを chromedriver.exe までコピーします コンピューターを右クリックして [プロパティ] を選択します [詳細システム変数] を選択します [環境変数] を選択します [ユーザー変数] の [パス] 変数の [編集] ボタンをクリックします chromedriver パスを追加します 変更を保存します。

Selenium テストを実行します。

次に、セレン テストを実行します。Chromeブラウザで実行されます。

サンプルコード

「selenium-webdriver」が必要です

$driver = Selenium::WebDriver.for :chrome

$driver.navigate.to " https://www.google.co.in/ "

$driver.manage().window().maximize()

$driver.quit()

: 最新バージョンの Chrome ブラウザーには、最新の chromedriver をインストールする必要があります。

于 2014-02-25T13:16:35.117 に答える
0

backportsこれは、 gem との干渉と、インターフェイスを変更してもsocketライブラリが再利用するという事実が原因でした。IO.open

v2.6.7 以降にアップグレードbackportsすると、この問題が解決するはずです。

于 2013-01-15T05:34:30.233 に答える