加载新页面后,SafarDriver Selenium页面标题不正确

加载新页面后,SafarDriver Selenium页面标题不正确,selenium,junit,selenium-webdriver,pageload,safaridriver,Selenium,Junit,Selenium Webdriver,Pageload,Safaridriver,我有一个Selenium 2测试,它使用登录表单,然后通过验证页面标题是否已更改来断言登录已成功 测试是用Java/JUnit、WebDriver和Fluent Selenium编写的 fwd.title().within(secs(5)).shouldContain(partialTitle); 测试在Firefox和Chrome上进行。 在Safari上,页面标题仍然是旧的登录页面标题 我们生成的屏幕显示,成功登录后的URL已更改,但标题没有更改 我认为SafariDriver在断言之前没

我有一个Selenium 2测试,它使用登录表单,然后通过验证页面标题是否已更改来断言登录已成功

测试是用Java/JUnitWebDriverFluent Selenium编写的

fwd.title().within(secs(5)).shouldContain(partialTitle);
测试在Firefox和Chrome上进行。 在Safari上,页面标题仍然是旧的登录页面标题

我们生成的屏幕显示,成功登录后的URL已更改,但标题没有更改

我认为SafariDriver在断言之前没有等待页面加载事件完成。

我也有同样的问题!!! 我的测试失败,因为标题用于检查测试“步骤”

Firefox和Chrome没有问题;对于Safari,这是一个问题

我发现这个“黑客”很有效,但每次“点击”后都需要手动检查标题:

def static void waitForPage(驱动程序,字符串标题){
//黑客让登录在Safari&IE上工作
(新的WebDriverWait(驱动程序,10))。直到(新的预期条件(){
公共布尔应用(WebDriver d){
返回d.getTitle().startsWith(title);
}
});
}   

我使用GEB+SPOCK,对于safari驱动程序,有一个关于隐式/显式等待的“已知问题”(参考)

因此,让测试在Safari浏览器上运行的一个好办法是等待页面标题:

static at = {
     waitFor { title == "Homepage" }
}
这将迫使驱动程序等待标题更改(超时是可配置的)

static at = {
     waitFor { title == "Homepage" }
}