这是一个遗留应用程序,它具有JavaScript警报以通知正在测试的用户。
我想在警报出现时截取屏幕截图,但是当警报存在时抛出任何controlFlow语句抛出
UnexpectedAlertOpenError:意外警报打开:{警告文字:验证错误}
我唯一的选择是browser.switchTo().alert().dismiss()
在截图之前解除警报。
想知道是否有人有任何解决方案。
Chrome驱动程序:2.23.409699
量角器:3.3.0
答案 0 :(得分:0)
您无法使用webdriver截取JavaScript警报的屏幕截图。但是,您可以使用Robot
类来完成此操作。以下是示例代码:
WebDriver driver = new ChromeDriver();
driver.get("your url");
driver.manage().window().maximize();
// This step will result in an alert on screen
WebElement element = driver.findElement(By.xpath("use xpath to enable alert")).click;
Alert alert = driver.switchTo.alert();
Thread.sleep(2000);
// Press the key combination of (Windows + PrintScreen) by using Robot Class
Robot rb = new Robot();
rb.keyPress(KeyEvent.VK_WINDOWS);
rb.keyPress(KeyEvent.VK_PRINTSCREEN);
rb.keyRelease(KeyEvent.VK_PRINTSCREEN);
rb.keyRelease(KeyEvent.VK_WINDOWS);
alert.accept();