0

我正在使用 Cucumber + WatirWebdriver 进行一些验收测试,我一直在想,在单击元素后,底层的 webdrivers 正在等待加载新页面。我是这么认为的,因为 Firefox 网络驱动程序似乎可以做到,正如我所期望的那样。该测试在 FF 中完美运行,但在(例如)ghostdriver(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 

最后,我在 ghostdrivers github 页面上打开了一个问题,并被告知 Selenium webdrivers 不打算在点击后等待页面加载。

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

所以现在我的问题是,在点击等操作后等待页面加载是否有最佳实践?

4

1 回答 1

0

我无法为您提供 watir/Ruby 代码,因为我使用 Java 进行所有开发。但基本思想是你想设置一个方法/函数在你的 click() 之后等待。查看我在Mink with Selenium2 上的帖子:关注所有重定向以获取想法。我在此处发布的方法是使用 selenium 的 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 回答