我正在尝试在执行操作(更新/创建系统中的任何记录)后验证网页上出现的消息。 问题是消息在3-4秒后消失,因此我无法捕获DOM中的任何更改(Javascript)
附上截图 -
我用assertTrue()语句尝试了BrowserDriver.getBrowserDriver().getPageSource().contains("warning message here")
,但它没有用。
请让我知道方法
答案 0 :(得分:1)
您可以尝试使用以下代码。注意:选择器的编写方式是根据失败 div 文本标识元素。请确保选择器内的文本与消息中显示的文本一样(特别是空格)。如果可能的话,我总是建议你根据类/ id找到元素
By xpath = By.xpath("//div[contains(.,'Failed To Save')]");
WebElement element = (new WebDriverWait(driver,5)).until(ExpectedConditions.presenceOfElementLocated(xpath));
System.out.println(element.getText());
答案 1 :(得分:0)
首先,您希望尽可能少地设置hiddenlyWait属性:
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
然后最好使用ExpectedConditions来捕获该元素:
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.id("your-element")));
因此,您不需要使用assertTrue()或类似的东西,如果无法找到元素,WebDriverWait将失败。
不要忘记更改后隐式的等值,返回默认值。