自动化测试元素定位

举报
bug郭 发表于 2022/11/30 16:22:26 2022/11/30
【摘要】 大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN java领域新星创作者blog.csdn.net/bug…掘金LV3用户 juejin.cn/user/bug…阿里云社区专家博主,星级博主,...

大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

元素定位

对象定位是自动化测试脚本的核心,要想操作一个对象,我们要想拿到这个对象,而一个对象就和人一样有各种特征属性:我们可以通过一个人的姓名,身份证号,住址找到这个人!而我们html元素也一样!

  • id
  • name
  • class name
  • link text
  • partial link text
  • tag name
  • xpath
  • css selector

通过上面的属性我们都可以定位到一个元素!
但是需要注意的是我们要获取的对象有该属性,并且属性值唯一才可进行定位!

通过多种定位方式对百度的输入框进行定位!

# 多种定位方式定位到百度的输入框!
import time
from selenium import webdriver
# 拿到谷歌的驱动
driver = webdriver.Chrome()
# 使浏览器窗口最大化
driver.maximize_window()
# 打开百度的url
driver.get('https://www.baidu.com/')
time.sleep(3)
# 多种方式定位到百度输入框!
# 1.通过id进行定位
driver.find_element_by_id('kw').send_keys('鸡')
time.sleep(1)
# 2.通过name进行定位
driver.find_element_by_name('wd').send_keys('你')
time.sleep(1)
# 3.通过classname进行定位
driver.find_element_by_class_name('s_ipt').send_keys('太')
time.sleep(1)
# 4.通过css进行定位
driver.find_element_by_css_selector('#kw').send_keys('美')
time.sleep(1)
# 5.通过xpath进行定位
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('!')
time.sleep(1)
# 6.通过tag name进行定位,这里type属性不唯一所以定位失败!
#driver.find_element_by_tag_name('text').send_keys('!')
# 定位到搜索按钮然后会车
driver.find_element_by_id('su').click()
time.sleep(3)
# 关闭浏览器并且关闭webdriver连接
driver.quit()

在这里插入图片描述

id

id是页面元素属性,一般情况下我们可以通过id进行元素定位!如果一个元素有id属性,那一般情况下,该id在页面下应该是唯一的!

这是百度输入框的html代码
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
我们通过这里的id=kw就可以定位到元素
通过find_element_by_id('kw')方法进行定位!

name

如果这个元素有name属性,并且唯一,就可以通过这个name属性进行定位

百度输入框的name属性name = wd
通过find_element_by_name('wd')方法进行定位!

tag name/class name定位

从上面的百度输入框的定位我们可以看到一个元素不止有nameid属性,还有classtag(标签名)

input name="wd" class="s_ipt"
这里的input就是一个标签名tag我们可以通过find_element_by_tag_name('input')进行定位,但是这里的input标签不唯一,所以会定位失败
然后这里的class="s_ipt" s_ipt就是一个class name 可以通过find_element_by_class_name('s_ipt')进行定位

link text

有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过链接内容,也就是 link text来定位。需要注意的是链接内容必须这个页面唯一,否则会报错!

'''
通过 link text进行定位!
'''
from selenium import webdriver
import time
# 获取到谷歌的驱动
drier = webdriver.Chrome()
# 打开百度的url
drier.get('http://www.baidu.com/')
time.sleep(3)
# 通过link text定位到 新闻 元素!
drier.find_element_by_link_text('新闻').click()
time.sleep(3)
# 关闭浏览器和驱动!
drier.quit()

在这里插入图片描述

  • partial link text

通过文字链接的部分内容进行定位!就类似于模糊匹配!但是必须匹配结果唯一!否则定位失败!

from selenium import webdriver
import time
# 通过partial link text 文字链接部分内容进行匹配定位元素
driver = webdriver.Firefox()
driver.maximize_window()
driver.get('http://baidu.com/')
time.sleep(1)
# 通过partial_link_text对hao123进行定位!
driver.find_element_by_partial_link_text('1').click()
time.sleep(3)
driver.quit()

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。