我试图使用Java + Maven项目在VSTS上运行一些chromedriver测试。因为我将使用Chrome扩展,所以我无法运行无头Chrome,因为它不受支持。我知道默认情况下Chrome不是安装在“宿主VS2017”VM上,所以我尝试通过下面的powershell脚本安装它:
$Path = $env:TEMP; $Installer = "chrome_installer.exe";
Invoke-WebRequest "http://dl.google.com/chrome/install/375.126/chrome_installer.exe" -OutFile $Path\$Installer;
Start-Process -FilePath $Path\$Installer -Args "/silent /install" -Verb RunAs -Wait;
Remove-Item $Path\$Installer但是,这会导致以下错误:
2017-11-06T01:23:18.4054541Z ##command。'd:\a\1\s\install_chrome_win.ps1‘2017-11-06T01:23:23.6299793Z启动进程:该命令由于错误而无法运行:此操作需要一个交互式窗口站。D:\a\1\s\install_chrome_win.ps1:1 char:169 2017-11-06T01:23:23.6299793Z +. $Installer;Start-Process -FilePath $Path\$Installer -Args "/silent /. 2017-11-06T01:23:23.6299793Z +[section]Finishing: PowerShell Script
虽然我已经指定了“静默”和“安装”选项,但似乎仍然需要某种交互输入。我知道有一个在线.NET教程,它允许运行chrome测试,但是我不能使用它,因为我有一个Java + Maven项目。
我的问题是: 1.是否有可能让“宿主VS2017”VM运行“无头”测试? 2.我需要做哪些额外的配置才能使上面的powershell脚本正常工作?有什么更好的脚本我应该用吗?
发布于 2018-03-16 22:34:10
托管的构建代理具有预先安装的Selenium功能。不必执行安装程序,您可以通过访问环境变量来获取可执行文件的路径,从而使用现有的浏览器。
来自微软
使用宿主代理时,应使用预先安装在托管代理上的Selenium web驱动程序,因为它们与宿主代理映像上安装的浏览器版本兼容。这些驱动程序的文件路径可以从环境变量
IEWebDriver(Internet )、ChromeWebDriver(Google )和GeckoWebDriver(火狐)中获得。例如, driver =新ChromeDriver(Environment.GetEnvironmentVariable("ChromeWebDriver"));
发布于 2017-11-07 05:57:44
您可以在具有服务模式的代理上运行Java无头铬硒测试,但是该铬没有安装在托管代理上,也不能安装在托管代理上。
因此,我建议您可以安装安装了Chrome的私有构建代理,并在该代理上运行Java。
无头硒测试的简单代码:
System.setProperty("webdriver.chrome.driver", "[chromedriver.exe path]");
ChromeOptions options = new ChromeOptions();
options.addArguments("headless");
//options.setBinary("C:/Program Files/Google/Chrome/Application/chrome.exe");
ChromeDriver driver=new ChromeDriver(options);
driver.get("http://www.google.com");
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys("ChromeDriver");
searchBox.submit();
driver.quit();另一方面,一个关于在托管的生成服务器上安装无头铬的用户之声。
https://stackoverflow.com/questions/47132089
复制相似问题