Selenium

Selenium 的组成:

  1. WebDriver 对网站进行自动化操作,模拟人类行为
    • WebDriver 的工作模式:WebDriver — Driver — 浏览器
    • Driver 是指:ChromeDriver, GeckoDriver (Firefox) 等
  2. Grid 跨平台测试

用 Python 安装 Selenium:

$ pip install selenium

注意,运行 Selenium 之前,先要安装浏览器(Chrome)和浏览器驱动(ChromeDriver)程序。

示例代码

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--headless')

browser = webdriver.Chrome(
    executable_path = "/usr/lib64/chromium-browser/chromedriver", 
    options = options, 
    service_log_path='/tmp/ch.txt')
browser.get('http://www.baidu.com/')
print(browser.title)

代码分析

一,ChromeDriver 程序的位置:

$ whereis chromedriver
chromedriver: /usr/bin/chromedriver /www/42as/pythonenv/bin/chromedriver

/usr/bin/chromedriver 是个软连接,指向 /usr/lib64/chromium-browser/chromedriver — 代码里直接用的这个绝对路径,且其权限是普通用户 — 因此不需要用 --no-sandbox 选项。

二,监听端口:ChromeDriver 默认在 9515 端口监听

三,通过 $ chromedriver --help 命令查看使用帮助:

  1. --disable-dev-shm-usage 使用此参数可避免使用 /dev/shm 共享内存
  2. --log-level 的合法取值为 ALL, DEBUG, INFO, WARNING, SEVERE, OFF

四,如果有 DevToolsActivePort 错误,可能是没有安装 Chrome,用 yum 安装即可。

相关的软件和概念

Mock browsers
模拟浏览器。
HtmlUnit
一个 Java 无 GUI 浏览器。
PhantomJS
基于 Webkit 的 headless 浏览器。自 2017 年 8 月以来就不再更新,缘故是 Google 发布了 headless 版本的 Chrome。