Selenium(1)-webUI自动化环境部署,基本元素定位

news/2024/12/22 11:08:19/

web自动化测试环境部署

在正式开启自动化测试之前,我们需要给自动化提供完备的测试环境,需要我们搭建一套完整的运行环境,以便能模拟用户的行为。
首先,我们需要安装python编译器,一个编写代码的工具,如pycharm,完成这两个操作后,我们在进行以下的步骤:
1、安装/卸载selenium
作用:按照selenium模块到python中,selenium可以给我提供丰富的方法和属性,利于我们在编写代码时可直接导入并调用。
安装步骤:
在命令行窗口(cmd窗口) :输入如下命令
安装selenium命令: pip install selenium
卸载selenium命令:pip uninstall selenium
查看是否安装成功:pip show selenium或者pip list(查看已安装的应用)
2、下载安装浏览器驱动 :
在进行自动化测试代码编写时,为了使用代码控制浏览器,我们需要借助浏览器的驱动来完成这个过程,如果没有浏览器驱动,我们则不能正常的运行web应用软件。

获取谷歌浏览器的驱动地址:http://chromedriver.storage.googleapis.com/index.html

下载驱动器时,应该下载与本地浏览器版本最接近的版本,如下:浏览器驱动
注意:下载时,下载32位的可以兼容64位的,但是64不能兼容32位的,为了方便,最好下载32位的驱动器
3、安装浏览器驱动
下载后的文件解压后,得到chromedriver.exe文件,放到与python.exe同一个目录下即可。

入行自动化三行代码

编写web自动化测试的步骤
1、导入selenium
2、实例化浏览器对象(例如Google,火狐等)
3、打开待测试的网站URL
4、实施自动化测试内容–非必须
5、关闭官网–非必须

"""
web 自动化基本代码:打开并关闭百度网页
"""
# 1、导包
from time import sleep
from selenium import webdriver# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()
# 3、打开网页包含协议头
driver.get('https://www.baidu.com/')
# 4、实施操作
ele = deiver.find_element(‘id’,'kw').click() # 点击操作
# 5、关闭网页
driver.quit()

六种基础定位方法(单个元素定位)

image.png

1、ID属性定位法: find_element_by_id(‘ID名称’)
2、name属性定位法:find_element_by_name (‘name的值’)
3、class name属性定位法:find_element_by_class_name(‘class的值’)
4、tag name定位法:find_element_by_tag_name(“标签名”)
5、link text 定位法:find_element_by_link_text(‘文本内容’).click()–超链接精准匹配
6、partial link text 定位法:find_element_by_partial_link_text(‘模糊匹配’).click()–超链接模糊匹配

1、ID属性定位法:

语法:find_element_by_id('ID名称')
说明:一般来说id是唯一的,存在id优先选择使用该属于定位
实际应用举例:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.find_element_by_id('kw').send_keys('如何使用selenium实现自动化测试?')
driver.find_element_by_id('su').click()

2、name属性定位法:

语法:driver.find_element_by_name('name的值')
说明:name属于在页面不一定是唯一的,因此在使用该方法时,应该确保name唯一,如果不唯一,默认为第一个name(如果刚好所需的为第一个,则可用,若非第一个,可使用其他方法定位)
实际应用举例:

# 导包
from time import sleep
from selenium import webdriver
# 实例化浏览器
driver = webdriver.Chrome()
# 打开网址
driver.get('https://www.baidu.com/')
# 需求
ele = driver.find_element('name', 'wd') # name是唯一的,可用/name为页面第一个元素
ele.send_keys('易烊千玺')
# 时间轴看效果
sleep(2)
# 关闭页面
driver.quit()

3、class name属性定位法:

语法:driver.find_element_by_class_name
说明:不允许使用复合类名(多值,只需要定位其中一个),使用该属性时,元素必须要有class属性(方法名是class_name ,但是我们找的是class属性)class定位
实际应用举例:

# 导包
from time import sleep
from selenium import webdriver
# 实例化浏览器
driver = webdriver.Chrome()
# 打开网址
driver.get('https://www.baidu.com/')
# 需求
ele = driver.find_element('class', 's_ipt_wr ')  # class为多值,取一个值即可
ele.click()
# 时间轴看效果
sleep(2)
# 关闭页面
driver.quit()

4、tag name定位法:

语法:driver.find_element_by_tag_name("标签名")
说明:因为重复的很多很多,几乎不用,必须确认该标签具有唯一性,才可以使用,如果页面存在很多相同的标签,默认返回第一个
实际应用举例:

# 导包
from time import sleep
from selenium import webdriver
# 实例化浏览器
driver = webdriver.Chrome()
# 打开网址
driver.get('https://www.baidu.com/')
# 需求
ele = driver.find_element('tag name', 'input')  # input标签
ele.send_keys('admin')
# 时间轴看效果
sleep(2)
# 关闭页面
driver.quit()

5、link text 定位法:

语法:driver.find_element_by_link_text('文本内容').click()
说明:a标签的文本定位(只能a标签),且需要输入超链接的全部⽂;一般与click方法连用:元素对象 .click()本信息
实际应用举例:

# 导包
from time import sleep
from selenium import webdriver# 实例化浏览器对象
driver = webdriver.Chrome()
# 打开网址url
driver.get('https://www.baidu.com/')
# 需求
username = driver.find_element_by_link_text('新闻')
username .click()
sleep(3)
# 关闭网页
driver.quit()

6、partial link text 定位法:

语法:driver.find_element_by_partial_link_text('模糊匹配').click()
说明:a标签的部分文本定位(只能a标签)
实际应用举例:与 link text 定位法一样,不过只需要写该链接的部门文本即可

# 导包
from time import sleep
from selenium import webdriver# 实例化浏览器对象
driver = webdriver.Chrome()
# 打开网址url
driver.get('https://www.baidu.com/')
# 需求
username = driver.find_element_by_link_text('新')
username .click()
sleep(3)
# 关闭网页
driver.quit()

7、定位一组元素find_elements

driver.find_elements_by_xxx:与driver.find_element_by_xxx的方法一致,不过它返回的结果是一组数据,返回数据类型是列表,是多个元素对象


http://www.ppmy.cn/news/1533258.html

相关文章

【论文阅读】基于真实数据感知的模型功能窃取攻击

摘要 目的 模型功能窃取攻击是人工智能安全领域的核心问题之一,目的是利用有限的与目标模型有关的信息训练出性能接近的克隆模型,从而实现模型的功能窃取。针对此类问题,一类经典的工作是基于生成模型的方法,这类方法利用生成器…

【JAVA开源】基于Vue和SpringBoot的美容院管理系统

本文项目编号 T 055 ,文末自助获取源码 \color{red}{T055,文末自助获取源码} T055,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

Redis-----通用命令(keys, exists, del, expire, ttl, type)

通用命令 一. 前言.1.1 通用命令1.2 Redis常用的数据类型1.2.1 String(字符串)1.2.2 List(列表)1.2.3 Set(集合)1.2.4 Hash(哈希)1.2.5 Zset(有序集合) 二. 通…

【怎样基于Okhttp3来实现各种各样的远程调用,表单、JSON、文件、文件流等待】

HTTP客户端工具 okhttp3 form/json/multipart 提供表达、json、混合表单、混合表单文件流传输等HTTP请求调用支持自定义配置默认客户端,参数列表如下: okhtt3.config.connectTimeout 连接超时,TimeUnit.SECONDSokhtt3.config.readTimeOut 读…

C++_unique_ptr_一个类Frame的普通指针fr初始化一个unique_ptr, 这个普通指针还有管理权吗?

一个类Frame的普通指针fr初始化一个unique_ptr, 这个普通指针还有管理权吗? 在 C 中,std::unique_ptr 是一种智能指针,它独占管理其所指向对象的所有权。一旦你用一个普通指针初始化或赋值给一个 std::unique_ptr,这个 unique_pt…

excel 处理数据的常用场景之考勤表的制作

文章目录 预备知识数据有效性excel的图表知识 考勤表效果图开始制作1. 首先我们去分析这个表格,我们把它分为三个部分如下:2. 开始第一个部分的制作3. 开始制作第二部分。4. 第三部分也是最复杂的,因为会用到几个公式,我这里下面会…

uniapp app 端通过webview引入外部 js , webview 与 app 通信

背景 用户登录需要接入腾讯的无感验证,在 index.html 文件里引入 js 文件是不生效的。查看官网相关内容,app 引入只支持 webview 的形式,因为他的 js 文件里面会用到浏览器里的变量,因此就算下载到本地引入也无法使用。 当前项目…

2024年主流前端框架的比较和选择指南

在选择前端框架时,开发者通常会考虑多个因素,包括框架的功能、性能、易用性、社区支持和学习曲线等。以下是一些主流前端框架的比较和选择指南。 1. 主流前端框架简介 React 优点: 组件化开发,易于复用和维护。虚拟DOM提高了性能。强大的生…