所以最近我升级到Selenium 3.5.0和Chromedriver 2.32。
每次我运行程序(无论如何在升级之前都会停止工作)时,我都会收到此错误:
Timed out waiting for driver server to start.
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'XXXX', ip: '192.168.171.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: driver.version: ChromeDriver
它的实现方式是单击GUI上的一个按钮,该按钮将启动一个线程,该线程启动包含WebDriver对象的类:
try {
driver = DriverFactory.createDriver( Browser.CHROME, run_type );
if ( run_type == Type.WEB )
webSetup();
else
mobileSetup();
}
...
finally {
if ( driver != null )
driver.quit();
}
createDriver函数调用createChromeDriver,它很简单:
private static ChromeDriver createChromeDriver(Run.Type t)
{
System.setProperty( "webdriver.chrome.driver", Properties.server() );
System.setProperty( "webdriver.chrome.driver.host", "127.0.0.1" );
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
if ( t == Type.MOBILE )
{
Map<String, String> mobileEmulation = new HashMap<String, String>();
mobileEmulation.put("deviceName", "Apple iPhone 6");
options.setExperimentalOption("mobileEmulation", mobileEmulation);
}
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
return new ChromeDriver(capabilities);
}
server()直接指向我确定的chromedriver.exe。
我什至尝试在https://www.guru99.com/selenium-with-htmlunit-driver-phantomjs.html上运行PhantomJS示例,只是为了得到相同的错误,但是驱动程序信息指向PhantomJS(如图)。
最奇怪的是chromedriver.exe进程实际上是在后台启动的,如果我尝试多次运行该程序,将会产生多个chromedriver进程。
有任何想法吗?
最佳答案
升级时,我遇到了类似的问题。发现我的反病毒程序阻止了chromedriver可执行文件的运行,因为它是相当新的,并且反病毒软件在受信任的可执行文件的中央存储库中没有它。
尝试禁用防病毒软件(如果有)。