selenium 使用无界面浏览器PhantomJS
逸山 2017/7/21 自动化测试Selenium
使用selenium进行网页自动化测试或者抓包时,大部分情况我们会使用firefox、chrome等主流浏览器,如果遇到非页面测试或对性能有要求的情况,我们可以使用无界面浏览器PhantomJS配合selenium使用,具体方法如下:
# 下载PhantomJS
到这个网站下载PhantomJS (opens new window)
# selenium调用
try:
pjs_bin = 'phantomjs.exe'
dr = webdriver.PhantomJS(executable_path=pjs_bin)
dr.get(url)
elem = dr.find_element_by_xpath("//*")
i = elem.text
print('get {0} is {1}'.format(url,i))
except Exception as err:
i = ''
print('get {0} error by {1}'.format(url,err))
else:
dr.quit()
pjs_bin: 执行文件的路径,根据具体情况配置。如果不设置selenium会在PATH中寻找。
# 设置消息头
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capabilities = DesiredCapabilities.PHANTOMJS.copy()
capabilities["phantomjs.page.settings.userAgent"]="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36"
dr = webdriver.PhantomJS(executable_path=pjs_bin,desired_capabilities=capabilities)
dr.set_window_size(1120, 550)
dr.set_page_load_timeout(90)
dr.set_script_timeout(90)
# 打开https页面
PhantomJS默认使用SSLv3打开https网页,但通常一些网站不支持或不兼容SSLv3,造成页面显示空白,需要在启动driver时加上以下参数:
dr = webdriver.PhantomJS(executable_path=pjs_bin,
desired_capabilities=capabilities,
service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any'])