Tất cả các câu trả lời ở trên là chính xác, sau đây là một chút đi sâu vào vấn đề và giải pháp.
Trình xây dựng trình điều khiển trong selenium chẳng hạn
WebDriver driver = new ChromeDriver();
tìm kiếm trình điều khiển thực thi, trong trường hợp này trình điều khiển chrome tìm kiếm trình điều khiển chrome thực thi, trong trường hợp dịch vụ không thể tìm thấy thực thi, ngoại lệ được ném
đây là trường hợp ngoại lệ xuất phát (lưu ý phương thức kiểm tra trạng thái)
/**
*
* @param exeName Name of the executable file to look for in PATH
* @param exeProperty Name of a system property that specifies the path to the executable file
* @param exeDocs The link to the driver documentation page
* @param exeDownload The link to the driver download page
*
* @return The driver executable as a {@link File} object
* @throws IllegalStateException If the executable not found or cannot be executed
*/
protected static File findExecutable(
String exeName,
String exeProperty,
String exeDocs,
String exeDownload) {
String defaultPath = new ExecutableFinder().find(exeName);
String exePath = System.getProperty(exeProperty, defaultPath);
checkState(exePath != null,
"The path to the driver executable must be set by the %s system property;"
+ " for more information, see %s. "
+ "The latest version can be downloaded from %s",
exeProperty, exeDocs, exeDownload);
File exe = new File(exePath);
checkExecutable(exe);
return exe;
}
Sau đây là phương pháp kiểm tra trạng thái ném ngoại lệ
/**
* Ensures the truth of an expression involving the state of the calling instance, but not
* involving any parameters to the calling method.
*
* <p>See {@link #checkState(boolean, String, Object...)} for details.
*/
public static void checkState(
boolean b,
@Nullable String errorMessageTemplate,
@Nullable Object p1,
@Nullable Object p2,
@Nullable Object p3) {
if (!b) {
throw new IllegalStateException(format(errorMessageTemplate, p1, p2, p3));
}
}
GIẢI PHÁP : đặt thuộc tính hệ thống trước khi tạo đối tượng trình điều khiển như sau
System.setProperty("webdriver.gecko.driver", "path/to/chromedriver.exe");
WebDriver driver = new ChromeDriver();
sau đây là đoạn mã (cho chrome và firefox) nơi dịch vụ trình điều khiển tìm kiếm trình điều khiển thực thi:
Trình duyệt Chrome:
@Override
protected File findDefaultExecutable() {
return findExecutable("chromedriver", CHROME_DRIVER_EXE_PROPERTY,
"https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver",
"http://chromedriver.storage.googleapis.com/index.html");
}
FireFox:
@Override
protected File findDefaultExecutable() {
return findExecutable(
"geckodriver", GECKO_DRIVER_EXE_PROPERTY,
"https://github.com/mozilla/geckodriver",
"https://github.com/mozilla/geckodriver/releases");
}
trong đó CHROME_DRIVER_EXE_PROPERTY = "webdo.chrome.driver" và GECKO_DRIVER_EXE_PROPERTY = "webdo.gecko.driver"
tương tự là trường hợp của các trình duyệt khác, sau đây là ảnh chụp nhanh danh sách triển khai trình duyệt có sẵn