请按照以下步骤操作:
1。)访问此网站:http://demo.guru99.com/V4/index.php
2.)打入任何垃圾登录ID和密码,然后出现对话框说: 用户或密码无效
3.)Q1:有没有办法在这个对话框中输入“ok”按钮?因为我无法检查这个对话框的元素。
4.)Q2:当你尝试登录gmail [密码不应该保存]时,在打了登录详细信息后,它会问,你要保存这个网站的密码吗?可以处理这个弹出窗口吗?因为在这里我也无法检查任何信息。
答案 0 :(得分:0)
Q1: Selenium可以使用Alert界面与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();
driver.switchTo().alert().accept();
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
Q2:我无法复制gmail的保存密码弹出窗口。但是,您应该可以使用.dismiss();
代替.accept();
来完成此操作。
注意:如果您使用谷歌浏览器进行测试,请注意,Chrome通常会自动更新。如果Selenium警报交互与最新的chrome版本不兼容,则可能无法突然发挥作用。有了这个,我建议你保持你的chromedriver exe和java绑定更新。
答案 1 :(得分:0)
Q1:我有什么方法可以打击&#34;确定&#34;此对话框中的按钮???因为我无法检查此对话框的元素。
答案:对于需要处理警报的场景,您可以编写类似于下面提到的通用方法,并在调用/调用它时传递适当的参数:
public static void handleAlert(WebDriver driver, boolean accept) {
Alert popup = driver.switchTo().alert();
if (accept)
popup.accept();
else
popup.dismiss();
}
在调用上述方法时,如果您想接受提醒,可以传递 true ,当您不想接受提醒时,可以传递 false 。
Q2:当你尝试登录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);
请注意,如果您有任何进一步的疑问或以上解决方案不适合您。
答案 2 :(得分:0)
尝试使用JavascriptExecutor接受提醒:
((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");
Alert alert=driver.switchTo().alert();
alert.accept();
答案 3 :(得分:0)
您可以接受如下弹出的警报框。
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();