WebDriver
WebDriver 是一个远程控制接口,能够检测和控制用户代理。它提供了一个平台无关、语言中立的通信协议,用于跨进程的程序远程指令控制 Web 浏览器的行为。
能够编写可在不同平台上的多种浏览器中互换运行的指令集,对于为用户提供一致的体验至关重要。随着 Web 平台新一轮的发展、设备多样性的增加以及对技术之间真正互操作性需求的增长,WebDriver 为跨浏览器测试提供了工具。
提供了一组接口,用于发现和操作 Web 文档中的 DOM 元素,以及控制用户代理的行为。其主要目的是允许 Web 作者编写测试,以从一个独立的控制进程自动控制用户代理,但也可以以一种允许浏览器内脚本控制一个(可能是独立的)浏览器的方式使用。
用法
那么 WebDriver 能做什么,它看起来是怎样的呢?由于 WebDriver 与编程语言无关,这个问题的答案取决于你使用的 WebDriver 客户端和所选的语言。
但是,使用一个流行的 Python 客户端,你与 WebDriver 的交互可能看起来像这样
python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
with webdriver.Firefox() as driver:
driver.get("https://google.com/ncr")
wait = WebDriverWait(driver, 10)
driver.find_element(By.NAME, "q").send_keys(f"cheese{Keys.RETURN}")
wait.until(presence_of_element_located((By.XPATH, '//*[@id="rcnt"]')))
results = driver.find_elements(By.XPATH, "//a[@href]")
for i, elem in enumerate(results):
print(f'#{i} {elem.text} ({elem.get_attribute("href")})')
这可能会产生类似这样的输出
#1 Cheese - Wikipedia (https://en.wikipedia.org/wiki/Cheese)
参考
的WebDriver 参考提供了关于 WebDriver API 的详细信息,包括可用的命令、功能和错误。