无法使用硒验证错误消息
Unable to validate Error message using selenium
我正在尝试验证执行操作后出现在网页上的消息(系统中任何记录的 updating/creation。)
问题是消息在 3-4 秒后消失,因此我无法捕获 DOM(Javascript)
中的任何更改
附上截图-
我尝试 BrowserDriver.getBrowserDriver().getPageSource().contains("warning message here")
使用 assertTrue() 语句但它不起作用。
请告诉我方法
首先,您希望尽可能少地设置 implicitlyWait 属性:
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
那么最好使用 ExpectedConditions 来捕获该元素:
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.id("your-element")));
所以您不需要使用 assertTrue() 或类似的东西,如果找不到元素,WebDriverWait 就会失败。
不要忘记更改 implicitlyWait 值之后,返回到默认值。
您可以试试下面的代码。注意:选择器的编写方式是根据失败的 div 文本来识别元素。请确保选择器中的文本与消息中显示的一样(特别是空格)。我总是建议你根据 class/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());
我正在尝试验证执行操作后出现在网页上的消息(系统中任何记录的 updating/creation。) 问题是消息在 3-4 秒后消失,因此我无法捕获 DOM(Javascript)
中的任何更改附上截图-
BrowserDriver.getBrowserDriver().getPageSource().contains("warning message here")
使用 assertTrue() 语句但它不起作用。
请告诉我方法
首先,您希望尽可能少地设置 implicitlyWait 属性:
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
那么最好使用 ExpectedConditions 来捕获该元素:
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.id("your-element")));
所以您不需要使用 assertTrue() 或类似的东西,如果找不到元素,WebDriverWait 就会失败。
不要忘记更改 implicitlyWait 值之后,返回到默认值。
您可以试试下面的代码。注意:选择器的编写方式是根据失败的 div 文本来识别元素。请确保选择器中的文本与消息中显示的一样(特别是空格)。我总是建议你根据 class/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());