点击Selenium webdriver时等待新页面出现

时间:2012-10-13 17:36:46

标签: watir-webdriver

我正在使用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()

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

1 个答案:

答案 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

祝你好运!