Selenium对PhantomJS的支持

Zss 发表于:

Selenium+PhantomJS提示:Selenium support for PhantomJS has been deprecated

这个是因为selenium在3.4.3版本之后放弃了PhantomJS的支持,使用无头的谷歌和火狐来替代,但是我觉得还是没有这个方便,webdriver的版本太多对应的每个谷歌浏览器的版本也不一样,在不同的环境下得配套,但是PhantomJS很方便就一个exe的事情,也不需要安装,其实感觉selenium+PhantomJS还是很好用的,不过有些情况下还是没有谷歌火狐更好,比如一些对css选择器选择的页面元素click的动作完全无效;还有有些wait for界面元素(不是固定时间)的动作会timeout。

1.在使用pHantomjs失败但是谷歌正常时,debug方法是:每做一步都用page.render()截图一下,看看到底这个元素有没被PhantomJS渲染出来 selenium.common.exceptions.NoSuchElementException:

self.web = webdriver.PhantomJS()
self.web.set_window_size(800,600)

参考地址:https://github.com/ariya/phantomjs/issues/11637

一:降级selenium使用
pip uninstall selenium #先卸载selenium
pip install selenium==3.4.3 #指定版本安装selenium

防止以后官网没有下载 sele+phjs

二:使用Headless Chrome和Headless Firefox
1.使用Headless Chrome
Headless模式是Chrome 59中的新特征。
要使用Chrome需要安装 chromedriver。
chromedriver驱动大全
http://chromedriver.storage.googleapis.com/index.html

chrome_options = Options()
chrome_options.add_argument('--headless')
web = webdriver.Chrome(chrome_options=chrome_options)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
br = webdriver.Chrome(chrome_options=chrome_options)
br.get('https://www.baidu.com/')
baidu = br.find_element_by_id('su').get_attribute('value')
print(baidu)

2.使用Headless Firefox
要使用Firebox需要安装 geckodriver。
geckodriver.exe驱动大全
https://github.com/mozilla/geckodriver/releases

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
 
firefox_options = Options()
firefox_options.add_argument('--headless')
br = webdriver.Firefox(firefox_options=firefox_options)
br.get('https://www.baidu.com/')
baidu = br.find_element_by_id('su').get_attribute('value')
print(baidu)