如何识别几秒钟内消失的通知元素?

问题描述 投票:0回答:4

我有一个测试用例,在创建项目后,会显示通知,但该通知会在 2-3 秒内消失。

我想识别该通知的元素,但是当我尝试在 firebug 中检查该元素时,它的 HTML 片段很快就消失了,因为通知本身消失了。因此,我无法识别它的元素,并且发现它很难自动化。

任何人都可以建议如何处理这种情况吗?

selenium selenium-webdriver
4个回答
3
投票

既然你说“我有一个测试用例”,我认为你正在测试你的应用程序。解决问题最简单的方法就是了解您的应用程序。即使第三方库提供了通知代码,您也可以阅读文档以查看是否可以增加延迟,或者您可以阅读源代码以了解它如何创建元素以及在何处创建元素。

如果上述方法失败,那么如果您可以在 Selenium 中组合一系列触发通知的操作,您应该能够足够快地获得

body
的序列化,以便您可以在闲暇时进行检查。使用 Selenium for Python,它会这样:

print driver.execute_script("return document.body.outerHTML;")

我将通过重定向运行上面的代码,将

print
语句的输出保存到一个文件中,然后我可以在闲暇时检查该文件。如果您愿意,您可以通过获取
outerHTML
的后代的
body
来缩小范围。我喜欢有大量的上下文,以便我知道元素到底是在哪里创建的。我使用了一些库和配置来创建此类通知作为
body
的子元素,以及一些将它们作为其他元素的子元素的库和配置。


1
投票
  1. 打开通知前的上一页
  2. 按“Ctrl+Shift+c”,导航到“源”选项卡
  3. 执行手动步骤来生成通知,该通知将在几秒钟内隐藏
  4. 按“F8”。页面加载脚本将暂停
  5. 然后照常检查元素并在方便时获取 xpath

0
投票

在大多数情况下,我们可以通过冻结屏幕窗口或 DOM 结构来检查该特定通知的 x 路径,但问题是如何打印通知文本以便通知可以自动化。

我也面临同样的问题,如何打印正在消失的通知文本。


-1
投票

您可以使用以下JAVA代码等待20秒,直到页面中出现任何带有文本“您的通知”的元素

try{
    WebDriverWait wait = new WebDriverWait(driver,20);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(text(),'Your notification here')]")));
}catch(Throwable e){
    System.err.println("Error while waiting for the notification to appear: "+ e.getMessage());
}
© www.soinside.com 2019 - 2024. All rights reserved.