如何检测元素的更改

时间:2016-02-24 02:24:04

标签: java selenium selenium-webdriver

使用硒来自动化测试。

所以我有一个由javascript更改的元素。如何检测该项目文本的更改?例如,这是项目改变之前和之后的html:

之前:

<span id="errorMsg"></span>

后:

<span id="errorMsg">All fields not filled out</span>

这是我在点击提交按钮后调用的当前帮助函数。它在加载新页面时效果很好但在这种情况下不起作用。

   public void waitforText(String search) {
        WebDriverWait myWait = new WebDriverWait(Grid.driver(), Grid.getNewTimeOut() / 1000L);
        ExpectedCondition conditionToCheck = new ExpectedCondition() {
            public Boolean apply(WebDriver input) {
                WebElement bodyTag = Grid.driver().findElement(By.tagName("body"));
                return Boolean.valueOf(bodyTag.getText().contains(search));
            }
        };
        myWait.until(conditionToCheck);
    }

以及如何调用函数:

waitforText("All fields not filled out");

我可以看到页面中的消息已更改,但selenium未检测到此消息。我知道我可以使用直接睡眠或等待,但如果可以避免我真的不想走这条路

1 个答案:

答案 0 :(得分:2)

使用textToBePresentInElement expected condition

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.textToBePresentInElement(By.id("errorMsg"), "All fields not filled out"));