Java、Selenium、IntelliJ环境下webdriver.chrome.driver路径应设在哪里?
问题描述
我用Selenium IDE自动生成代码时遇到了WebDriver问题,编译器提示必须通过webdriver.chrome.driver系统属性设置驱动程序的路径,但明明已经设置了路径,怀疑是位置不对。之前手写基础Selenium代码都正常,唯独IDE生成的代码出问题,折腾2小时没解决,求修复方法和正确的设置位置。
生成的代码片段如下:
package org.example;// Generated by Selenium IDE import org.junit.Test; import org.junit.Before; import org.junit.After; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.Dimension; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.JavascriptExecutor; import java.util.*; public class StorwareTestTest { WebDriver driver; Map<String, Object> vars; JavascriptExecutor js; @Before public void setUp () { driver = new ChromeDriver(); js = (JavascriptExecutor) driver; vars = new HashMap<String, Object>(); } @After public void tearDown () { driver.quit(); } @Test public void storware () { System.setProperty("webdriver.chrome.driver", "C:/Users/wrost/Downloads/chromedriver_win32/chromedriver.exe"); driver.get("https://storware.eu/"); (...) }
修复方案
问题出在系统属性设置的时机太晚:你在@Test方法里才设置webdriver.chrome.driver,但@Before方法已经提前初始化了ChromeDriver实例,这时候属性还没生效,所以报错。
正确的做法是把System.setProperty移到@Before方法里,并且要放在创建ChromeDriver实例的前面,修改后的setUp方法如下:
@Before public void setUp () { // 先设置驱动路径,再初始化WebDriver System.setProperty("webdriver.chrome.driver", "C:/Users/wrost/Downloads/chromedriver_win32/chromedriver.exe"); driver = new ChromeDriver(); js = (JavascriptExecutor) driver; vars = new HashMap<String, Object>(); }
同时删掉@Test方法里的那行System.setProperty,避免重复设置。
额外提示:如果你的Selenium版本是4.6及以上,完全可以不用手动设置驱动路径——Selenium内置的Selenium Manager会自动下载、匹配对应版本的ChromeDriver,直接移除所有System.setProperty代码即可,更省心。
内容的提问来源于stack exchange,提问作者Weronika
相关产品推荐
相关产品推荐

