1

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

测试是用Java/JUnitWebDriverFluent Selenium编写的

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

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

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

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

4

2 回答 2

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);
        }
    });
}   
于 2015-01-26T08:46:08.477 回答
0

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

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

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

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

于 2015-01-29T07:43:53.047 回答