2

我试图找到等待特定字符串出现在页面中的最干净的代码。我现在最好的就是相当笨重

new Wait() {
    @Override
    public boolean until() {
        return !webDriver.findElement(By.tagName("html"))
               .getText().contains("please choose another");
    }
}.wait("wait failed!", 60000);

有没有更优雅的方式来做到这一点?

4

3 回答 3

3

如果这真的是你想做的,那么

webDriver.findElement(By.xpath("//*[contains(text(),'please choose another')]"));

式等待对我来说似乎好一点(从“干净代码”的角度来看),因为它只是一行代码。

于 2012-04-13T15:00:18.163 回答
1

您可以使用 Webdriver 的内置方法来显式等待 - 请参阅此处的示例

请注意,如果可能,最好检查文本是否在特定元素中,而不是在任何地方。检查它是否在任何地方都可能导致误报(即,如果有人在页面的其他地方添加了相同的字符串,您将不再检查您认为的内容)。

于 2012-04-13T14:36:02.580 回答
0

创建一个 WebDriverWait 类对象

WebDriverWait wait = new WebDriverWait(driver, 500);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[contains(text(),'please choose another']")));
于 2012-08-20T07:37:51.937 回答