Selenium是一个用于web应用程序测试的工具,模拟浏览器功能,自动执行网页中的is代码,实现动态加载
支持通过各种driver (FirfoxDriver,IternetExplorerDriver,OperaDriver,chromeDriver) 驱动直实浏览器完成测试,Selenium也是支持无界面浏览器操作的
根据chrome浏览器版本下载驱动
https://registry.npmmirror.com/binary.html?path=chromedriver/
移动至项目文件根目录
# 这里我选的是3.5.0版本 最好不要选择最新版本
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
from selenium import webdriver
# 创建浏览器操作对象
browser = webdriver.Chrome("chromedriver.exe")
# 访问百度网站
url = 'https://www.baidu.com'
browser.get(url)
# 获取网页源码
content = browser.page_source
print(content)
selenium的元素定位:webDriver提供很多定位元素的方法:
老版本写法
- find_element by_id
- find_elements_by_name
- find_elements_by_xpath
- find_elements by_tag_name
- find_elements_by_css_selector
- find_elements_by_link_text
新版本写法
- find_element
- find_elments
# 根据xpath选择元素(最常用)
driver.find_element(By.XPATH, '//*[@id="kw"]')
# 根据css选择器选择元素
driver.find_element(By.CSS_SELECTOR, '#kw')
# 根据name属性值选择元素
driver.find_element(By.NAME, 'wd')
# 根据类名选择元素
driver.find_element(By.CLASS_NAME, 's_ipt')
# 根据链接文本选择元素
driver.find_element(By.LINK_TEXT, 'hao123')
# 根据包含文本选择
driver.find_element(By.PARTIAL_LINK_TEXT, 'hao')
# 根据标签名选择
# 目标元素在当前html中是唯一标签或众多标签第一个时候使用
driver.find_element(By.TAG_NAME, 'title')
# 根据id选择
driver.find_element(By.ID, 'su')
Phantomjs是一个无界面的浏览器,支持页面元素查找,js的执行等,由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多,可以保存快照查看
除phantomjs之外,还可以使用Chrome handless,不过 Chrome handless 有版本要求,这里不在演示
下载地址:Download PhantomJS
from selenium import webdriver
import time
# 创建浏览器操作对象
browser = webdriver.PhantomJS("phantomjs.exe")
# 访问百度网站
url = 'https://www.baidu.com'
browser.get(url)
# 保存快照
browser.save_screenshot('baidu.png')
time.sleep(2)
input = browser.find_element_by_id('kw')
input.send_keys("陈奕迅")
# 保存快照
browser.save_screenshot('陈奕迅.png')
验证快照