Selenium元素定位全攻略,让你轻松玩转自动化测试!

这篇具有很好参考价值的文章主要介绍了Selenium元素定位全攻略,让你轻松玩转自动化测试!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是元素定位

  • 元素定位就是查找HTML元素的过程,操作页面元素之前,首先要对元素进行定位,所以定位是自动化脚本编写的开始。
  • 通常使用find_element或find_elements方法来定位元素(find_element 使用给定的方法定位和查找一个元素;find_elements 使用给定的方法定位和查找所有的元素)

二、Selenium元素定位常用API

1.By_id定位

当所定位的元素具有id属性的时候我们可以通过by_id来定位该元素

例如:打开百度,定位搜索框

Selenium元素定位全攻略,让你轻松玩转自动化测试!,经验分享,软件测试,自动化测试,selenium,测试工具,压力测试,postman,单元测试,jmeter,自动化测试

搜索框页面源代码:属性id值为kw

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="255" autocomplete="off">
'''
1.学习目标
    必须掌握selenium中元素定位方法,id定位方法
2.操作步骤(语法)通过元素id属性定位
    driver.find_element_by_id(id属性的值)
3.需求
    在百度页面中使用id属性定位百度输入框
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器(获取浏览器对象)
driver = webdriver.Chrome()
# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.元素定位(id定位方法),百度输入框
'''
注意:
如果有多个相同属性值的元素,单数形式,定位第一个.
'''
srk = driver.find_element_by_id("kw")
# 打印srk对象
print(srk)
# 查看元素对应的源码
print(srk.get_attribute("outerHTML"))
# 5.关团浏览器
driver.quit()
'''
输出结果:
 <selenium.webdriver.remote.webelement.WebElement 
 (session="6fbad6d63614e1cae6cd346153a7105e", 
 element="0dd374b6-74ed-4f4c-b610-5c772fd8c366")>
 我们可以看到srk是一个WebElement类型的对象。
 查看元素对应的源码如下:
 <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
 说明我们已经把百度首页的输入框获取到了。
'''

复数形式:

'''
学习目标
    复数形式
        复数定位形式:driver.find_elements_XXX
        复数定位,返回的列表类型数据<list>
        遍历列表操作具体元素
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.通过by_id复数定位
srk = driver.find_elements_by_id("kw")
# 5.查看返回结果数据类型
print("结果数据类型", type(srk))
print("元素个数", len(srk))
# 6.遍历结果,查看源码
for i in srk:
    # 查看元素对应的源码
    print(i.get_attribute("outerHTML"))
# 7.关团浏览器
driver.quit()
'''
结果数据类型 <class 'list'>
元素个数 1
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
'''

异常总结:

异常1:AttributeError:'list' object has no attribute 'get_attribute' :表示定位元素返回的是一个列表格式,原因:使用复数定位方式 find_elements获取的定位

异常2 :NoSuchElementException : 表示元素没找到元素,原因是定位方式出现问题,有一种情况是属性值写错了。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

Selenium元素定位全攻略,让你轻松玩转自动化测试!,经验分享,软件测试,自动化测试,selenium,测试工具,压力测试,postman,单元测试,jmeter,自动化测试

2.by_name 定位

当所定位的元素具有name属性的时候,我们可以通过by_name来定位该元素

如上图中的百度搜索页面,搜索框页面源代码:属性name值为wd

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

使用name属性定位百度搜索框

'''
1.学习目标:
    必须掌握selenium的元素定位方法by_name
2.语法
    name定位
    driver.find_element_by_name(name属性的值)
3.需求
    使用name属性定位百度搜索框
4.总结
    当元素中有name属性时才能使用上述定位方法
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器(获取浏览器对象)
driver = webdriver.Chrome()
# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4. 使用name定位百度搜索框
'''
注意:
如果有多个相同属性值的元素,单数形式,定位第一个.
'''
srk = driver.find_element_by_name("wd")
# 打印srk对象
print(srk)
# 打印定位元素所在行的源码
print(srk.get_attribute("outerHTML"))
# 5.关闭浏览器
driver.quit()
'''
输出结果:
<selenium.webdriver.remote.webelement.WebElement 
(session="3149d334336f0eab9e4d8d394e4efd72",
 element="0.1359081202533734-1")>
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
'''

复数形式:

'''
学习目标
    复数形式
        复数定位形式:driver.find_elements_XXX
        复数定位,返回的列表类型数据<list>
        遍历列表操作具体元素
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.通过by_id复数定位
srk = driver.find_elements_by_name("wd")
# 5.查看返回结果数据类型
print("结果数据类型", type(srk))
print("元素个数", len(srk))
# 6.遍历结果,查看源码
for i in srk:
    # 查看元素对应的源码
    print(i.get_attribute("outerHTML"))
# 7.关团浏览器
driver.quit()
'''
结果数据类型 <class 'list'>
元素个数 1
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
'''

3.by_class_name 定位

当所定位的元素具有class属性的时候,我们可以通过by_class_name来定位该元素

搜索框页面源代码:属性classname值为s_ipt

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="255" autocomplete="off">

使用class属性定位百度搜索框

'''
1.学习目标:
    必须掌握selenium的元素定位方法by_class_name
2.语法
    classname定位
    driver.find_element_by_class_name(class属性值)
3.需求
    使用class属性定位百度搜索框
4.总结
    当元素中有class属性时才能使用上述定位方法
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器(获取浏览器对象)
driver = webdriver.Chrome()
# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4. 使用name定位百度搜索框
'''
注意:
如果有多个相同属性值的元素,单数形式,定位第一个.
'''
srk = driver.find_element_by_class_name("s_ipt")
# 打印srk对象
print(srk)
# 查看元素对应的源码
print(srk.get_attribute("outerHTML"))
# 5.关闭浏览器
driver.quit()
'''
输出结果:
<selenium.webdriver.remote.webelement.WebElement 
(session="e4f97a48e7f113e681950b62c7789966", 
element="0.5782514739919584-1")>
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
'''

复数形式:

'''
学习目标
    复数形式
        复数定位形式:driver.find_elements_XXX
        复数定位,返回的列表类型数据<list>
        遍历列表操作具体元素
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.输入网址
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.通过by_id复数定位
srk = driver.find_elements_by_class_name("s_ipt")
# 5.查看返回结果数据类型
print("结果数据类型", type(srk))
print("元素个数", len(srk))
# 6.遍历结果,查看源码
for i in srk:
    # 查看元素对应的源码
    print(i.get_attribute("outerHTML"))
# 7.关团浏览器
driver.quit()
'''
结果数据类型 <class 'list'>
元素个数 1
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
'''

4.by_tag_name 定位

by_tag_name方法可以通过元素的标签名来查找元素。由于搜索到的标签名通常不 止一个,所以一般结合使用find_elements方法来使用

假设页面中有一个button按钮

<button type="submitA" value="注册A" title="加入会员A">注册用户A</button>
'''
1.学习目标:
    必须掌握selenium中tag_name定位方法
2.语法
    driver.find_element_by_tag_name(标签名)  # 单数形式
    driver.find_elements_by_tag_name(标签名)  # 定位一组标签名相同的元素
3.需求
    在页面中,使用tag_name对按钮注册用户A定位
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
# 2.打开浏览器(获取浏览器对象)
driver = webdriver.Chrome()
# 3.打开注册A页面
url = "file:///" + os.path.abspath("./练习页面/注册A.html")
driver.get(url)
sleep(2)
# 4.使用tag_name定位按钮
'''
注意:
如果有多个相同标签的元素,单数形式,定位第一个.
'''
button = driver.find_element_by_tag_name("input")
print(button.get_attribute("outerHTML"))
# 5.关闭浏览器
sleep(2)
driver.quit()
'''
输出结果:
<input type="textA" name="userA" id="userA" placeholder="账号A" required="" value="">
'''

复数形式:

'''
1.学习目标:
    必须掌握selenium中tag_name定位方法
2.语法
    driver.find_element_by_tag_name(标签名)  # 单数形式
    driver.find_elements_by_tag_name(标签名)  # 定位一组标签名相同的元素
3.需求
    在页面中,使用tag_name复数形式定位 input标签
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开注册A页面
url = "file:///" + os.path.abspath("./练习页面/注册A.html")
driver.get(url)
sleep(2)
# 4.使用tag_name复数形式定位 input标签
input_elements = driver.find_elements_by_tag_name("input")
# 查看结果类型
print(type(input_elements))
print(len(input_elements))
# 5.遍历列表打印每个元素的源码
for element in input_elements:
    print(element.get_attribute("outerHTML"))
# 6.关闭浏览器
driver.quit()
'''
输出结果:
<class 'list'>
16
<input type="textA" name="userA" id="userA" placeholder="账号A" required="" value="">
<input type="password" name="passwordA" id="passwordA" placeholder="密码A" value="">
<input type="telA" name="telA" id="telA" placeholder="电话A" class="telA" value="">
<input type="emailA" name="emailA" id="emailA" placeholder="电子邮箱A" value="">
......等等
'''

tag_name定位:

单数形式
当页面中如果定位的标签是唯一的,可以直接使用tag_name方法定位
如果所定位的标签在页面中的索引位置是第一个,也可以用tag_name方法定位

复数形式
复数定位形式:driver.find_elements_XXX
复数定位,返回的列表类型数据
遍历列表操作具体元素

5.by_link_text 定位

by_link_text通过超文本链接上的文字信息来定位元素,这种方式一般专门用于定位页面上的超文本链接

例如打开百度首页,定位点击超链接地图

<a class="mnav" name="tj_trmap" href="http://map.baidu.com">地图</a>

使用link_text定位百度首页地图链接

'''
1.学习目标:
    必须掌握selenium中超链接的定位方法
2.语法
    link_text  # 需要链接的全部文本
    driver.find_element_by_link_text(全部文本)
3.需求
    在页面中,使用定位连接的方法,访问百度网站,定位点击超链接地图。
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开页面
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.使用link_text定位
'''
注意:
连接的全部文本,表示<a>标签中的全部内容,有空格也要算。
如果有相同部分文本的元素,单数形式,定位第一个。
'''
linkText = driver.find_element_by_link_text("地图")
print(linkText.get_attribute("outerHTML"))
# 5.关闭浏览器
driver.quit()
'''
输出结果:
<a href="http://map.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">地图</a>
'''

复数形式:

# 定位一组标超链接文本全部内容相同的元素,很少用到。# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开页面
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.使用link_text定位
'''
注意:
连接的全部文本,表示<a>标签中的全部内容,有空格也要写。
'''
linkText = driver.find_elements_by_link_text("地图")
# 5.遍历列表打印每个元素的源码
for element in linkText:
    print(element.get_attribute("outerHTML"))
# 6.关闭浏览器
driver.quit()
'''
输出结果:
<a href="http://map.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">地图</a>
'''

6.by_partial_link_text 定位

当你不能准确知道超链接上的文本信息或者只想通过一些关键字进行匹配时,可以使 用by_partial_link_text这个方法来通过部分链接文字进行匹配

例如打开百度首页,定位点击超链接<hao123>

<a href="https://www.hao123.com" target="_blank" class="mnav c-font-normal c-color-t">hao123</a>

使用partial_link_text方法定位百度首页<hao123>链接

'''
1.学习目标:
    必须掌握selenium中超链接的定位方法
2.语法
    partial_link_text  # 需要连接部分文本
    driver.find_element_by_partial_link_text(部分文本)
        部分文本必须是连续的文字(中可包含空格)
3.需求
    在页面中,使用定位连接的方法,访问百度网站,定位点击超链接<hao123>。
'''
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开页面
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.使用by_partial_link_text定位
'''
注意:
连接的部分文本,表示<a>标签中的连续的部分内容,之中有空格也要算。
如果有相同部分文本的元素,单数形式,定位第一个。
'''
pLinkText = driver.find_element_by_partial_link_text("ao1")
print(pLinkText.get_attribute("outerHTML"))
# 6.关闭浏览器
sleep(2)
driver.quit()
'''
输出结果:
<a href="https://www.hao123.com" target="_blank" class="mnav c-font-normal c-color-t">hao123</a>
'''

复数形式:

# 定位一组标超链接文本目标内容相同的元素,很少用到。# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开页面
url = "http://www.baidu.com"
driver.get(url)
sleep(2)
# 4.使用by_partial_link_text定位
'''
注意:
连接的部分文本,表示<a>标签中的连续的部分内容,之中有空格也要算。
'''
pLinkText = driver.find_elements_by_partial_link_text("ao1")
# 5.遍历列表打印每个元素的源码
for element in pLinkText:
    print(element.get_attribute("outerHTML"))
# 6.关闭浏览器
driver.quit()
'''
输出结果:
<a href="https://www.hao123.com" target="_blank" class="mnav c-font-normal c-color-t">hao123</a>
'''

以上就是selenium的基础元素定位,下次讲解xpath和css定位方法,感兴趣的可以关注下。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

Selenium元素定位全攻略,让你轻松玩转自动化测试!,经验分享,软件测试,自动化测试,selenium,测试工具,压力测试,postman,单元测试,jmeter,自动化测试

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

Selenium元素定位全攻略,让你轻松玩转自动化测试!,经验分享,软件测试,自动化测试,selenium,测试工具,压力测试,postman,单元测试,jmeter,自动化测试

Selenium元素定位全攻略,让你轻松玩转自动化测试!,经验分享,软件测试,自动化测试,selenium,测试工具,压力测试,postman,单元测试,jmeter,自动化测试文章来源地址https://www.toymoban.com/news/detail-759644.html

到了这里,关于Selenium元素定位全攻略,让你轻松玩转自动化测试!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Android】小米手机 Root全攻略:轻松获取手机最高权限

    【Android】小米手机 Root全攻略:轻松获取手机最高权限

    需求 作为一个贫穷的米粉,目前为止买的手机都是小米的,一开始就冲着它的“发烧”而去,米1、米4、米8、K50,除了米8外,都刷过机,root过。 除了米1忽然有一天罢工之后,不能使用,其他手机都依然辛苦任职中。 K50 是最近买的,先想到的就是root掉,本来以为网上资料

    2024年02月08日
    浏览(10)
  • AI漫画小说推广操作全攻略,在家轻松日入200+

    AI漫画小说推广操作全攻略,在家轻松日入200+

    今天跟大家分享一个宝藏副业项目,操作非常简单,变现也非常可观,那就是AI漫画小说推广项目。在AI技术的推动下,小说推文正迎来革命性的变革,不再局限于传统的视频形式,而是以生动的漫画画面赢得观众的喜爱。 一个在互联网网赚圈摸索了5年的学者,从开始的处处

    2024年03月28日
    浏览(40)
  • AI绘画提示词全攻略,让你所想即所画!(附12000+图片提示词库)

    AI绘画提示词全攻略,让你所想即所画!(附12000+图片提示词库)

    这可能是你从来没有见过的生产模式。 提示词又成为魔法、咒语,在AI时代,掌握了提示词,你可以在一分钟之内写一篇文章,做一首歌曲,生成一张精致的图片。 大多数人用不好提示词的根本原因是他没有理解提示词的运行机制。 当你输入一个红色的帽子,Stable Diffusion并

    2024年02月05日
    浏览(17)
  • 轻松写出高质量内容:10款自媒体ai写作工具全攻略!

    轻松写出高质量内容:10款自媒体ai写作工具全攻略!

    在当今互联网时代,AI(人工智能)技术的快速发展使得许多传统工作都得到了极大的改进和提高效率。其中,AI写作软件在快速撰写高质量内容方面发挥了重要作用。本文将介绍备受赞誉的AI写作软件,并为您详细分析它们的特点和优势。 1.七燕写作 这是一个微信公众号,可

    2024年01月21日
    浏览(34)
  • 轻松写出高质量内容:5款自媒体ai写作工具全攻略!

    轻松写出高质量内容:5款自媒体ai写作工具全攻略!

    在当今互联网时代,AI(人工智能)技术的快速发展使得许多传统工作都得到了极大的改进和提高效率。其中,AI写作软件在快速撰写高质量内容方面发挥了重要作用。本文将介绍备受赞誉的AI写作软件,并为您详细分析它们的特点和优势。 1.飞鸟写作 这是一个微信公众号 面

    2024年01月19日
    浏览(33)
  • 猫头虎指南:如何轻松创建您的专属GPTs — 无代码AI定制全攻略

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月05日
    浏览(6)
  • MongoDB 索引全攻略

    MongoDB 索引全攻略

    目录 一、索引介绍         1.1 单字段索引         1.2 复合索引         1.3 多键索引         1.4 主键索引         1.5 TTL 索引         1.6 地理空间索引         1.7 哈希索引         1.8 创建索引时注意事项         1.9 索引效果查看  二、索引实现原理         2.1 为

    2024年04月27日
    浏览(7)
  • HackTheGame游戏全攻略

    HackTheGame游戏全攻略

    游戏链接 链接: 百度网盘 请输入提取码 提取码:bu1w HackTheGame游戏的玩法: 您将扮演一个黑客的角色,接受各种各样的任务,在不被发现的情况下,使用一些工具入侵他人的电脑,服务器并完成窃取资料,粉碎文件,植入病毒等操作.您有一共有两次机会,第三次被追踪到的话,您就会被捕

    2024年02月05日
    浏览(21)
  • Jenkins 插件安装方式全攻略

    Jenkins 插件安装方式全攻略

    在Jenkins 的安装向导页面中, 会有一步是否安装推荐的插件, 可以直接进行安装, 也可以跳过。 对于安装机器联网的状况, 安装插件相对方便,直接搜索插件安装, 但是也可能会出现无法在线安装的状况, 原因解析及解决方法 参考: Jenkins 在Windows下插件无法安装问题解

    2023年04月21日
    浏览(9)
  • 谷歌账号注册流程全攻略

    谷歌账号注册流程全攻略

    一、访问谷歌账号注册页面 首先,你需要访问谷歌账号注册页面。你可以直接点击此链接,或者在谷歌首页点击右上角的“登录”按钮,在弹出的登录框中点击“创建帐号”。 在注册页面,你需要填写以下个人信息: 名字:输入你的名字。 姓氏:输入你的姓氏。 用户名:

    2024年02月05日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包