2017-09-16 6 views
6

これを序列する最も重要なことは、おそらく私がc9を使用していることです。これはクラウド内のIDEなので、ChromeまたはFirefoxをWatirで使用しようとすると、ChromeやFirefoxブラウザへのパスを書き込めないため、多くの問題が発生します。私は、私が見つけることができる待機方法のあらゆるバリエーションも試しましたが、どれもうまくいきませんでした。ウェブウォークにアクセスした後に何か要素を見つけようとしたときにウォーター・タイムアウトが発生する

def save 
    require 'watir' 
    require 'phantomjs' 

    @browser = Watir::Browser.new :phantomjs 
    @browser.goto "https://kroger.softcoin.com/programs/kroger/digital_coupons/?origin=DigitalCoupons&banner=Smiths#contentBox" 

    @browser.div(id: "contentBox").wait_until(&:present?).text 
    @products = @browser.divs 

end 

エラー

は "contentBox" #上の真の条件を待って、30秒後にタイムアウトし、:タグ名=> "DIV"}>

私は、この問題を解決したいの道をスミスのウェブサイトからデータをスクラップできないのはクロムブラウザを使用することですが、「chromedriver 127.0.0.1:9515に接続できません」というエラーが表示されます

+0

これはfirefoxで正しく動作し、wait_until()メソッドを使用する必要はありません。自動的に:exists:present:enabledを自動的に待機するためです。 Firefox用のgeckodriverは使用しないでください。古いFirefoxを使用してください。正常に動作します。 – RAJ

+2

絶対に必要な場合を除き、従来のFirefoxを使用しないでください。 geckodriverはこの時点で完全な機能に近いです。レガシーFirefoxは、今後のSelenium 4ではオプションではない可能性が高いです。Chromeのドライバは現在サポートされているので、Phantomjの代わりに 'Watir :: Browser.new:chrome、headless:true'をチェックしてください。はるかに高速で、phantomjsは推奨されなくなりました。 – titusfortner

+0

@titusfortner firefoxは52SE版でセレンのサポートを元に戻すことを知っていますか? – RAJ

答えて

2

私は同様の問題があり、webdrivers gemがインストールされています問題

$gem install webdrivers

+0

これを試しましたが、機能しませんでした。 – ChrisWilson

3

私は同様の問題 を持っていたと私はコマンドでセレン

# docker-compose.yml file 
version: '2' 
services: 
    selenium: 
    image: selenium/standalone-chrome 
    ports: 
     - "4444:4444" 
    restart: always 
    volumes: 
     - "${PWD}/spec:${PWD}/spec" # I exposed `spec` dir to cover code with specs 
     - /dev/shm:/dev/shm 


# test.rb file 
@browser = Watir::Browser.new(
    :remote, 
    url: 'http://localhost:4444/wd/hub' 
) 

実行コンテナとドッキングウィンドウコンテナをインストールすることによって、それを解決:

docker run -it -d -P -p 4444:4444 -v `pwd`/spec:`pwd`/spec selenium/standalone-chrome 

そして再び

を試してみてください(また、VPSや別のレモでもコンテナを実行できます

関連する問題