Java 通知(警报)在selenium webdriver的整个应用程序中随机出现
我正在使用SeleniumWebDriver和Java语言。我面临一个问题,通知警报在整个应用程序中随机出现。基本上,这些警报有一些信息,因为它是功能性的 当脚本执行其步骤时,这些警报突然出现在屏幕上,我的脚本将由于警报消息而失败 请给出您的建议,我们如何处理随机出现在任何窗口上的此类警报? 以下是我想到的处理这种情况的两点:Java 通知(警报)在selenium webdriver的整个应用程序中随机出现,java,selenium,selenium-webdriver,appium,Java,Selenium,Selenium Webdriver,Appium,我正在使用SeleniumWebDriver和Java语言。我面临一个问题,通知警报在整个应用程序中随机出现。基本上,这些警报有一些信息,因为它是功能性的 当脚本执行其步骤时,这些警报突然出现在屏幕上,我的脚本将由于警报消息而失败 请给出您的建议,我们如何处理随机出现在任何窗口上的此类警报? 以下是我想到的处理这种情况的两点: 我将在每一步(单击或之后)检查警报是否出现 其他动作)但这会增加我的执行时间 有没有办法,我们会一直监控警报是否出现。如果 警报出现,如果没有,请关闭警报,然后继续执行
提前谢谢 如果您希望在
脚本执行过程中不出现不必要的警报,您可以覆盖您的警报功能,然后使用JavaScriptExecutor
执行脚本,如下所示:-
JavascriptExecutor executor = (JavascriptExecutor)driver
executor.executeScript("window.alert = function () { return true}");
WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = webDriver.switchTo().alert();
每次加载页面时,都可以执行此脚本
。此脚本
将覆盖您的警报
功能,警报将永远不会发生
我建议您在测试不依赖于alert
时运行此脚本,因为执行此脚本后,alert
将不会显示在页面上
除此之外,您还可以按如下方式处理警报
:-
JavascriptExecutor executor = (JavascriptExecutor)driver
executor.executeScript("window.alert = function () { return true}");
WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = webDriver.switchTo().alert();
现在,如果要接受警报,可以使用:-
alert.accept();
alert.dismiss();
对于“取消”,您可以使用:-
alert.accept();
alert.dismiss();
注意:-如果使用WebDriverWait
未出现警报,它将抛出TimeoutException
。。所以你需要处理它
已编辑..
对于解决此问题的Appium
自动化,您可以使用专门设计用于处理这些警报的所需功能
您可以始终使用以下所需功能接受或解除警报:-
autoAcceptAlerts = true
...
capabilities.SetCapability("autoAcceptAlerts", true);
或
此外,Appium
的一些旧版本尚未使用此解决方案,因此您可能希望尝试以下解决方案:-
driver.SwitchTo().Alert().Accept();
欲了解更多信息,请点击
希望它能帮助您:)如果您希望在脚本执行过程中不出现不必要的警报,您可以覆盖您的警报功能,然后使用JavaScriptExecutor
执行脚本,如下所示:-
JavascriptExecutor executor = (JavascriptExecutor)driver
executor.executeScript("window.alert = function () { return true}");
WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = webDriver.switchTo().alert();
每次加载页面时,都可以执行此脚本
。此脚本
将覆盖您的警报
功能,警报将永远不会发生
我建议您在测试不依赖于alert
时运行此脚本,因为执行此脚本后,alert
将不会显示在页面上
除此之外,您还可以按如下方式处理警报
:-
JavascriptExecutor executor = (JavascriptExecutor)driver
executor.executeScript("window.alert = function () { return true}");
WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = webDriver.switchTo().alert();
现在,如果要接受警报,可以使用:-
alert.accept();
alert.dismiss();
对于“取消”,您可以使用:-
alert.accept();
alert.dismiss();
注意:-如果使用WebDriverWait
未出现警报,它将抛出TimeoutException
。。所以你需要处理它
已编辑..
对于解决此问题的Appium
自动化,您可以使用专门设计用于处理这些警报的所需功能
您可以始终使用以下所需功能接受或解除警报:-
autoAcceptAlerts = true
...
capabilities.SetCapability("autoAcceptAlerts", true);
或
此外,Appium
的一些旧版本尚未使用此解决方案,因此您可能希望尝试以下解决方案:-
driver.SwitchTo().Alert().Accept();
欲了解更多信息,请点击
希望它能帮助您:)无论您在哪里收到警报,都可以调用此方法。此方法将接受警报
public void checkAlert(){
if(ExpectedConditions.alertIsPresent() != null){
driver.switchTo().alert().accept();
}
}
无论您在何处获得警报,都可以调用此方法。此方法将接受警报
public void checkAlert(){
if(ExpectedConditions.alertIsPresent() != null){
driver.switchTo().alert().accept();
}
}
你对这个网站没有控制权,是吗?您的第一个解决方案似乎很好。编写一个类方法来检查警报并将其关闭,我怀疑它会大量增加执行时间。一件简单的事情是,在try-catch中放置警报可见性的条件代码……您能检查是否有方法阻止警报发生吗?因为在每一步添加验证都会增加时间并降低应用程序的速度。您无法控制此网站,是吗?您的第一个解决方案似乎很好。编写一个类方法来检查警报并将其关闭,我怀疑它会大量增加执行时间。一件简单的事情是,在try-catch中放置警报可见性的条件代码……您能检查是否有方法阻止警报发生吗?因为在每一步添加验证都会增加时间,并且会减慢应用程序的运行速度。请大家多多指教!!我还有一个问题,我正在使用appium自动化移动应用程序。屏幕上也出现了随机广告,你有什么办法处理它吗!!您应该使用capabilities.SetCapability(“autoacceptlerts”,true)代码>用于始终接受警报或功能。SetCapability(“autoDismissAlerts”,true)代码>用于始终未命中警报..有关更多信息,请访问此链接。。。。谢谢你的建议!!我还有一个问题,我正在使用appium自动化移动应用程序。屏幕上也出现了random adv,你有什么办法处理它吗