当我修改代码以使用RemoteWebDriver和ChromeDriver运行时,我得到: 例外:驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置;
法典:
File file = new File("C:/WebDrivers/chromedriver.exe");
System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", Path_FileDownload);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
driver = new RemoteWebDriver(new URL("http://192.168.224.160:4444/wd/hub"), cap);
//driver = new ChromeDriver(cap);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
该文件存在于我正在运行它的 PC 上。 当我切换到ChromeDriver而不是远程WebDriver时,工作正常。
行
File file = new File("C:/WebDrivers/chromedriver.exe");
System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());
仅在使用ChromeDriver
时工作。 我将这种模式称为local
模式,即运行测试用例的 JVM 也会从浏览器衍生出来。
当您使用RemoteWebDriver
时,您是在remote
模式下工作,因为剥离测试用例的 JVM 与另一个 JVM(硒节点(通信以剥离浏览器。
当您使用RemoteWebDriver
时,您正在尝试通过集线器连接到作为节点运行的其他 JVM。
对于此用例,您需要在运行节点的计算机中执行以下操作之一:
- 将
C:WebDrivers
添加到PATH
变量中。确保通过打开新的命令提示符并运行echo %PATH%
来确认其正确添加。您应该在命令输出中看到C:WebDrivers
。(或( - 通过将
webdriver.chrome.driver
添加为 JVM 参数来启动节点。例如,像这样的东西:java -Dwebdriver.chrome.driver=C:WebDriverschromedriver.exe -jar selenium-server-standalone-2.53.1.jar -role node
路径的开头有两个斜杠:"C://WebDrivers" + "/chromedriver.exe"
应该"C:/WebDrivers" + "/chromedriver.exe"
Java 文件路径使用"/"来分隔目录和文件,与基于 UNIX 的系统相同。
ChromeOptions options = new ChromeOptions();
options.setBinary("Chrome_Binary/chrome.exe");
options.addArguments("--start-fullscreen");
System.setProperty("webdriver.chrome.driver", "Drivers/Chrome/chromedriver.exe");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, options);