捕获警报的屏幕截图

时间:2014-02-10 06:22:56

标签: testing selenium automation selenium-webdriver

我在弹出窗口后使用以下代码截取应用程序的屏幕截图。

Alert alert = driver.switchTo().alert();
File scrFile= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("G:\\Screens\\sc1.jpg"));
String alertMsg = alert.getText();
System.out.println(alertMsg);
alert.accept();

但它正在抛出这个异常

  

线程“main”中的异常org.openqa.selenium.UnhandledAlertException:存在模态对话框:评估名称已存在。

但如果删除屏幕截图程序,代码工作正常。

2 个答案:

答案 0 :(得分:6)

你必须在拍摄截图之前处理警报......你可以在这里阅读更多信息 https://code.google.com/p/selenium/issues/detail?id=4412

答案 1 :(得分:1)

您始终可以使用Robot获取整个页面的屏幕截图。我刚试了一下,这段代码正在运行:

WebDriver driver;
@Before
public void init() throws Exception {
    driver = new FirefoxDriver();
    driver.get("http://www.tizag.com/javascriptT/javascriptalert.php");
}

@Test
public void bla() throws AWTException, IOException {
    WebElement element = driver.findElement(By.xpath("//input[@type=\"button\"]"));
    // Trigger the alert
    element.click();
    BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
    ImageIO.write(image, "png", new File("c:\\localdev\\bla.png"));
    driver.switchTo().alert().accept();
}