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



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

该测试是用Java/JUnit,WebDriverFluent Selenium编写的

fwd.title().within(secs(5)).shouldContain(partialTitle);

这些测试适用于Firefox和Chrome。在 Safari 上,页面标题仍然是旧的登录页面标题。

我们生成的截屏视频显示成功登录后的 URL 已更改,但标题未更改。

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

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

使用

Firefox和Chrome没有问题;使用Safari则有问题!!

我发现这个"黑客"有效,但有必要在每次"点击"后手动检查标题:

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);
        }
    });
}   
我使用

GEB + SPOCK,并且使用野生动物园驱动程序存在关于隐式/显式等待的"已知问题"(参考 https://code.google.com/p/selenium/issues/detail?id=5860)。

因此,在 Safari 浏览器上使测试可运行的一个很好的解决方法是等待页面标题:

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

这将强制驱动程序等到标题更改 (超时是可配置的) 。

最新更新