Python Web 自动化测试工具 — Selenium

庆云1年前技术文章709

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)


相关文章

Python 调用阿里云 OpenAPI 巡检到期云资源

Python 调用阿里云 OpenAPI 巡检到期云资源

前言本篇文章介绍我写的一个程序,通过调用阿里云 OpenAPI 巡检即将到期的云资源。https://github.com/COOH-791/cloud_instance_sentry1. 用途说到云...

开源大数据集群部署(二十)Trino部署

开源大数据集群部署(二十)Trino部署

2.9.1 解压trino的包到opt目录cd /root/bigdata tar -xzvf trino-server-389.tar.gz -C /opt/ ln -s /opt/trino-...

spark指标性能分析

spark指标性能分析

1)      Spark的性能指标   任务启动后可以在yarn的原生页面看到对应的任务信息,点击ApplicationMast...

helm部署gitlab

helm部署gitlab

官方文档地址添加gitlab的helm仓库helm repo add gitlab https://charts.gitlab.io/�查看已经安装的helm仓库helm repo list安装git...

CDH实操--集群关闭Kerberos

CDH实操--集群关闭Kerberos

1、关掉整个集群2、zookeeper配置搜索kerberos,将enable Kerberos配置关掉3、hdfs配置在输入框中填入[hadoop.security.auth] 进行搜索将安全身份认...

MySQL 组复制一致性保证

MySQL 组复制一致性保证

说明本篇文章介绍,MySQL 组复制作为一个分布式系统,如何保证事务一致性?1. 一致性级别MySQL 8.0.14 版本开始,提供组复制变量:group_replication_consistenc...

发表评论    

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