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'])