【问题标题】:Selenium InternetExplorerDriver does not take screenshot with MVC web applicationSelenium InternetExplorerDriver 不使用 MVC Web 应用程序截取屏幕截图
【发布时间】:2018-02-05 11:33:12
【问题描述】:

我正在使用 selenium 网络驱动程序 3.4.0。我已下载 IEDriver.exe 并复制到 bin 文件夹。我有一个 MVC 应用程序,它将为给定的链接截取屏幕截图。该链接可以是任何网站的任何内容。我们需要为该网页截取屏幕截图并将其存储到 PDF 中。 现在,我使用 C# 创建了控制台应用程序并添加了 WebDriver.dll。调用控制台应用程序时,该应用程序工作正常。已截屏。

当从 MVC Web 应用程序调用相同的代码时,它会截取网页的屏幕截图,但它是黑色的。这有什么原因吗?

var options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;

var driver = new InternetExplorerDriver(options);

driver.Manage().Window.Maximize();

driver.Navigate().GoToUrl("URL TO BE BROWSED");

var screenshot = ((ITakesScreenshot)driver).GetScreenshot();   

screenshot.SaveAsFile("Test.png", ScreenshotImageFormat.Png);
driver.Quit();

【问题讨论】:

  • 这条评论有帮助吗? stackoverflow.com/questions/17347451/…(见STA部分)
  • 这在万一情况下不起作用。我们已经尝试过 WebBrowser 选项。我猜它不允许您指定代理详细信息。
  • 通常,浏览器会将重新渲染的 PDF 卸载到 adobe 控件,而不是浏览器本身。如果您有 pdf,为什么不保存整个 pdf 而不是尝试截屏。
  • 我们需要获取多个网页的截图,然后从图像中读取流(我们不会在服务器上存储任何内容。我们只会读取流)并将其添加到 PDF 中。

标签: c# asp.net-mvc selenium


【解决方案1】:

它会打开网页吗?如果没有,请确保您拥有正确的 IEDriverServer.exe。此外,如果您从控制器内部调用 Selenium,则需要映射输出,例如 screenshot.SaveAsFile(Server.MapPath("Test.png"), ScreenshotImageFormat.Png);,但这意味着您的 MVC Web 应用程序正在您的服务器上打开一个浏览器窗口并访问其他网站;我不知道这是不是你想要的。

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2013-11-26
    • 2017-12-25
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多