【问题标题】:How to Take screenshot using Robot Framework in selenium webdriver如何在 selenium webdriver 中使用 Robot Framework 截屏
【发布时间】:2017-01-31 05:06:44
【问题描述】:

我正在使用 selenium 在 java 中开发一个自动化项目。当出现故障时,需要对网页视图进行截图。使用了TakesScreenshot,它在 chrome-driverphantomjs-driver 中都可以正常工作。

但是当出现警告框时,这会失败。经过一番研究,我了解到如果存在警报,Selenium 无法截取屏幕截图。必须首先处理警报。我可以使用java.awt.Robot,在这种情况下,我的屏幕截图中需要警告框。

但是如果使用 phantomjs-driver 或者如果 chrome 正在最小化运行,Robot 会截取我的屏幕截图并且不会获得网络视图。但我需要带有警报框的屏幕截图(代表失败情况)。

这个问题还有其他解决方案吗?

【问题讨论】:

  • 是否有任何特定的依赖性使您可以在最小化窗口中运行它?因为它没有被最小化机器人应该给你所需要的。
  • 包括“最小化”,因为如果我在同一个系统中做一些其他工作,而自动化过程正在最小化的浏览器中运行。无论如何,如果这将使用 phantomjs,Robot 不会给出必要的图像吗?
  • 机器人截图就像点击键盘上的 prtscrn 按钮一样好。所以如果它捕获了屏幕上可见的所有内容。只要看看你是否对活动进行计时,以便窗口在警报框出现时最大化出现..
  • 好的。这意味着,如果使用phantomjs 驱动程序,则无法获取屏幕截图?在这种情况下,请提出替代解决方案。我找不到任何谷歌搜索。
  • 如果是 web 自动化.. 你可以使用 Selenium webdriver 自动化 web 部件,截图部分可以在 java 的 Robot Class 中轻松完成。这里的 RobotFramework 是指 Java 中的 Robot 类还是基于 python 的 RobotFramework?

标签: java selenium selenium-webdriver phantomjs


【解决方案1】:

如果您真的想通过警报捕获屏幕,那么有一种方法。将用于截屏的代码部分放在 try-catch 块中。如果发现任何警报,它将抛出异常并在 catch 块中处理它。

代码sn-p:

Alert alert = null;

    try {
        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(scrFile, new File("screenshot.png"));
    } catch (Exception e) {
        alert = driver.switchTo().alert();
        if(e.getMessage().contains("unexpected alert open:")){
            //before taking screenshot, you may wait for some moment to be properly visible
            try {
                 BufferedImage screencapture = new Robot().createScreenCapture((new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())));

                     File file = new File("screenshot.jpg");
                     ImageIO.write(screencapture, "png", file);
            } catch (AWTException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }

    alert.accept(); //or you can use dismiss();

注意:要使用机器人截屏,您的窗口必须可见。

【讨论】:

  • "要使用机器人截屏,您的窗口必须可见"。如果我使用phantomjs webdriver。机器人帮不上忙。
猜你喜欢
  • 1970-01-01
  • 2021-07-05
  • 2011-03-26
  • 2014-04-28
  • 2020-02-24
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
相关资源
最近更新 更多