python Selenium

Selenium概述

Selenium是一个用于web应用程序测试的工具,模拟浏览器功能,自动执行网页中的is代码,实现动态加载

支持通过各种driver (FirfoxDriver,IternetExplorerDriver,OperaDriver,chromeDriver) 驱动直实浏览器完成测试,Selenium也是支持无界面浏览器操作的

Selenium安装

下载chrome驱动

根据chrome浏览器版本下载驱动

https://registry.npmmirror.com/binary.html?path=chromedriver/

移动至项目文件根目录

安装 selenium

python 复制代码
# 这里我选的是3.5.0版本 最好不要选择最新版本
pip install selenium -i  https://pypi.tuna.tsinghua.edu.cn/simple

Selenium的使用

python 复制代码
from selenium import webdriver

# 创建浏览器操作对象
browser = webdriver.Chrome("chromedriver.exe")

# 访问百度网站
url = 'https://www.baidu.com'

browser.get(url)

# 获取网页源码
content = browser.page_source

print(content)

Selenium元素定位

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
python 复制代码
# 根据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

Phantomjs是一个无界面的浏览器,支持页面元素查找,js的执行等,由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多,可以保存快照查看

除phantomjs之外,还可以使用Chrome handless,不过 Chrome handless 有版本要求,这里不在演示

下载Phantomjs

下载地址: Download PhantomJS

使用无界面浏览器

python 复制代码
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')

验证快照

相关推荐
djjdjdjdjjdj2 分钟前
Golang如何做本地缓存加速_Golang本地缓存教程【核心】
jvm·数据库·python
2301_764150562 分钟前
如何在 WordPress AMP 网站中为特定模板禁用 AMP 渲染
jvm·数据库·python
2301_773553622 分钟前
bootstrap怎么给div添加背景图片
jvm·数据库·python
2301_773553622 分钟前
CSS如何通过CSS变量实现组件颜色隔离_提升组件样式独立性
jvm·数据库·python
2401_871696524 分钟前
如何让按钮悬停时阴影位置保持固定,仅按钮自身位移?
jvm·数据库·python
吕源林8 分钟前
CSS如何使用Bootstrap网格嵌套布局_在栅格内创建内部行
jvm·数据库·python
Polar__Star10 分钟前
php怎么调用OPPO AI图像超分_php如何将低分辨率图放大不失真
jvm·数据库·python
m0_6784854511 分钟前
CSS如何让文字超出两行显示省略号_使用line-clamp属性限制
jvm·数据库·python
2501_9216494912 分钟前
构建多市场统一金融数据 API 的实践指南
python·金融·个人开发·量化·api接口
海天一色y14 分钟前
基于Neural ODE的污水处理活性污泥混合模型(Hybrid ASM1)实现与GPU训练
pytorch·python·神经网络