0

Cucumber + WatirWebdriver を使用して受け入れテストを行っていますが、要素がクリックされた後、基になる Web ドライバーが新しいページの読み込みを待っていると常に考えていました。Firefox の Web ドライバーが動作しているように見えるので、私はそう思いました。このテストは FF では問題なく機能しますが、(たとえば) ゴーストドライバー (phantomjs webdriver) では機能しません。

Scenario: Follow a link on Amazon
    When I visit Amazon
    And click your account link
    Then the title should include "Recommended"


When /^I visit Amazon$/ do
  @browser.goto "http://amazon.com"
end

When /^click your account link$/ do
  @browser.link(:id, 'nav-your-amazon').click
end

Then /^the title should include "([^"]*)"$/ do |arg1|
  @browser.title.should include arg1
end 

最終的に、ゴーストドライバーのgithubページで問題を開き、Selenium Webドライバーはクリック後にページロードを待つことを意図していないと言われました。

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html#click ()

だから今私の質問は、クリックのようなアクションの後にページがロードされるのを待つためのベストプラクティスがあるかどうかです?

4

1 に答える 1

0

すべての開発を Java で行っているため、watir/Ruby コードを提供することはできません。ただし、基本的な考え方は、click() の後に待機するメソッド/関数を設定することです。Selenium2 を使用した Minkに関する私の投稿を確認してください。アイデアについては、すべてのリダイレクトに従ってください。そこに投稿したメソッドは、セレンの FluentWait オブジェクトを使用して、クリック後に要素をポーリングするように設定されています。

これはあなたがやりたいことです:

.click() //click your button
.waitForElementMethod() //Fluent wait for element on page we want to wait for
//if element found continue
//else throw error

Fluentwait に関するドキュメント: http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html

幸運を!

于 2012-10-14T07:34:01.047 に答える