我在一个测试盒(Windows 7 64位)上运行selenium-server-standalone-2.17.0(适用于IE和Firefox)和ChromeDriver 18.0.1022.0(独立版),我用它来运行Java硒测试。
出于某种原因,当我对ChromeDriver运行测试时,当它第一次遇到意外的Alert框时,它会无限地阻止,ChromeDrive日志显示
WARNING: Executing: executeScript
我使用指南配置了ChromeDriverhttp://code.google.com/p/selenium/wiki/ChromeDriver并用设置所有驱动程序的超时
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
更新:我想出了如何用以干净的方式初始化远程ChromeDriver
URL url = new URL("http://192.168.1.15:4444/wd/hub");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Webdriver chromeDriver = new RemoteWebDriver(url, capabilities);
这在URL指向在子进程中运行chromedriver的selenium服务器的情况下运行得最好。你可以像这样启动selenium服务器来运行ChromeDriver:
java -jar C:selenium-server.jar -Dwebdriver.chrome.driver=C:pathtochromedriver.exe
我仍然有同样的问题,Chrome卡在意外的警报框中,但硒日志给了我更多的信息:
INFO - Done: /session/1328623219287/element/253/click
INFO - Executing: [execute script: return !!document['readyState'];, []] at URL: /session/1328623219287/execute)
仍然不知道是什么原因造成的。。。有人能帮忙吗?
这就是我初始化ChromeDriver:的方法
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY,
"PathToWhereChromeDriverIsAvailable");
ChromeDriverService service = ChromeDriverService.createDefaultService();
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
ChromeDriver cd = new ChromeDriver(service, options);
对于Alert()
,我只是简单的猜测——可能它在执行脚本时挂起了——所以基本上您不是在等待页面加载,而是在等待脚本结束执行。然而,我对此没有解决方案。。。