我试图使用Java + Maven项目在VSTS上运行一些chromedriver测试。由于我将使用Chrome扩展程序,因此我无法运行无头Chrome,因为它不受支持。我知道默认情况下,Chrome并未安装在" Hosted 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:\一个\ 1 \ S \ install_chrome_win.ps1' 2017-11-06T01:23:23.6299793Z 启动过程:由于错误,此命令无法运行:此 操作需要一个交互式窗口站。 2017-11-06T01:23:23.6299793Z在D:\ a \ 1 \ s \ install_chrome_win.ps1:1 char:169 2017-11-06T01:23:23.6299793Z + ... $ Installer;开始处理 -FilePath $ Path \ $ Installer -Args" / silent / ... 2017-11-06T01:23:23.6299793Z +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ 2017-11-06T01:23:23.6299793Z +类别信息: InvalidOperation :( :) [Start-Process],InvalidOperationException 2017-11-06T01:23:23.6299793Z + FullyQualifiedErrorId: 出现InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand 2017-11-06T01:23:23.6309786Z 2017-11-06T01:23:23.6559779Z[section]整理:PowerShell脚本
虽然我已经指定了"沉默"和#34;安装"选项似乎仍然需要某种交互式输入。 我知道有一个在线.NET教程允许运行chrome测试,但我不能使用它,因为我有一个Java + Maven项目。
我的问题是: 1.是否可以获得"托管VS2017" VM运行Java selenium chromedriver" non-headless"测试? 2.为了使上述powershell脚本有效,我还需要做些哪些配置?我应该使用更好的脚本吗?
答案 0 :(得分:1)
您可以在具有服务模式的代理上运行Java无头chrome selenium测试,但是在托管代理上未安装Chrome,您无法在托管代理上安装它。
因此,我建议您可以在安装了Chrome的情况下设置私有构建代理,并在该代理上运行Java Selenium。
无头硒测试的简单代码:
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();
另一方面是关于Install headless chrome on hosted build servers的用户发票。
答案 1 :(得分:1)
托管构建代理预先安装了Selenium功能。您可以通过访问环境变量来获取可执行文件的路径,而不是执行安装程序。
来自Microsoft:
使用托管代理时,应使用托管代理上预安装的Selenium Web驱动程序,因为它们与托管代理映像上安装的浏览器版本兼容。可以从名为
IEWebDriver
(Internet Explorer),ChromeWebDriver
(Google Chrome)和GeckoWebDriver
(Firefox)的环境变量中获取这些驱动程序的文件路径。例如,driver = new ChromeDriver(Environment.GetEnvironmentVariable("ChromeWebDriver"));