我已经制作了一个应用程序,我在.Net中使用过selenium。在代码中,我做的是,使用chrome驱动程序,我在chrome中打开了一个url,其中页面包含webgl并拍摄了页面的快照。这工作正常,当我在visual studio中运行代码时,Chrome浏览器打开网页并完美呈现webgl页面并截取屏幕截图并保存到磁盘。
但是,当我将此代码包装在Windows服务中并从其他应用程序调用该服务时,浏览器窗口似乎不会打开,甚至所拍摄的快照也表示" Webgl不受支持" (如果浏览器不支持webgl,我已添加代码来显示此消息)。
我真的很困惑,因为代码在从visual studio运行时工作正常,webgl页面呈现正常,并且从windows服务调用时说不支持webgl。
我尝试使用管理员权限以及本地系统运行Windows服务,启用了与桌面选项的交互,但没有帮助。
有没有人知道,可能会发生什么?
这是代码
Logger.Log("Step 001");
DesiredCapabilities capabilities = new DesiredCapabilities();
Logger.Log("Step 002");
capabilities = DesiredCapabilities.HtmlUnitWithJavaScript();
Logger.Log("Step 003");
ChromeOptions options = new ChromeOptions();
Logger.Log("Step 004");
options.AddArguments("start-maximized", "no-default-browser-check", "--ignore-certificate-errors","--enable-webgl-image-chromium", "--ignore-gpu-blacklist", "--use-gl", "--no-sandbox", "--disable-web-security");
Logger.Log("Step 005");
capabilities.SetCapability(ChromeOptions.Capability, options);
Logger.Log("Step 006");
capabilities.SetCapability(CapabilityType.IsJavaScriptEnabled, true);
Logger.Log("Step 007");
capabilities.SetCapability(CapabilityType.AcceptSslCertificates, true);
Logger.Log("Step 008");
IWebDriver WebDriver = new ChromeDriver(options);
Logger.Log("Step 009");
WebDriver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
Logger.Log("Step 010");
Logger.Log("Navigating to Url");
Logger.Log("Step 011");
WebDriver.Navigate().GoToUrl("http://localhost:8088/index.html");
Logger.Log("Step 012");
Logger.Log("Navigating to Url Complete");
Logger.Log("Sleeping for 10 sec.");
System.Threading.Thread.Sleep(10000);
Logger.Log("Sleep complete");
Logger.Log("Taking screenshot");
Screenshot screenshot = ((ITakesScreenshot)WebDriver).GetScreenshot();
Logger.Log("Step 013");
screenshot.SaveAsFile("c:\\temp\\acd.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
Logger.Log("Step 014");
Logger.Log("Snapshot Complete");
Logger.Log("Webdriver quit");
WebDriver.Quit();