无法在Selenium WebDriver中截屏

时间:2019-12-28 16:41:51

标签: selenium selenium-webdriver screenshot

我正在获取此屏幕的屏幕截图:

enter image description here

但是每次都会给我以下异常:

  

OpenQA.Selenium.WebDriverException:到远程的HTTP请求   用于URL的WebDriver服务器   http://localhost:49644/session/bc1237c6e7484d4c9686555254d3ec70/screenshot   60秒后超时。 ---> System.Net.WebException:请求   已中止:操作已超时。在   System.Net.HttpWebRequest.GetResponse()在   OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo   requestInfo)-内部异常堆栈跟踪的结尾-在   OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo   requestInfo)   OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command   commandToExecute)   OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command   commandToExecute)   OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串   driverCommandToExecute,Dictionary的2个参数)位于   OpenQA.Selenium.Remote.RemoteWebDriver.GetScreenshot()位于   specflowPjt.Hooks.TakeScreenshot()

我在硒的AddScreenshot()方法中遇到上述异常。

我使用的代码在任何地方都可以正常工作,但是仅在此位置提供例外。可能有人请告诉我这个背后的可能原因,最后是如何截取此屏幕的屏幕截图。

很少有指针可以帮助您解决此问题:

  1. 我要捕获的屏幕处于加载状态。 (我们可以捕获处于加载状态的屏幕吗?)

  2. 我的网站非常慢。

  3. 我正在远程计算机上工作。

任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:0)

可能的原因在-

  
      
  1. 我正在远程计算机上工作。
  2.   

我建议编写您自己的屏幕截图方法或采用以下方法:

 public void make_screenshot(String filename){

        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
       try {
        FileUtils.copyFile(scrFile, new File("test-output\\" +filename +".png").getAbsoluteFile());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

也许这会起作用,您会发现它很有帮助。

答案 1 :(得分:0)

  

远程机器-在远程机器上测试硒时,我们遇到了同样的困难

关于截图问题。通常必须执行三个步骤:

第1步:

将Web驱动程序对象转换为TakeScreenshot

TakesScreenshot scrShot =((TakesScreenshot)webdriver);

第二步:

调用getScreenshotAs方法创建图像文件

File SrcFile=scrShot.getScreenshotAs(OutputType.FILE);

第3步:

将文件复制到干燥的位置:

有关更多信息,请参见链接:How to take Screenshot - Guru99

这里已经有一个讨论:How to take screenshots

但是最好在这里插入代码。不仅是错误消息。因为从这一点来看,也许您还应该插入一个等待命令(请参阅:ToolsQA),因为您的错误消息是说60秒后超时……

希望链接对您有帮助。测试愉快!