คำตอบทั้งหมดข้างต้นถูกต้องต่อไปนี้คือการดำน้ำลึกเข้าไปในปัญหาและแนวทางแก้ไข
ตัวสร้างไดร์เวอร์ในซีลีเนียมเป็นต้น
WebDriver driver = new ChromeDriver();
ค้นหาไฟล์ปฏิบัติการที่เรียกใช้งานได้ในกรณีนี้ไดรเวอร์ของ Chrome ค้นหาไฟล์ปฏิบัติการที่เรียกใช้งานไดรฟ์เวอร์โครเมี่ยมได้ในกรณีที่บริการไม่สามารถค้นหาไฟล์ที่ปฏิบัติการได้ข้อยกเว้นจะถูกส่งออกไป
นี่คือที่ข้อยกเว้นมาจาก (หมายเหตุวิธีการตรวจสอบสถานะ)
/**
*
* @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;
}
ต่อไปนี้เป็นวิธีตรวจสอบสถานะซึ่งจะทำให้เกิดข้อยกเว้น
/**
* 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));
}
}
การแก้ไข : ตั้งค่าคุณสมบัติระบบก่อนสร้างวัตถุไดรเวอร์ดังนี้
System.setProperty("webdriver.gecko.driver", "path/to/chromedriver.exe");
WebDriver driver = new ChromeDriver();
ต่อไปนี้เป็นข้อมูลโค้ด (สำหรับ chrome และ firefox) ที่บริการไดรเวอร์ค้นหาโปรแกรมควบคุมที่ปฏิบัติการได้:
โครเมียม:
@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");
}
โดยที่ CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" และ GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"
ที่คล้ายกันเป็นกรณีสำหรับเบราว์เซอร์อื่น ๆ ต่อไปนี้เป็นภาพรวมของรายการของการใช้งานเบราว์เซอร์ที่มีอยู่