1. 程式人生 > >一次失敗的Selenium chromedriver切換

一次失敗的Selenium chromedriver切換

背景

Selenium webdriver一直使用Firefox作為瀏覽器來跑webtest, 但是最近發現ff有時會報超時的錯誤,於是想到使用chromedriver來提升穩定性。本想只把.firefox() 換成 .chrome() 這麼簡單的事情,結果卻引出很多問題。

做法

根據官方文件

  1. 下載chromedriver binary
  2. 放到Linux 預設路徑
  3. 走起…
  4. 問題來了

問題

Selenium 報無法啟動chrome, 報錯

selenium.common.exceptions.WebDriverException: Message: chrome not reachable
  (Driver info: chromedriver=2.21
.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a),platform=Linux 3.0.36-gentoo x86_64)

排錯

  1. 用本機來跑, 排除Selenium Grid的因素
  2. 更新Selenium和webdriver 到最新
  3. 新增 –no-sandbox 引數
  4. 還是跪了,用最小的測試依賴來跑,並生成chromedriver log,把問題丟給google chrome 團隊了
    test_chrom_min.py
from selenium import webdriver

service_log_path = 'chromedriver.log'
service_args = ['--verbose', '--no-sandbox'] driver = webdriver.Chrome('/usr/bin/chromedriver', service_args=service_args, service_log_path=service_log_path) driver.get('http://www.google.com/xhtml') driver.quit()

後續