Python Web 自动化测试工具 — Selenium

庆云2年前技术文章927

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)
阅读剩余的67%

相关文章

Trino对接haproxy开启ssl

Trino对接haproxy开启ssl

1、背景客户在开启https后,在高并发的情况下,集群性能下降严重。初步估计是由于worker和Coordinator交互都需要进行加密和解密,会提高cpu使用率,导致服务变慢。现在采用haproxy...

ES组件集成nlpSQL模块

ES组件集成nlpSQL模块

查看sql插件github https://github.com/NLPchina/elasticsearch-sql 安装cd elasticsearch #进入目录可以先去下载...

nginx分发算法

nginx分发算法

一、分发算法介绍如何将用户请求按照一定的规律分发给业务服务器。主要分为Nginx集群默认算法和基于请求头分发算法。二、nginx集群默认算法nginx的upstream 目前支持4种方式的分配轮询(默...

CDH实操--Zookeeper角色迁移

CDH实操--Zookeeper角色迁移

Zookeeper角色迁移计划1.集群Zookeeper服务角色实例分配情况2.由于角色规划不合理,需要将cdp1.hadoop.com节点的Zookeeper实例实例迁移到cdp4.hadoop.c...

Kafka Leader 和 Follower 故障

Kafka Leader 和 Follower 故障

前言:       在kafka集群工作过程中,难免会碰到某个kafka服务实例宕机或挂掉的情况,服务一旦挂掉,意味着某个分区中的leader或follower将不能正常工作了       具体来说,...

压测实操--nnbench压测hdfs_namenode负载方案

压测实操--nnbench压测hdfs_namenode负载方案

本次压测使用nnbench对namenode负载进行性能测试。nnbench生成很多与HDFS相关的请求,给NameNode施加较大的压力,这个测试能在HDFS上创建、读取、重命名和删除文件操作。对应...

发表评论    

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