Python Web 自动化测试工具 — Selenium

庆云11个月前技术文章427

Selenium 是一个 Web 自动化测试工具,Selenium 通过非常简洁方便的 API,使用 Selenium WebDrivers(Selenium web 驱动器)像使用 Firefox, IE, Chrome, Remote 等一样方便。

Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括 PhantomJS 这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。


1、安装 selenium

$ pip install selenium


2、下载浏览器驱动

Firefox 浏览器驱动:WebDriver for Firefox

Chrome 浏览器驱动:ChromeDriver

IE 浏览器驱动:IEDriver

Edge 浏览器驱动:Microsoft Edge WebDriver


语法:

from selenium import webdriver

# Edge浏览器
driver = webdriver.Edge("executable_path")

# Firefox浏览器
driver = webdriver.Firefox()

# Chrome浏览器
driver = webdriver.Chrome()

# Internet Explorer浏览器
driver = webdriver.Ie()

# Opera浏览器
driver = webdriver.Opera()

# PhantomJS
driver = webdriver.PhantomJS()

# 打开网页
driver.get(url)

注意:executable_path 需要指定浏览器驱动的可执行文件路径,如果使用默认值,则假定浏览器驱动可执行文件在 $PATH 中。


3、使用 selenium

使用流程:

  1. 导包

  1. 创建浏览器对象

  1. 发送请求、获取数据

  1. 处理数据、保存数据

  1. 关闭页面/退出浏览器

3.1 有界面模式

# 导包
from selenium import webdriver

# 创建浏览器对象
driver = webdriver.Edge()

# 发送请求
driver.get("https://www.baidu.com/")

# 获取数据
data = driver.page_source
print(type(data), data)    # str <html>...</html>

3.2 无界面模式

# 导包
from selenium import webdriver
from selenium.webdriver.edge.options import Options

# 实例化options对象
options = Options()
options.add_argument("--headless")

# 创建浏览器对象
driver = webdriver.Edge(options=options)

# 发送请求
driver.get("https://www.baidu.com/")

# 获取数据
data = driver.page_source
print(type(data), data)    # str <html>...</html>

3.3 元素操作

定位元素语法:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Edge()

text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")


# By策略
By.ID
By.NAME
By.XPATH
By.CSS_SELECTOR
By.CLASS_NAME
By.LINK_TEXT
By.PARTIAL_LINK_TEXT
By.TAG_NAME


操作元素语法:

  • 点击 (适用于任何元素)

  • 发送键位 (仅适用于文本字段和内容可编辑元素)

  • 清除 (仅适用于文本字段和内容可编辑元素)

  • 提交 (仅适用于表单元素)

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Edge()

text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")

# 点击
submit_button.click()


实例: 实现谷歌搜索

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# 创建浏览器对象
driver = webdriver.Edge()

# 发送请求
driver.get("http://www.google.com")

# 定位搜索框、输入文本并回车
driver.find_element(By.NAME, "q").send_keys("python" + Keys.ENTER)

3.4 浏览器操作

# 前进
driver.forward()

# 后退
driver.back()

# 刷新
driver.refresh()

# 关闭
driver.close()

# 退出
driver.quit()

# 控制浏览器窗口大小
driver.set_window_size(480, 800)


相关文章

压测实操--TestDFSIO压测hdfs读写方案

压测实操--TestDFSIO压测hdfs读写方案

TestDFSIO主要是对hdfs的I/O性能进行测试,通过使用MapReduce作业来完成测试,作为并行读写文件进行I/O性能测试。每个map任务用于读或写每个文件,map的输出用于收集与处理文件相...

Alluxio 部署

Alluxio 部署

1、基础环境准备配置java环境变量tar -xzvf jdk-8u281-linux-x64.tar.gz -C /opt ln -s ...

oracle11g db打补丁

1 升级opatch升级的方式就是解压安装包到ORACLE_HOME即可。oracle下执行Plain Text复制代码su - oracle1.备份原opatchcd $ORACLE_HOMEmv...

 MySQL 两阶段提交

MySQL 两阶段提交

说明MySQL 开启 Binlog 后,所有的事务都会产生 Binlog Event,这些 Event 也是事务数据的一部分。本篇文章介绍 MySQL 如何保证事务 Binlog Event 和 In...

MySQL 8.0 新特性:Descending Indexes

MySQL 8.0 新特性:Descending Indexes

一、前言MySQL 8.0 之前的索引排序规则之前只允许 ASC 存储,创建时指定 DESC 也会被忽略,8.0 版本为我们带来了 Descending Indexes 降序索引 👏👏👏只能使用 AS...

Elasticsearch查询优化

1 使用更快的硬件查询性能大部分场景下更多的在于IO能力,很多时候查询速度受限于磁盘IO能力,使用SSD会比旋转类存储介质好得多。如果查询类型属于计算比较多的,则可以考虑使用更快的CPU。2 为文件系...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。