我正在使用Cucumber + WatirWebdriver进行一些验收测试,我一直在想,在点击一个元素后,底层的Web驱动程序正在等待加载新页面。我是这么认为的,因为Firefox webdriver看起来像我所期待的那样。这个测试在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()
所以现在我的问题是,在点击等操作后是否有等待页面加载的最佳做法?
答案 0 :(得分:0)
我无法为您提供watir / Ruby代码,因为我在Java中进行了所有开发。但基本的想法是你要设置一个方法/函数来等待click()之后。查看Mink with Selenium2: follow all redirects上的帖子,了解相关信息。我在那里发布的方法是使用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
祝你好运!