Python Web 自动化测试工具 — Selenium

庆云2年前技术文章1260

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)


相关文章

开源Kubernetes工具

开源Kubernetes工具

类别 1:运行 Kubernetes 环境Minikube 仍然是最佳的几乎每个 Kubernetes 教程都是从“下载 Minikube”开始的,这在今天仍然行得通。如果你想在一个真正低风险的环境中...

SQL隐式转换导致索引失效_数据类型不一致

SQL隐式转换导致索引失效_数据类型不一致

2.数据类型不一致导致索引失效示例 SQL 如下,SQL 本身很简单,但通过查看执行计划可以发现,此时走的是主键索引,查看表结构发现表的 kemu 是有索引的,且过滤性相对较好。进一步核实,SQL 为...

PostgreSQL 命令行工具介绍

前言psql 是 PostgreSQL 自带的命令行交互客户端工具,类似于 MySQL 的 mysql -u -p 不过相当于 MySQL 的命令行工具 psql 功能更丰富些,例如单击 tab 自动...

Debezium部署以及同步之DB2数据到Kafka的同步

Debezium部署以及同步之DB2数据到Kafka的同步

因为Debezium依赖于kafka之上,所以我们先部署kafka和zookeeper(忽略)。1 环境介绍Debezium1.9版本 Db2 11.5版本  附官网:http...

Hive架构图及Hive SQL的执行流程

Hive架构图及Hive SQL的执行流程

1、Hive产生背景MapReduce编程的不便性HDFS上的文件缺少Schema(表名,名称,ID等,为数据库对象的集合)2、Hive是什么Hive的使用场景是什么?基于Hadoop做一些数据清洗啊...

MySQL 初始化推荐关注的参数

MySQL 初始化推荐关注的参数

前言新部署的 MySQL 实例如何配置?本 SOP 将提供一些 MySQL 关键参数及设置方法。必须设置的参数1. innodb_buffer_pool_size对于 innodb 表引擎来说,用户数...

发表评论    

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