selenium的八大元素定位方式

这篇具有很好参考价值的文章主要介绍了selenium的八大元素定位方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么是元素定位

根据元素的某个特征在网页中找到对应的元素,定位元素的目的是为了操作元素,在Web自动化中,定位元素是后续一切操作的前提条件。

2、元素的八大定位方式

2.1、id : 根据标签/元素的id属性值定位

一般情况下元素的id是唯一的,所以通过这个方法可以很轻松地找到元素。

eg:通过id定位百度的输入框并发送值

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 百度输入框的id值为kw,需要导入定位选择方式By
from selenium.webdriver.common.by import By

driver.find_element(By.ID, "kw").send_keys("python")

不能通过id定义的情况

  • id是动态变化的
  • 不存在id
  • id的属性值不唯一
  • id中有数字不用
2.2、name:根据标签/元素的name属性值定位

一般情况下元素的名称也是唯一的,所以通过名称可以找到元素。

eg:通过name定位百度的输入框并发送值

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 百度输入框的name值为wd,需要导入定位选择方式By
from selenium.webdriver.common.by import By

driver.find_element(By.NAME, "wd").send_keys("python")
2.3、tag_name:根据标签/元素的tag_name属性值定位

根据元素的标签名称来定位元素,因为一个页面上往往有多个同名的标签,所以这种方法的局限性较大。这个方法返回值的类型是一个webelement对象。

eg:定位input标签

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 定位input标签,需要导入定位选择方式By
from selenium.webdriver.common.by import By

element_input = driver.find_element(By.TAG_NAME, 'input')
2.4、class_name:根据标签/元素的class_name属性定位

根据元素的类名定位元素,需要注意的是作为定位条件的类名必须是唯一的,否则会定位不到想找的元素,当元素有多个类名时, 选择其中一个唯一的类名来定位。

selenium的八大元素定位方式,selenium,python

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 通过类名来定位这个元素,并输入Selenium WebDriver
driver.find_element(By.CLASS_NAME, "s_ipt").send_keys("python")

# 选择其中一个唯一的类名s_btn来定位元素, 中间的空格也可用使用.代替
driver.find_element(By.CLASS_NAME, "bg.s_btn").click()
2.5、link_text:根据超链接的文本进行定位

根据元素的链接文本来定位元素,适用于超链接元素,超链接元素的标签是a,在一个页面上,超链接文本一般是唯一的。返回值是一个WebElement对象

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 定位文本是新闻的超链接元素,并点击
driver.find_element(By.LINK_NAME,"新闻").click()
2.6、partial_link_text:根据超链接的模糊文本进行定位

根据元素的链接文本的一部分来定位元素,要注意选取的部分文本要唯一,否则定位不到需要找的元素。

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 在京东页面定位文本包含家用的超链接元素,并点击
driver.find_element(By.PARTIAL_LINK_NAME,"家用").click()
2.7、xpath:根据xpath表达式定位

特殊符号表示的含义:

/ :表示根或者子节点

//:任意节点

@ :表示当前的节点的对象

* :表示通配符,只针对标签名

[ ]:相当于过滤器

(1)、绝对路径

根据网页中的层级目录递进进行查找对应元素。

eg:查找百度的输入框,并发送元素“Python”

selenium的八大元素定位方式,selenium,python

PS:这个例子有两个查询结果,定位时会返回在前面的结果,这个例子不是很合适,但是我懒了。

# 创建浏览器对象driver
# 通过XPath定位用户名输入框
driver.find_element(By.XPATH,"/html/body/div/div/div/div/div/form/span/input").send_keys("四川")

(2)、//标签名[@属性名=属性值]

把相对路径和属性结合起来查找对应元素。

selenium的八大元素定位方式,selenium,python

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 定位百度首页输入框,输入Python
driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys("Python")

# 定位百度一下按钮,点击
driver.find_element(By.XPATH,'//input[@id="su"]').click()

(3)、//标签名[text()=值]

如果一个标签有文本,并且文本在页面中是唯一的,可以通过指定文本来定位元素。

eg:定位百度首页中的文本为“新闻”的内容

# 创建浏览器对象driver
# 定位文本是新闻的标签
driver.find_element(By.XPATH, "//a[text()='新闻']").click()

(4)、//标签名[contains(@ 属性,值)]

根据标签中包含的部分内容来定位。

eg:定位标签中包含 "百度一下" 的标签

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 定位标签中包含 "百度一下" 的标签, 并点击一下
driver.find_element(By.XPATH, '//input[contains(@value,"百度一下")]').click()

(5)、//标签名[starts-with(@ 属性,值)]

根据标签中开头的部分内容来定位。

eg:定位标签中以 "result_t" 开头的标签

selenium的八大元素定位方式,selenium,python

# 创建浏览器对象driver
# 定位标签中以 "result_t" 开头的标签
element = driver.find_element(By.XPATH, '//*[starts-with(@id,"result_t")]')

(6)、//标签名[@ 属性名1=值1 and @ 属性名2=值2]

如果通过一个属性不能准确地定位到元素,可以使用逻辑运算符and来指定多个属性定位元素。

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.XPATH,"//input[@id='kw' and @name='wd']").send_keys("Python")

# 定位百度一下按钮,点击
driver.find_element(By.XPATH,"//input[@id='su' and @value='百度一下']").click()

(7)、//标签[@ 属性名=值]/标签名[n]

当通过一个属性不能准确地定位到元素,可以使用逻辑运算符and来指定多个属性来定位元素。

eg:定位百度输入框并发送值“python”

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.XPATH,"//input[@id='kw' and @name='wd']").send_keys("Python")

(8)、//标签名[ends-with(@ 属性,值)]------已被移除

2.8、css_selector:根据样式表达式进行定位

(1)、#id:用元素的id属性进行定位

# 创建浏览器对象driver
# 定位百度一下输入框,输入Python
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("python")

(2)、 .class . class:以元素的类名进行定位

如果元素有一个class属性,就通过.class进行定位

如果元素有多个class属性,class类名之间用.来连接

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.CSS_SELECTOR, ".s_ipt").send_keys("python")

#定位百度一下按钮,这个元素有多个class值,可以指定多个类名定位,也可以选择其中一个唯一的类名来定位
driver.find_element(By.CSS_SELECTOR, ".bg.s_btn").click()

(3)、标签名:以元素的标签的名称进行定位

直接写标签名,前面不需要加任何符号

一般结合其他属性使用

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.CSS_SELECTOR, "input").send_keys("python")

(4)、标签名#id:以元素的标签名的名称和id属性进行定位

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.CSS_SELECTOR, "input#kw").send_keys("python")

(5)、标签名.class:以元素的标签名的名称和class属性进行定位

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.CSS_SELECTOR, "input.s_ipt").send_keys("python")

(6)、[属性名=值]:以属性的值进行定位

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.CSS_SELECTOR, "[name='wd']").send_keys("python")

(7)、[属性名1=值1][属性名2=值2]:以属性1的值1和属性2的值2进行定位

# 创建浏览器对象driver
# 定位百度输入框,输入Python
driver.find_element(By.CSS_SELECTOR, "[name='wd']").send_keys("python")

(8)、标签名[属性名=值]:以属性等于一个值进行定位;

标签名[属性名1=值1][属性名2=值2]:多个属性值进行定位

# 创建浏览器对象driver
# 标签和单个属性值进行定位,并发送值
driver.find_element(By.CSS_SELECTOR, "input[name='wd']").send_keys("python")

# 标签和多个属性值进行定位,并发送值
driver.find_element(By.CSS_SELECTOR, "input[name='wd']").send_keys("python")

(9)、标签名[属性名*=值]:以属性包含一个值进行定位

# 创建浏览器对象driver
# 定位百度一下按钮,点击
driver.find_element(By.CSS_SELECTOR, "input[value*='百度']").click()

(10)、标签名[属性名^=值]:以属性的开始值进行定位

# 创建浏览器对象driver
# 定位百度一下按钮,并点击
driver.find_element(By.CSS_SELECTOR, "input[value^='百度']").click()

(11)、标签名[属性名$=值]:以属性的结束值进行定位

# 创建浏览器对象driver
# 定位百度一下按钮,并点击
driver.find_element(By.CSS_SELECTOR, "input[value$='一下']").click()

(12)、标签名 > 子标签[属性名$=值] + 兄弟标签名

# 创建浏览器对象driver
driver.find_element(By.CSS_SELECTOR, '#s-top-left>a[href$="tieba.baidu.com/"] + a').click()

(13)、定义兄弟标签

a、标签名 > 子标签 :first-child

        定位标签下该子标签的第一个子标签

# 创建浏览器对象driver
# 定位百度输入框所在目录下的的第一个标签,输入Python
# 使用fist-child
driver.find_element(By.CSS_SELECTOR, "span#s_kw_wrap>input:first-child").send_keys("Python")

b、标签名 > 子标签 :nth-child(n)

        定位标签下该子标签的第n个子标签

# 创建浏览器对象driver
# 定位百度输入框,输入Python
# 使用nth-child(n)
driver.find_element(By.CSS_SELECTOR, "span#s_kw_wrap>input:nth-child(2)").send_keys("Python")

c、标签名 > 子标签 :last-child

        定位标签下该子标签的最后一个子标签-----慎用文章来源地址https://www.toymoban.com/news/detail-839658.html

# 创建浏览器对象driver
# 定位百度输入框,输入Python
# 使用last-child
driver.find_element(By.CSS_SELECTOR, "span#s_kw_wrap>input:last-child").send_keys("Python")

到了这里,关于selenium的八大元素定位方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【web自动化】selenium+python八大元素定位

    推荐:b站软件测试老白 注意点 1.有id才能能使用id定位 2.id不能重复 通过百度页面,演示如何查找id确定id是否重复,其他方式定位也可以这样搜索 代码如下(示例): 如果有多个class_name,可以使用 find_elements 和取下标的方式 例如:打开哔哩哔哩页面,有番剧,电影等等,他

    2024年01月21日
    浏览(82)
  • 自学Python 69 Selenium八大元素定位方法(新版BY方法)_selenium定位元素的方法和优缺点

    文章目录 Python Selenium八大元素定位方法(新版BY方法) 前言 一、常用的八种定位方法(新旧对比) 二、查看网页元素 三、八大元素定位示例 1、id定位 2、name定位 3、class定位 4、tag定位 5、link定位 6、partial_link定位 7、xpath定位 8、CSS定位 在学习使用Selenium对网页元素进行定位时

    2024年04月22日
    浏览(61)
  • 自学Python 69 Selenium八大元素定位方法(新版BY方法)

      在学习使用Selenium对网页元素进行定位时,发现很多教程依然使用老版的元素定位方法,但是对于新版selenium来说,已经弃用了之前的元素定位方法,所以在使用的时候会发现有报错,会被一条横线划掉。所以今天来总结一下新版selenium对网页元素进行定位的操作方法。

    2024年02月13日
    浏览(84)
  • Python+selenium自动化八大元素定位方法及实例(超详细)

    目录 一、selenium模块中的find_element_by_id方法无法使用 二、Python+selenium自动化八大元素定位方法 使用场景: 1、通过id属性定位:driver.find_element(By.ID,\\\"value\\\") 2、通过name属性定位:driver.find_element(By.NAME,\\\"value\\\") 3、通过class属性定位:driver.find_element(By.CLASS_NAME,\\\"value\\\") 4、通过tag_name属

    2024年02月19日
    浏览(47)
  • Selenium(一):八大元素定位

    find_element() 中 类型为空,默认为By.ID

    2024年04月23日
    浏览(74)
  • Selenium元素定位——八大方法详述

    元素:由标签头 + 标签尾 + 标签头和标签尾包括的文本内容; 元素的信息就是指元素的标签名及元素的属性; 元素的层级结构就是指元素之间相互嵌套的层级结构; 元素定位最终就是通过元素的信息或者元素的层级结构来进行元素定位; webdriver 提供了一系列的对象定位方

    2024年02月06日
    浏览(46)
  • selenium脚本编写及八大元素定位方法

    selenium脚本编写 上篇文章介绍了selenium环境搭建,搭建好之后就可以开始写代码了 基础脚本,打开一个网址 打开本地HTML文件 上篇文章我自己写了一个html文件,放在了当前路径下 第一种方式 通过绝对路径打开 第二种方式 通过相对路径打开 本质上也是通过方法把相对路径转为

    2024年01月16日
    浏览(52)
  • 【selenium模块-WEB自动化】八大网页元素定位方法(三)

    一、id 定位 标签的 id 具有唯一性,就像人的身份证。 二、name 定位 name 指定标签的名称,在页面中可以不唯一。 三、class 定位 class 指定标签的类名,在页面中可以不唯一。 四、tag 定位 每个 tag 往往用来定义一类功能,所以通过 tag 来识别某个元素的成功率很低,每个页面

    2024年02月15日
    浏览(50)
  • 3-UI自动化-八大元素定位,xpath定位方式和相关的常问面试题

    ♡ color{red}{heartsuit} ♡ 上篇我们了解了HTML页面的结构和常用的标签和属性,介绍2-UI自动化-HTML页面的构成和常见标签、属性。小白的话建议先看看,再来学习八大元素定位。 UI自动化面试基本上逃不了这道面试题。八大元素定位。 通过id属性 通过class属性,注意,表达式中

    2024年02月08日
    浏览(42)
  • python+selenium的web自动化测试之8种元素定位方式详解

    目录 前言 单一属性定位 通过元素的id 通过元素的name 通过元素的class 通过元素的标签名 通过元素的超链接文本 通过元素的部分超链接文本 XPTH定位 CSS定位 辅助定位工具 ​ 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确

    2023年04月16日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包