i have made application in have used selenium in .net. in code, did was, using chrome driver, opened url in chrome, page contains webgl , took snapshot of page. works fine, when run code in visual studio, chrome browser opens webpage , renders webgl page , takes screenshot , saves disk.
however, when wrap code in windows service , invoke service other application , browser window not seem open , snapshot taken says "webgl not supported" (i have added code show message if webgl not supported browser).
i confused , code works fine when running visual studio, webgl page renders ok, , when invoked windows service say's webgl not supported.
i tried running windows service administrator rights local system, interact desktop option enabled, didnt help.
has idea, might happening?
here code
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 url"); logger.log("step 011"); webdriver.navigate().gotourl("http://localhost:8088/index.html"); logger.log("step 012"); logger.log("navigating url complete"); logger.log("sleeping 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();
you can try using phantomjs. provide headless browser chrome.