我们能否处理在使用selenium自动化网页时出现的chrome警报?
请遵循以下提到的步骤: 1.)访问此网站: 2.)输入任何垃圾邮件登录id和密码,然后出现对话框,显示: 用户或密码无效 3.)Q1:我有没有办法在这个对话框中输入“ok”按钮???因为我无法检查这个对话框的元素我们能否处理在使用selenium自动化网页时出现的chrome警报?,selenium,selenium-webdriver,Selenium,Selenium Webdriver,请遵循以下提到的步骤: 1.)访问此网站: 2.)输入任何垃圾邮件登录id和密码,然后出现对话框,显示: 用户或密码无效 3.)Q1:我有没有办法在这个对话框中输入“ok”按钮???因为我无法检查这个对话框的元素 4.)问题2:当你尝试登录gmail[密码不应保存]时,在输入登录详细信息后,它会问:你想保存这个网站的密码吗?这个弹出窗口可以处理吗?因为这里我也不能检查任何信息。Q1:Selenium可以使用警报界面与javascript(基于浏览器)警报交互 您可以尝试以下任一操作: 使用显式等
4.)问题2:当你尝试登录gmail[密码不应保存]时,在输入登录详细信息后,它会问:你想保存这个网站的密码吗?这个弹出窗口可以处理吗?因为这里我也不能检查任何信息。Q1:Selenium可以使用警报界面与javascript(基于浏览器)警报交互 您可以尝试以下任一操作:
Wait<WebDriver> wait = new FluentWait<>(driver).withTimeout(5, TimeUnit.SECONDS).pollingEvery(500,msecs).ignoring(NoSuchElementException.class
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.accept();
Q2:我无法复制gmail的保存密码弹出窗口。但是,您应该能够通过使用
.discouse()来完成此操作
而不是.accept()代码>
注意:如果您使用谷歌chrome进行测试,请注意chrome通常会自动更新。如果Selenium alert交互与最新的chrome版本不兼容,它可能不会突然工作。有了这个,我建议您保持chromedriver exe和java绑定的更新。Q1:有没有办法在这个对话框中输入“ok”按钮???因为我无法检查这个对话框的元素
答:对于需要处理警报的场景,您可以编写一个类似于下面提到的通用方法,并在调用/调用它时传递适当的参数:
public static void handleAlert(WebDriver driver, boolean accept) {
Alert popup = driver.switchTo().alert();
if (accept)
popup.accept();
else
popup.dismiss();
}
调用上述方法时,当您想要接受警报时,可以传递true,当您不想要接受警报时,可以传递false
问题2:当你尝试登录gmail[密码不应保存]时,在输入登录详细信息后,它会问:你想保存这个网站的密码吗?这个弹出窗口可以处理吗?因为这里我也不能查看任何信息
答:此方案中的解决方案将取决于正在使用的浏览器。当您使用Chrome浏览器时,您可以使用以下代码来处理所需的弹出窗口:
ChromeOptions options = new ChromeOptions();
options.addArguments("chrome.switches", "--disable-extensions --disable-extensions-file-access-check --disable-extensions-http-throttling --disable-infobars --enable-automation --start-maximized");
options.setExperimentalOption("credentials_enable_service", false);
options.setExperimentalOption("profile.password_manager_enabled", false);
WebDriver driver = new ChromeDriver(options);
如果您有任何进一步的疑问或以上解决方案不适合您,请告诉我。尝试使用JavascriptExecutor接受警报:
((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");
Alert alert=driver.switchTo().alert();
alert.accept();
您可以接受弹出的警报框,如下所示
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
System.out.println("ERROR: (ALERT BOX DETECTED) - ALERT MSG : " + alertText);
alert.accept();
File outputFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
String imageDetails = "C:\\Images";
File screenShot = new File(imageDetails).getAbsoluteFile();
FileUtils.copyFile(outputFile, screenShot);
System.out.println("Screenshot saved: {}" + imageDetails);
driver.close();
嘿,如何在nodejs中传递这些功能
((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");
Alert alert=driver.switchTo().alert();
alert.accept();
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
System.out.println("ERROR: (ALERT BOX DETECTED) - ALERT MSG : " + alertText);
alert.accept();
File outputFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
String imageDetails = "C:\\Images";
File screenShot = new File(imageDetails).getAbsoluteFile();
FileUtils.copyFile(outputFile, screenShot);
System.out.println("Screenshot saved: {}" + imageDetails);
driver.close();