Selenium元素定位——八大方法详述

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

一、元素的概念

元素:由标签头 + 标签尾 + 标签头和标签尾包括的文本内容;

元素的信息就是指元素的标签名及元素的属性;

元素的层级结构就是指元素之间相互嵌套的层级结构;

元素定位最终就是通过元素的信息或者元素的层级结构来进行元素定位;

二、元素定位方法

webdriver 提供了一系列的对象定位方法,常用的有以下8种:

定位一个元素 定位多个元素 含义
find_element(By.ID,value) find_elements(By.ID,value) 通过元素id定位
find_element(By.NAME,value) find_elements(By.NAME,value) 通过元素name定位
find_element(By.XPATH,value) find_elements(By.XPATH,value) 通过xpath表达式定位
find_element(By.LINK_TEXT,value) find_elements(By.LINK_TEXT,value) 通过完整超链接定位
find_element(By.PARTIAL_LINK_TEXT,value) find_elements(By.PARTIAL_LINK_TEXT,value) 通过部分链接定位
find_element(By.TAG_NAME,value) find_elements(By.TAG_NAME,value) 通过标签定位
find_element(By.CLASS_NAME,value) find_elements(By.CLASS_NAME,value) 通过类名进行定位
find_element(By.CSS_SELECTOR,value) find_elements(By.CSS_SELECTOR,value) 通过css选择器进行定位

(一)根据id定位

在HTML当中,id属性是唯一标识一个元素的属性,因此在selenium当中,通过id来进行元素的定位也较为常用。
百度搜索框的元素如图所示:
Selenium元素定位——八大方法详述
百度搜索框元素html结构:

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

元素定位(下面有代码详细,此处仅简单展示方法):

element = web.find_element(By.ID, "kw") 

(二)根据name定位

在HTML当中,name属性和id属性的功能基本相同,只是name属性并不是唯一的,如果遇到没有id标签的时候,我们可以考虑通过name标签来进行定位。

百度搜索框元素html结构:

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

元素定位(下面有代码详细,此处仅简单展示方法):

element = web.find_elements(By.NAME,"wd")   

(三)根据class name定位

我们也可以基于class属性来定位元素。通常当我们看到有多个并列的元素如list表单,class用的都是共用同一个。

百度搜索框元素html结构:

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

元素定位(下面有代码详细,此处仅简单展示方法):

element = web.find_element(By.CLASS_NAME,"s_ipt")  

(四)根据tag定位

HTML是通过tag来定义一类功能的,比如input是输入,table是表格,tbody是表格主体等。每个元素其实就是一个tag,由于一个tag用来定义一类功能,一个网页往往有很多同类tag,所以很难通过tag去区分不同的元素。
Selenium元素定位——八大方法详述
百度搜索框元素html结构:

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

元素定位(下面有代码详细,此处仅简单展示方法):

element = web.find_elements(By.TAG_NAME,"input")

由于百度首页有很多标签名字都是”input",因此上述代码只会定位到网页的第一个“input”标签。

(五)根据link text定位

通过超链接的文本定位元素。

百度上方超链接”新闻“元素如图所示:
Selenium元素定位——八大方法详述
百度上方超链接”新闻“元素元素html结构:

<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>

元素定位(下面有代码详细,此处仅简单展示方法):

element = web.find_element(By.LINK_TEXT,"新闻")

(六)根据partial link text定位

有时候一个超链接的文本很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,进行模糊匹配。

百度上方超链接”新闻“元素html结构:

<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>

元素定位(下面有代码详细,此处仅简单展示方法):

element = web.find_element(By.LINK_TEXT,"新")

(七)根据XPath定位

Xpath是一种在XML和HTML文档中查找信息的语言,通过Xpath路径来定位元素的时候也是分绝对路径和相对路径。
XPath比较复杂,但十分好用,具体可看小编的另一篇文章:
百度搜索框元素html结构:

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

xpath定位表达式

//*[@id="kw"]

Python通过xpath定位语句

element = web.find_element(By.XPATH,'//*[@id="kw"]')

(八)根据css selector定位

css selector可以通过很多方式定位元素
ID:

element = web.find_element(By.CSS_SELECTOR,"#kw")

class name:

element = web.find_element(By.CLASS_NAME,"s_ipt")

属性选择器
根据标签中的属性来定位元素, 格式: [属性名=”属性值”],或标签名[属性名=属性值]。如果属性是唯一的,那么标签名可以不用写。

百度搜索框元素html结构:

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

元素定位:文章来源地址https://www.toymoban.com/news/detail-461728.html

element = web.find_element_by_css_selector('[id="kw"]') 
element = web.find_element_by_css_selector('input[id="kw"]') 

三、代码示例

"""
元素定位:
    ID = "id"                                   通过id元素定位
    XPATH = "xpath"                             通过xpath定位
    LINK_TEXT = "link text"                     通过链接文本定位
    PARTIAL_LINK_TEXT = "partial link text"     通过部分链接文本定位
    NAME = "name"                               通过标签名称定位
    TAG_NAME = "tag name"                       通过标签名称定位
    CLASS_NAME = "class name"                   通过css class定位
    CSS_SELECTOR = "css selector"               通过css选择器
"""
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
class TestCase(object):
    def setup(self):
        """
        Service: 传入 chromedriver 的路径
        driver: 创建会话 session 和 将后续的代码传入到 chromedriver 并且执行
        :return:
        """
        service = Service(executable_path=ChromeDriverManager().install()) 
        self.driver = webdriver.Chrome(service=service)
        self.driver.get("https://www.baidu.com/")
        self.driver.maximize_window()
    def teardown(self): 
        self.driver.quit()        #在case执行完后关闭浏览器
    # todo 通过id元素定位 id 是唯一的
    def test_id(self):
        # 1 对象 driver 2 element
        element = self.driver.find_element(By.ID, "kw")    #kw为ID内容,通过抓包取得,此条为搜索框
        element.send_keys("任意内容")      #填入搜索框的内容
        print(dir(element))
        print(type(element))
        # <class 'selenium.webdriver.remote.webelement.WebElement'>#element类型
        self.driver.find_element(By.ID, "su").click()
        sleep(2)     #页面展示两秒,可根据需求自行调节
    # todo 通过标签名称定位 name 方法可能定位到多个元素,返回第一个
    def test_name(self):
        ele = self.driver.find_elements(By.NAME,"wd")      #wd为name内容,通过抓包取得,此条为搜索框
        print(ele)
        ele[0].send_keys("任意内容")       #填入搜索框的内容
        self.driver.find_element(By.ID,"su").click()
        sleep(3)
    # todo 通过链接文本定位
    def test_link_text(self):
        sleep(4)
        self.driver.find_element(By.LINK_TEXT,"登录").click()
        sleep(4)
     # todo 通过部分链接文本定位
    def test_partial_link_text(self):
        self.driver.find_element(By.PARTIAL_LINK_TEXT,"登").click()
        sleep(3)
     # todo 通过标签名称定位 返回一个标签列表 通过下表可以取值
    def test_tag_name(self):
        input = self.driver.find_elements(By.TAG_NAME,"input")
        print(input)
        sleep(3)
     #todo 通过xpath定位 路径
    def test_xpath(self):
        sleep(2)
        self.driver.find_element(By.XPATH,'//a[span="4"]').click()
        sleep(3)
        self.driver.find_element(By.XPATH,'//ur[@class="s-hotsearch-content]/li[4]').click()
        sleep(3)
    #todo 通过css选择器
    def test_css_selector(self):
        self.driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("任意内容")
        self.driver.find_element(By.ID,"su").click()
        sleep(3)
        self.driver.close()
    #todo 通过css class定位
    def test_class_name(self):
        self.driver.find_element(By.CLASS_NAME,"s_ipt").send_keys('任意内容')
        self.driver.find_element(By.CLASS_NAME,"s_btn").click()
        sleep(3)
        self.driver.close()

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

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

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

相关文章

  • 【selenium模块-WEB自动化】八大网页元素定位方法(三)

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

    2024年02月15日
    浏览(36)
  • 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日
    浏览(36)
  • Selenium(一):八大元素定位

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

    2024年04月23日
    浏览(30)
  • selenium的八大元素定位方式

    1、什么是元素定位 根据元素的 某个特征 在网页中找到对应的元素,定位元素的目的是为了操作元素,在Web自动化中,定位元素是后续一切操作的前提条件。 2、元素的八大定位方式 2.1、id : 根据标签/元素的id属性值定位 一般情况下元素的id是唯一的,所以通过这个方法可

    2024年03月14日
    浏览(35)
  • 2.Python中selenium八大元素定位

    目录 如何进行元素定位 浏览器开发者工具介绍 一、id属性定位 二、name定位 三、class_name定位 四、tag_name定位 五、link_text定位 六、partail_link_text定位 七、xpath定位 7.1 选取节点 7.2 谓语 7.3 轴 7.4 函数 7.5 逻辑运算 八、css定位 8.1 css的定义 8.2 css定位策略 1.id选择器 2.class选择器

    2024年02月04日
    浏览(32)
  • 【web自动化】selenium+python八大元素定位

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

    2024年01月21日
    浏览(70)
  • 【selenium】八大元素定位方式|xpath css id name...

    目录 一、基础元素定位 二、cssSelector元素定位——通过元素属性定位 三、xpath元素定位——通过路径  1 、xpath绝对定位 (用的不多) 缺点:一旦页面结构发生变化(比如重新设计时,路径少两节),该路径也随之失效,必须重新写 2、 xpath相对定位 2.1  路径解释: 2.2  定

    2024年02月22日
    浏览(39)
  • 自动化测试之八大元素定位方式(python3.10+selenium4)

    元素的定位是自动化测试核心。要操作一个对象,首先要识别定位或找到这个对象。为了实现网页整体布局,我们先要知道,一个元素,是如何定位到页面上的某个位置的,这就是元素定位。 系统环境 Windows 11 📌 python3.10.5 🔖 selenium 4.8.0 🚩 注意:以下每种定位方式均有一

    2024年02月03日
    浏览(44)
  • 关于Python中使用selenium八大定位方法

    1.通过id元素定位                             .find_element_by_id(\\\"id\\\") 2.通过name元素定位                       .find_element_by_name(\\\"name\\\")     3.通过路径导航定位                         .find_element_by_xpath(\\\"xpath\\\")          说明 :右键所选的网页元素,点击copy,点击copy ,x

    2023年04月23日
    浏览(36)
  • 自动化测试(二)selenium八大获取元素方法及对象操作

    目录 webdriver API 脚本实例 元素的定位 1. 通过id定位: 2. 通过name方式定位 3. 通过tag name(标签名)定位 4. 通过class name (类名)方式定位 5. 通过CSS 方式定位 6. 通过xpath方式定位 7. link text定位 8. Partial link text 定位 操作测试对象  鼠标点击与键盘输入 submit 提交表单 text 获取

    2024年02月03日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包