UI自动化测试(Python)Web-自动化常用元素定位

   您好,我是游手好闲的小羊!

前言:本人是一名软件测试开发工程师,在接下来的一段时间里会介绍自动化测试框架,希望大家多多支持!

上一篇博文已经完成自动化环境的搭建,这一篇就讲解自动化常用的元素定位,下一篇博文会进阶详细讲解Xpath和Css元素定位!

一、什么自动化的元素定位

这个问题要追究到html身上去了,我们都知道html元素可以分为块元素、内联元素、可变元素。
那么页面元素也是标签构成,这些标签的基本格式如下:
<标签名 属性名1="属性值1">文本</标签名>

例如:

<input id="usename" type="text" name="username" placeholder="用户名" />
<div id="my_cart">
   <div>资产管理系统</div>
</div>

自动化元素定位就是通过元素的信息或元素层级结构来定位元素的方式,后面定位时会详细解释。

二、什么是浏览器开发者工具?

浏览器开发者工具就是给专业的web应用和网站开发人员使用的工具。 包含了对HTML查看和编 辑、Javascript控制台、网络状况监视等功能,是开发JavaScript、CSS、HTML和Ajax的得力助手。(俗称F12) 就是按下F12键就会进入开发者工具,只对于谷歌浏览器用户来说。

三、id定位

解释:id定位就是通过元素的id属性来定位元素,HTML规定id属性在整个HTML文档中必须是唯一的; 前提:元素有id属性

 id定位方法:

element = driver.find_element(By.ID,"id元素")

案例实操: 使用id元素定位在百度输入框输入“稀土掘金”并进行搜索。

源码:

# 导包selenium
import time

from selenium import webdriver
# 创建浏览器驱动对象
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
# 打开测试网站
driver.get("https://www.baidu.com/")
# 通过ID定位到用输入框并在用户名输入框中输入admin
driver.find_element(By.ID,"kw").send_keys("稀土掘金")
# 通过ID定位到搜索按钮并点击
driver.find_element(By.ID,"su").click()
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()

四、name定位

解释:name定位就是根据元素name属性来定位。HTML文档中name的属性值是可以重复的。 前提:元素有name属性

element = driver.find_element(By.NAME,"name元素")

案例实操: 使用name元素定位在百度输入框输入“稀土掘金”并进行搜索。

源码:

# 导包selenium
import time

from selenium import webdriver
# 创建浏览器驱动对象
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
# 打开测试网站
driver.get("https://www.baidu.com/")
# 通过NAME定位到用输入框并在用户名输入框中输入admin
driver.find_element(By.NAME,"wd").send_keys("稀土掘金")
# 通过ID定位到搜索按钮并点击
driver.find_element(By.ID,"su").click()
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()

五、class_name定位

解释class_name定位就是根据元素class属性值来定位元素。HTML通过使用class来定义元素的样式。
前提:元素有class属性
注意:如果class有多个属性值,只能使用其中的一个

element = driver.find_element(By.CLASS_NAME,"CLASS_NAME元素")

案例实操: 使用CLASS_NAME元素定位在百度输入框输入“稀土掘金”并进行搜索。

源码:

# 导包selenium
import time

from selenium import webdriver
# 创建浏览器驱动对象
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
# 打开测试网站
driver.get("https://www.baidu.com/")
# 通过CLASS_NAME定位到用输入框并在用户名输入框中输入admin
driver.find_element(By.CLASS_NAME,"s_ipt").send_keys("稀土掘金")
# 通过ID定位到搜索按钮并点击
driver.find_element(By.ID,"su").click()
# 等待3s
time.sleep(3)
# 退出浏览器
driver.quit()

后面定位元素都大致相同就不一一列举代码了
练习可将方法改为讲解方法进行练习

六、tag_name定位

解释tag_name定位就是通过标签名来定位; HTML本质就是由不同的tag组成,每一种标签一般在页面中会存在多个,所以不方便进行精确定位,一般很少使用

element = driver.find_element(By.TAG_NAME,"tagname元素")
如果存在多个相同标签,则返回符合条件的第一个标签
如何获取第二个元素?
那么可以是driver.find_elements()
这里加了s要注意下,作用:
1. 查找定位所有符合条件的元素
2. 返回的定位元素格式为数组(列表)格式;
说明:
1. 列表数据格式的读取需要指定下标(下标从0开始)
那么第二元素不难得知就是:
driver.find_element(By.TAG_NAME,"tagname元素")[1]

七、link_text定位

解释link_text定位是专门用来定位超链接元素(标签),并且是通过超链接的文本内容来定位元素

element = driver.find_element(link_text,"元素")
link_text:为超链接的全部文本内容

八、partial_link_text定位

解释partial_link_text定位是对link_text定位的补充,link_text使用全部文本内容匹配元素,而partial_link_text可以使用局部来匹配元素,也可以使用全部文本内容匹配元素。

element = driver.find_element(partial_link_text,"元素")
link_text:可以传入a标签局部文本-能表达唯一性

拓展:find_element(By.ID,)与find_element_by_id()表达的意思是一样的,但在python 3.8版本以上就需要导入from selenium.webdriver.common.by import By,否则就会提示:
DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead username=driver.find_element_by_id(‘user’)

每天分享一点点,我是带你学习的小羊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小羊!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值