ChromeDriver 使用入门

本页记录了如何开始使用 ChromeDriver 来测试您的网站: 桌面 (Windows/Mac/Linux)。您还可以阅读 Android 使用入门ChromeOS 使用入门

设置

ChromeDriver 是 Selenium WebDriver 用于控制 Chrome 的独立可执行文件。此扩展程序由 Chromium 团队在 WebDriver 贡献者的帮助下进行维护。如果您不熟悉 Selenium WebDriver,则应访问 Selenium 网站

请按以下步骤设置测试,以便与 ChromeDriver 一起运行:

  • 确保 Chromium/Google Chrome 安装在可识别的位置 <ph type="x-smartling-placeholder">
  • 在本网站的下载部分,下载适用于您平台的 ChromeDriver 二进制文件
  • 帮助 WebDriver 找到已下载的 ChromeDriver 可执行文件

只要执行下列任一步骤,就能解决问题:

  1. 将 ChromeDriver 位置包含在 PATH 环境变量中
  2. (仅限 Java)使用 webdriver.chrome.driver 系统属性指定其位置(参见下面的示例)
  3. (仅限 Python)在实例化 webdriver.Chrome 时包含 ChromeDriver 的路径(参见下面的示例)

示例测试

Java:

import org.openqa.selenium.*; import org.openqa.selenium.chrome.*; import org.junit.Test; public class GettingStarted {    @Test    public void testGoogleSearch() throws InterruptedException {   // Optional. If not specified, WebDriver searches the PATH for chromedriver.   // System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");   // WebDriver driver = new ChromeDriver();   driver.get("http://www.google.com/");    Thread.sleep(5000);  // Let the user actually see something!   WebElement searchBox = driver.findElement(By.name("q"));   searchBox.sendKeys("ChromeDriver");   searchBox.submit();    Thread.sleep(5000);  // Let the user actually see something!   driver.quit();    } } 

Python:

import time from selenium import webdriver  driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path. driver.get('http://www.google.com/'); time.sleep(5) # Let the user actually see something! search_box = driver.find_element_by_name('q') search_box.send_keys('ChromeDriver') search_box.submit() time.sleep(5) # Let the user actually see something! driver.quit() 

控制 ChromeDriver 的生命周期

ChromeDriver 类在创建时启动 ChromeDriver 服务器进程,并在调用 quit 时终止它。对于大型测试套件(每个测试都创建一个 ChromeDriver 实例),这可能会浪费大量时间。您可以通过以下两种方式进行补救:

  1. 使用 ChromeDriverService。此功能适用于大多数语言,并且可让您自行启动或停止 ChromeDriver 服务器。请参见此处的 Java 示例(使用 JUnit 4):
import java.io.*; import org.junit.*; import org.openqa.selenium.*; import org.openqa.selenium.chrome.*; import org.openqa.selenium.remote.*; public class GettingStartedWithService {   private static ChromeDriverService service;   private WebDriver driver;   @BeforeClass   public static void createAndStartService() throws IOException {       service = new ChromeDriverService.Builder()               .usingDriverExecutable(new File("/path/to/chromedriver"))               .usingAnyFreePort()               .build();       service.start();   }      @AfterClass      public static void stopService() {     service.stop();   }    @Before      public void createDriver() {     driver = new RemoteWebDriver(service.getUrl(), new ChromeOptions());   }    @After   public void quitDriver() {     driver.quit();   }    @Test      public void testGoogleSearch() {     driver.get("http://www.google.com");     // rest of the test...   } } 

Python:

import time from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service('/path/to/chromedriver') service.start() driver = webdriver.Remote(service.service_url) driver.get('http://www.google.com/'); time.sleep(5) # Let the user actually see something! driver.quit() 
  1. 请先单独启动 ChromeDriver 服务器,然后再运行测试,然后使用远程 WebDriver 连接到该服务器。

航站楼:

$ ./chromedriver Starting ChromeDriver 76.0.3809.68 (...) on port 9515 ... 

Java:

import java.net.*; import org.openqa.selenium.*; import org.openqa.selenium.chrome.*; import org.openqa.selenium.remote.*;    public class GettingStartedRemote {    public static void main(String[] args) throws MalformedURLException {     WebDriver driver = new RemoteWebDriver(         new URL("http://127.0.0.1:9515"),         new ChromeOptions());     driver.get("http://www.google.com");     driver.quit();   } }