chrome headless + selenium替换 phantomJS + selenium

1.Chrome和Firefox推出headless功能后,在headless浏览器这方面 phantomJS就受到了挤压,selenium后面将不再支持phantomJS了,但是作为个人项目还是可以使用的,这里记录一下,Ubuntu 18.04平台

http://phantomjs.org/download.html  //下载链接
tar -xjvf tar -xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2
sudo cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin 

把解压后可执行文件拷贝到PATH搜索路径,这样后面在生成实例的时候就不用传可执行文件的路径了。
这里搬运一下selenium的API示例代码,完成利用百度自动搜索beauty girl关键字,并生成screenshot

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.PhantomJS()
driver.get("http://www.baidu.com")
print(driver.title) //获取网页的标题

//利用Chrome开发者工具查看百度输入框的name
inputElement = driver.find_element_by_name("wd") 
inputElement.send_keys("beauty girl")

inputElement.submit()

try:
    WebDriverWait(driver, 10).until(EC.title_contains("beauty"))
    //保存查询的结果快照,虽然是headless
    driver.get_screenshot_as_file("beauty-girl.png")
    print(driver.title)  //再次输出查询返回结果页面的标题
finally:
    driver.quit()
  1. 若安装了Chrome浏览器,最好使用chrome WebDriver
	http://chromedriver.chromium.org/getting-started //下载链接
	unzip chromedriver_linux64.zip
	sudo cp chromedriver /usr/local/bin //同phantomJS安装

默认下selenium通过chrome WebDriver调用Chrome是有界面的,想要headless,需要在实例化的时候送指定的参数

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

//第一种方法
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
//第二种方法
#chrome_options = Options()
#chrome_options.add_argument('--headless')
#driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get("http://www.baidu.com")

print(driver.title)

inputElement = driver.find_element_by_name("wd")

inputElement.send_keys("beauty girl")

inputElement.submit()
try:
    WebDriverWait(driver, 10).until(EC.title_contains("beauty"))
    driver.get_screenshot_as_file("beauty-girl.png")
    print(driver.title)
finally:
    driver.quit()

你可能感兴趣的:(Python,selenium)