我正在获取此屏幕的屏幕截图:
但是每次都会给我以下异常:
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()方法中遇到上述异常。
我使用的代码在任何地方都可以正常工作,但是仅在此位置提供例外。可能有人请告诉我这个背后的可能原因,最后是如何截取此屏幕的屏幕截图。
很少有指针可以帮助您解决此问题:
我要捕获的屏幕处于加载状态。 (我们可以捕获处于加载状态的屏幕吗?)
我的网站非常慢。
我正在远程计算机上工作。
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
可能的原因在-
- 我正在远程计算机上工作。
我建议编写您自己的屏幕截图方法或采用以下方法:
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秒后超时……
希望链接对您有帮助。测试愉快!