gpt4 book ai didi

java - 通知(警报)在 selenium webdriver 的整个应用程序中随机出现

转载 作者:行者123 更新时间:2023-12-02 03:32:49 25 4
gpt4 key购买 nike

我正在使用带有 Java 语言的 selenium webdriver。我面临的问题是通知警报在整个应用程序中随机出现。基本上这些警报有一些信息,因为它是功能性的。

当脚本执行其步骤时,但屏幕上突然出现这些警报,并且我的脚本将因警报消息而失败。

请提出您的建议,我们如何处理这种随机出现在任何窗口上的警报?

以下是我想到的处理这种情况的两点:

  1. 我会检查每一步是否出现警报(点击或其他操作),但它增加了我的执行时间。

  2. 有什么办法,我们可以持续监控Alert是否出现。如果 出现警报只需关闭警报,如果没有则继续执行 脚本步骤。

请提出任何解决方法来处理此类警报,以便我们的脚本不会失败。

这与我们使用 Appium 工具自动化移动应用程序并突然出现任何广告在屏幕上的情况相同。

如果有人提供 java 代码来处理这种类型的场景,那就太好了。

提前致谢!!

最佳答案

如果您希望在脚本执行期间不出现不必要的警报,您可以覆盖之前的警报函数使用 JavaScriptExecutor 执行您的脚本,如下所示:-

JavascriptExecutor executor = (JavascriptExecutor)driver
executor.executeScript("window.alert = function () { return true}");

每次加载页面时,您都可以执行此脚本一次。此脚本将覆盖您的警报功能,并且警报永远不会发生。

我建议您在测试不依赖alert时运行此脚本,因为执行此脚本后alert将不会出现在页面上。

除了您可以处理警报,如下所示:-

WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = webDriver.switchTo().alert();

现在如果你想接受警报,你可以使用:-

alert.accept();

要取消,您可以使用:-

alert.dismiss();

注意:-如果使用WebDriverWait不存在警报,它将抛出TimeoutException..所以你需要处理它。

已编辑..

要让 Appium 自动化解决此问题,您可以使用专门设计来处理这些警报的所需功能。

您可以始终接受或始终忽略具有这些所需功能的警报:-

autoAcceptAlerts = true
...
capabilities.SetCapability("autoAcceptAlerts", true);

autoDismissAlerts = true
...
capabilities.SetCapability("autoDismissAlerts", true);

此外,一些旧版本的 Appium 尚未使用此解决方案,因此您可能想尝试一个小的解决方法:-

driver.SwitchTo().Alert().Accept();

更多信息请关注this

希望对你有帮助..:)

关于java - 通知(警报)在 selenium webdriver 的整个应用程序中随机出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37850180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com