当前位置: 首页 > news >正文

Web UI自动化测试学习系列5--基础知识1--常用元素定位1

测试学习记录,仅供参考!

selenium八大常用元素定位

元素定位是 web ui 自动化最关键的一部分;

1、打开 XAMPP Control Panel 控制面板→启动 apache 和 MySQL 服务;

2、成功启动 apache 和 MySQL 服务后,打开开源电商商城系统首页,单击‘登录’按钮,打开登录页面;

3、 在登录页单击‘注册’或者‘立即注册’按钮,进入注册新会员页面,打开开发者工具;

(开发人员工具、开发工具,叫法不同,快捷键:F12 或者鼠标右键单击菜单选择‘检查’)

ps:浏览器开发者工具烦请自行学习其相关操作(这里使用的 edge 浏览器)

4、鼠标单击开发者工具中的元素定位按钮,鼠标光标悬停在‘用户名’标签后的文本输入框上;(未单击选中时是置灰色的,点击选中后呈蓝色;下图红色箭头指示,最左侧的一个按钮,这里仅供参考,若有区别请自行解决;)

5、 在项目根目录下新建一个名称为 element_local.py 的 Python 文件;(取一个符合命名规则的文件名)

# 导包--先引入库,把 selenium webdriver 引进来
from selenium import webdriver
# 把元素定位 BY 类 引进来
from selenium.webdriver.common.by import By# 实例化edge浏览器--通过webdriver驱动一个浏览器
driver = webdriver.Edge()# 打开网页--打开一个浏览器,地址是注册页面地址
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个ID元素定位
ele = driver.find_element(By.ID, 'username')
# 打印一下查看有木有取到,能不能定位到
print(ele)

6、 此运行结果说明是 能够取到的,可以正常定位到,是没有问题的

<selenium.webdriver.remote.webelement.WebElement (session="8df5b5256340a6b8191290ec242338d5", element="f.BF77FA6F12328E23045A9971BC56450F.d.247E3EE845B4CADE366E03ADBDC718BD.e.9")>进程已结束,退出代码为 0

一、ID 元素定位

7、id 元素定位, id 是标签的唯一属性,可以通过 id 属性来唯一定位一个元素;

driver.find_element(By.ID, 'username')

二、NAME 元素定位

8、name 元素定位,基于标签中的 name 属性来进行定位;

driver.find_element(By.NAME, 'username')

9、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个 ID 元素定位
driver.find_element(By.ID, 'username')# 第二个 NAME 属性定位
ele = driver.find_element(By.NAME, 'username')
print(ele)

三、CLASS_NAME 元素定位

10、class_name 元素定位,基于 html 标签中的 class 属性来进行定位;

driver.find_element(By.CLASS_NAME, 'inputBg')

11、 优化 element_local.py 文件--调试查看有木有拿到这个元素,最好是打印一下;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个 ID 元素定位
driver.find_element(By.ID, 'username')# 第二个 NAME 属性定位
driver.find_element(By.NAME, 'username')# 第三个 CLASS_NAME 属性定位
ele = driver.find_element(By.CLASS_NAME, 'inputBg')
print(ele)

四、TAG_NAME 元素定位 (标签名元素定位)

12、tag_name 元素定位,基于 html 中的标签名来进行定位;

driver.find_element(By.TAG_NAME, 'input')

13、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个 ID 元素定位
driver.find_element(By.ID, 'username')# 第二个 NAME 属性定位
driver.find_element(By.NAME, 'username')# 第三个 CLASS_NAME 元素定位
driver.find_element(By.CLASS_NAME, 'inputBg')# 第四种 TAG_NAME 元素定位
ele = driver.find_element(By.TAG_NAME, 'input')
print(ele)

五、LINK_TEXT 超链接文本定位

14、LINK_TEXT 完整超链接文本定位 通过完整的超链接文本来定位元素;

driver.find_element(By.LINK_TEXT, '我已有账号,我要登录')

例如注册页面中的超链接‘用户协议’、‘我已有账号,我要登录’、‘您忘记密码了吗?’,超链接定位是通过超链接的文本去定位,务必注意超链接的文本要写全,且区分大小写;若有多个相同的文本链接时,只会返回第一个匹配的元素;

15、 优化 element_local.py 文件;添加时间模块等待函数,防止浏览器过快关闭看不到效果;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个 ID 元素定位
driver.find_element(By.ID, 'username')# 第二个 NAME 属性定位
driver.find_element(By.NAME, 'username')# 第三个 CLASS_NAME 元素定位
driver.find_element(By.CLASS_NAME, 'inputBg')# 第四种 TAG_NAME 元素定位
driver.find_element(By.TAG_NAME, 'input')# 第五种 LINK_TEXT 完整超链接文本定位--单击操作 click() 点击效果
driver.find_element(By.LINK_TEXT, '我已有账号,我要登录').click()
#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()

以‘我已有账号,我要登录’为例,增加单击 click() 方法,添加时间模块,浏览器页面等待指定时间再关闭,出现登录页面则表示超链接文本定位成功;

六、PARTIAL_LINK_TEXT 超链接文本定位

16、PARTIAL_LINK_TEXT 部分超链接文本定位 通过超链接文本的部分内容来定位元素,对大小写敏感;若有多个相同的文本链接时,只会返回第一个匹配的元素;

driver.find_element(By.PARTIAL_LINK_TEXT, '我要登录')

17、 优化 element_local.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# 实例化edge浏览器
driver = webdriver.Edge()# 打开网页
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 第一个 ID 元素定位
driver.find_element(By.ID, 'username')# 第二个 NAME 属性定位
driver.find_element(By.NAME, 'username')# 第三个 CLASS_NAME 元素定位
driver.find_element(By.CLASS_NAME, 'inputBg')# 第四种 TAG_NAME 元素定位
driver.find_element(By.TAG_NAME, 'input')# 第五种 LINK_TEXT 完整超链接文本定位--单击操作 click()
driver.find_element(By.LINK_TEXT, '我已有账号,我要登录')# 第六种 PARTIAL_LINK_TEXT 部分超链接文本定位--单击操作 click() 点击效果
driver.find_element(By.PARTIAL_LINK_TEXT, '我要登录').click()#页面等待3秒
sleep(3)
# 关闭浏览器
driver.quit()

未完待续。。。

http://www.dtcms.com/a/427034.html

相关文章:

  • 大模型-扩散模型(Diffusion Model)原理讲解(2)
  • 一文讲解反射、注解
  • 学习日报 20250930|优惠券事务处理模块
  • 【Nest.js】模块之间依赖关系,以及导出导入链的完整性
  • MyBatis —— 多表操作和注解开发
  • 自动化脚本的自动化执行实践
  • 有颜二维码 1.0.5| 告别单调,一键生成有颜色的二维码
  • 信创浪潮下的国产组态软件——紫金桥RealSCADA
  • 做网站新闻移动动态网络规划设计师资料及视频教程
  • 机器学习之三大学习范式:监督学习、无监督学习、强化学习
  • 18002.机器人电机姿态控制
  • mysql语句基本操作之select查询
  • 做mp3链接的网站宁波专业seo外包
  • Spring Boot 集成 EHCache 缓存解决方案
  • Spring Boot 缓存与验证码生成
  • 进攻------绕后------互换野区
  • Unity 3D笔记(脚本部分)——《B站阿发你好》
  • C++之类的组合
  • 服装购物网站策划书wordpress菜单栏移动下移
  • 【第五章:计算机视觉-项目实战之生成对抗网络实战】1.对抗生成网络原理-(1)对抗生成网络算法基础知识:基本思想、GAN的基本架构、应用场景、标注格式
  • win10软实时设置
  • leetcode 812. 最大三角形面积 简单
  • 机器学习+数字孪生:从诊断到自主决策的跨越
  • 若依前后端分离版学习笔记(十八)——页面权限,页签缓存以及图标,字典,参数的使用
  • 莱芜网站建设哪家好在线logo制作生成免费
  • 哈尔滨网站建设价格网站设计怎么学
  • 再发《管理世界》!智能制造试点DID(2000-2023)
  • SpringCloudGateway:像快递分拣中心一样的API网关
  • 真家宽IP vs 数据中心IP:Cliproxy为何成为跨境电商首选?
  • 声光可调滤光器(AOTF):光谱相机的“电子调谐旋钮”