我有一个使用登录表单的Selenium 2测试,然后通过验证页面标题已更改来断言登录成功。
测试用 Java / JUnit , WebDriver 和 Fluent Selenium
编写fwd.title().within(secs(5)).shouldContain(partialTitle);
测试适用于Firefox和Chrome。 在Safari上,页面标题仍然是旧的登录页面标题。
我们生成的截屏视频显示成功登录后的网址已更改,但标题未更改。
我认为SafariDriver
不会在断言之前等待页面加载事件完成。
答案 0 :(得分:1)
我有同样的问题!!! 我的测试失败,因为标题用于检查测试"步骤"。
使用Firefox和Chrome没问题;使用Safari这是一个问题!!!
我发现了这个" hack"这项工作,但在每次"点击"之后手动检查标题是必要的:
def static void waitForPage(driver, String title) {
//Hack to make login working on Safari&IE
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().startsWith(title);
}
});
}
答案 1 :(得分:0)
我使用GEB + SPOCK和safari驱动程序有一个&#34;已知的问题&#34;关于隐式/显式等待(参考https://code.google.com/p/selenium/issues/detail?id=5860)。
因此,在Safari浏览器上运行make test的一个很好的解决方法是等待页面标题:
static at = {
waitFor { title == "Homepage" }
}
这会强制驱动程序等到标题更改(超时可配置)。