จะใช้งานกรณีทดสอบ Selenium WebDriver ใน Chrome ได้อย่างไร


160

ฉันลองสิ่งนี้

WebDriver driver = new ChromeDriver();

แต่ฉันได้รับข้อผิดพลาดเป็น

การทดสอบล้มเหลว: setUp (com.TEST): พา ธ ไปยังโปรแกรมควบคุมที่ทำงานได้จะต้องตั้งค่าโดยคุณสมบัติระบบ webdriver.chrome.driver; สำหรับข้อมูลเพิ่มเติมโปรดดูรหัสที่นี่ สามารถดาวน์โหลดเวอร์ชันล่าสุดได้จากลิงก์

ฉันจะทำให้ Chrome ทดสอบกรณีทดสอบ Selenium-WebDriver ได้อย่างไร


มันจะมีประโยชน์ถ้าคุณบอกได้ว่าคุณได้ดาวน์โหลดไดรเวอร์โครเมียมซีลีเนียมจากcode.google.com/p/chromedriver/downloads/listและเพิ่มไปยังไลบรารี่ใน eclipse ภายใต้ "Add Jars ภายนอก" ก่อนเรียกใช้ selenium-java ของคุณหรือไม่ รหัส.
Hemanth

คำตอบ:


252

คุณต้องดาวน์โหลดไดรเวอร์ที่ใช้งานได้จาก: ดาวน์โหลด ChromeDriver

จากนั้นทั้งหมดที่คุณต้องทำคือใช้สิ่งต่อไปนี้ก่อนที่จะสร้างวัตถุไดรเวอร์ (แสดงแล้วในลำดับที่ถูกต้อง):

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();

นี้ถูกสกัดจากคู่มือที่มีประโยชน์มากที่สุดจากเอกสาร ChromeDriver


@aimbire: เฮ้ฉันประสบปัญหาเดียวกัน ฉันทำสิ่งเดียวกันที่คุณแนะนำ แต่ได้รับข้อผิดพลาดนี้ "java.lang.IllegalStateException: โปรแกรมควบคุมที่ไม่มีอยู่: D: \ selenimPRJarg1 \ chromedriver.exe" ฉันทำอะไรบางอย่างผิดพลาด "?
kTiwari

คุณต้องดาวน์โหลด Selenium Standalone Server จากที่นี่docs.seleniumhq.org/downloadที่นี่และเพิ่มไฟล์ jar เป็นการอ้างอิงกับโปรเจ็กต์ Java ของคุณ
dikirill

4
คุณใช้ / พิมพ์นี่ที่ไหน System.setProperty ("webdriver.chrome.driver", "/ path / to / chromedriver"); ไดรเวอร์ WebDriver = ใหม่ ChromeDriver ();
tijnn

1
ฉันสำรวจทุกคำตอบสำหรับคำถามนี้และมีเพียงคำตอบเดียวที่ใช้ได้กับฉัน (y)
puffles

ในขณะที่สิ่งนี้ถูกต้องทางเทคนิคคุณไม่ควรตั้งค่าตัวแปรสภาพแวดล้อมในรหัสให้เหมือนกับการเข้ารหัสเส้นทางในรหัสของคุณ ควรตั้งค่าตัวแปรสภาพแวดล้อมบนเครื่องที่คุณเรียกใช้รหัสเพื่อให้แต่ละเครื่องสามารถจัดเก็บไดรเวอร์ของ Chrome ได้ในตำแหน่งที่ไม่ซ้ำใคร
Ardesco

21

ดาวน์โหลดเวอร์ชั่นอัปเดตของไดรฟ์เวอร์โครเมี่ยมจากไดร์เวอร์ Chrome โปรดอ่านบันทึกประจำรุ่นด้วยที่นี่ หากอัปเดตเบราว์เซอร์ของ Chrome แล้วคุณต้องดาวน์โหลด chormedriver ใหม่จากลิงค์ด้านบนเพราะจะสามารถใช้เบราว์เซอร์เวอร์ชันใหม่ได้

 public class chrome 
 {

  public static void main(String[] args) {

       System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
       WebDriver driver = new ChromeDriver();


    driver.get("http://www.google.com");

  }

 }

3
ตอนนี้เป็นทางออกที่ยุ่งยาก ฉันขอแนะนำให้คุณเปลี่ยนสิ่งนี้ถ้ามันเป็นสิ่งที่คุณใช้ในปัจจุบัน
aimbire

1
ลิงค์ดาวน์โหลดล้าสมัยแล้ว
Gone Coding

รหัสนี้ไม่ทำงานใน Google Chrome เวอร์ชัน 69.0.3497.100 (รุ่นทางการ) (64 บิต) กรุณาแนะนำรหัสใหม่ จนถึงตอนนี้มันทำงานในรุ่นเก่าน้อยกว่า 65.0.0 รุ่น
Mitesh Thakery

18

คุณควรดาวน์โหลด chromeDriver ในโฟลเดอร์และเพิ่มโฟลเดอร์นี้ในตัวแปร PATH ของคุณ คุณจะต้องรีสตาร์ทคอนโซลเพื่อให้ใช้งานได้


8

หากคุณใช้ homebrew บน MacOS คุณสามารถใช้คำสั่ง:

(แก้ไข) :brew tap homebrew/cask && brew cask install chromedriver

มันควรจะทำงานได้ดีหลังจากนั้นโดยไม่มีการกำหนดค่าอื่น ๆ


2
brew tap homebrew/cask && brew cask install chromedriverโดยตอนนี้ก็คือ
luk2302

6

คุณต้องติดตั้งไดรเวอร์ของ Chrome คุณสามารถติดตั้งแพ็คเกจนี้ได้โดยใช้ nugget ดังที่แสดงด้านล่าง


1
นี่อาจเป็นหนึ่งในนั้น แต่เวอร์ชั่นของ NuGet นั้นเก่าเกินไป: 2.10.0 ลงวันที่ 13 ตุลาคม 2014
Tiago Freitas Leal

ล้าสมัยอีกครั้งในวันที่ 23 มีนาคม ไม่สามารถใช้กับ Chrome ล่าสุด
วิลเล็ม

6

คุณสามารถใช้รหัสด้านล่างเพื่อเรียกใช้กรณีทดสอบใน Chrome โดยใช้ Selenium web-driver:

import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class ChromeTest {

    /**
     * @param args
     * @throws InterruptedException
     * @throws IOException 
     */
    public static void main(String[] args) throws InterruptedException, IOException {
        // Telling the system where to find the Chrome driver
        System.setProperty(
                "webdriver.chrome.driver",
                "E:/chromedriver_win32/chromedriver.exe");

        WebDriver webDriver = new ChromeDriver();

        // Open google.com
        webDriver.navigate().to("http://www.google.com");

        String html = webDriver.getPageSource();

        // Printing result here.
        System.out.println(html);

        webDriver.close();
        webDriver.quit();
    }
}

5

ค้นหารุ่นล่าสุดของที่นี่chromedriver เมื่อดาวน์โหลดแล้วให้คลายซิปที่รูทของการติดตั้งไพ ธ อนของคุณเช่นC:/Program Files/Python-3.5นั้นแหละ คุณไม่จำเป็นต้องระบุเส้นทางที่ใดก็ได้และ / หรือเพิ่มchromedriverเส้นทางหรือสิ่งที่คุณชอบ ฉันเพิ่งทำมันในการติดตั้ง Python ที่สะอาดและใช้งานได้


4
คำแนะนำที่ไม่ถูกต้อง ... อย่าทำให้การติดตั้งหลามของคุณเป็นมลทิน
Corey Goldberg

OP ไม่เคยระบุ Python
Corey Goldberg

4

ดาวน์โหลดไดรเวอร์ Chrome รุ่นล่าสุดและใช้รหัสนี้:

System.setProperty("webdriver.chrome.driver", " path of chromedriver.exe");
WebDriver driver= new ChromeDriver();
driver.manage().window().maximize();
Thread.sleep(10000);
driver.get("http://stackoverflow.com");

1

บน Ubuntu คุณสามารถติดตั้งchromium-chromedriverแพ็คเกจได้ง่ายๆ:

apt install chromium-chromedriver

โปรดทราบว่าสิ่งนี้จะติดตั้งซีลีเนียมรุ่นที่ล้าสมัยด้วย ในการติดตั้งซีลีเนียมล่าสุด:

pip install selenium

0

คำตอบทั้งหมดข้างต้นถูกต้องต่อไปนี้คือการดำน้ำลึกเข้าไปในปัญหาและแนวทางแก้ไข

ตัวสร้างไดร์เวอร์ในซีลีเนียมเป็นต้น

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"

ที่คล้ายกันเป็นกรณีสำหรับเบราว์เซอร์อื่น ๆ ต่อไปนี้เป็นภาพรวมของรายการของการใช้งานเบราว์เซอร์ที่มีอยู่

ป้อนคำอธิบายรูปภาพที่นี่


0
To run Selenium WebDriver test cases in Chrome, follow these steps:


first of all set the property & chrome driver path

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
then initialize the Chrome Driver's object

WebDriver driver = new ChromeDriver();
then pass the url into get method of WebDriver

driver.get("http://www.google.com");

0

ฉันรวมเลขฐานสองลงในทรัพยากรโครงการของฉัน direcotry ดังนี้:

src\main\resources\chrome\chromedriver_win32.zip
src\main\resources\chrome\chromedriver_mac64.zip
src\main\resources\chrome\chromedriver_linux64.zip

รหัส:

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.SystemUtils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.*;
import java.nio.file.Files;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public WebDriver getWebDriver() throws IOException {
    File tempDir = Files.createTempDirectory("chromedriver").toFile();
    tempDir.deleteOnExit();
    File chromeDriverExecutable;

    final String zipResource;
    if (SystemUtils.IS_OS_WINDOWS) {
        zipResource = "chromedriver_win32.zip";
    } else if (SystemUtils.IS_OS_LINUX) {
        zipResource = "chromedriver_linux64.zip";
    } else if (SystemUtils.IS_OS_MAC) {
        zipResource = "chrome/chromedriver_mac64.zip";
    } else {
        throw new RuntimeException("Unsuppoerted OS");
    }

    try (InputStream is = getClass().getResourceAsStream("/chrome/" + zipResource)) {
        try (ZipInputStream zis = new ZipInputStream(is)) {
            ZipEntry entry;
            entry = zis.getNextEntry();
            chromeDriverExecutable = new File(tempDir, entry.getName());
            chromeDriverExecutable.deleteOnExit();
            try (OutputStream out = new FileOutputStream(chromeDriverExecutable)) {
                IOUtils.copy(zis, out);
            }
        }
    }

    System.setProperty("webdriver.chrome.driver", chromeDriverExecutable.getAbsolutePath());
    return new ChromeDriver();
}

-2

ดาวน์โหลด exe ของ Chromedriver และแยกไว้ในที่ตั้งโครงการปัจจุบัน ที่นี่ลิงก์ซึ่งเราสามารถดาวน์โหลด Chromedriver เวอร์ชันล่าสุดได้

https://sites.google.com/a/chromium.org/chromedriver/

นี่คือรหัสง่ายๆสำหรับเบราว์เซอร์เปิดตัวและนำทางไปยัง URL

System.setProperty("webdriver.chrome.driver", "path of chromedriver.exe");

WebDriver driver = new ChromeDriver();

driver.get("https://any_url.com");

ดาวน์โหลด Chromedriver และแตกไฟล์ สร้างโฟลเดอร์ในโครงการของคุณต่อไปแล้วตั้งชื่อเป็น Chromedriver และเก็บไฟล์. exe ไว้ในนั้น และใช้เส้นทางนี้ นี่คือตัวอย่างโค้ดแบบง่าย 'code' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); ไดรเวอร์ WebDriver = ใหม่ ChromeDriver (); driver.get (" google.co.in" ); WebElement searchbox = driver.findElement (By.name ("q")); searchbox.sendKeys ("บทเรียนซีลีเนียมวิดีโอที่ดีที่สุดฟรี"); searchbox.submit ();
vinay

โปรดพิจารณาการปรับปรุงคำตอบนี้ด้วยข้อมูลเพิ่มเติมแสดงความคิดเห็น vinay
Ricardo Souza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.