• Selenium元素定位


    目录

    一、通过id定位

    二、通过name定位

    三、通过xpath定位

    四、通过链接文本定义超链接定位

    五、通过标签名定位

    六、通过css定位


    在Selenium中可以通过多种方式来定位标签,返回标签元素对象 ,Selenium提供了下面的方法进行元素定位:

    1. find_element_by_id (返回一个元素)
    2. find_element(s)_by_class_name (根据类名获取元素列表)
    3. find_element(s)_by_name (根据标签的name属性值返回包含标签对象元素的列表)
    4. find_element(s)_by_xpath (返回一个包含元素的列表)
    5. find_element(s)_by_link_text (根据连接文本获取元素列表)
    6. find_element(s)_by_partial_link_text (根据链接包含的文本获取元素列表)
    7. find_element(s)_by_tag_name (根据标签名获取元素列表)
    8. find_element(s)_by_css_selector (根据css选择器来获取元素列表)

    提示:elements是寻找多个元素会返回一个​list

    除了上面这些公有的方法,我们还有2个私有的方法来帮助页页面对象的定位。

    这两个方法就是find_element​(by=By.CLASS_NAME, value=name)和​find_elements(by=By.CLASS_NAME, value=name)

    (新版的Python已经不支持公有的方法,需要写成私有的方法来定位 ):

    在使用​find_element​和​find_elements时,我们需要先导入

    from selenium.webdriver.common.by import By
    借助 By 来传入定位方式,需要先引入,主要是为了防止定位方式写错。

    一、通过id定位

    如果你知道元素的​id​属性,那么就使用​id​定位吧。在​id​定位里,会返回第一个​id​属性匹配的元素,如果没有元素匹配,会抛出​NoSuchElementException​异常。

    1. driver.find_element(By.ID, 'value')
    2. # value为标签元素

     示例:

    通过百度搜索框标签,进行定位输入

    搜索框的id为‘kw’

    driver.find_element(By.ID, 'kw')

    二、通过name定位

    如果你知道元素的​name​属性,那么就用这个定位吧。在​name​定位里,会返回第一个​name​属性匹配的元素,如果没有元素匹配,会抛出​NoSuchElementException​异常。

    driver.find_element(By.NAME,'value')

     示例:

    如上图,百度搜索框的name是‘wd‘

    driver.find_element(By.NAME,'wd')

    三、通过xpath定位

    driver.find_element(By.XPATH, 'value')

     示例

    百度百度搜索框的xpath是’//*[@id="kw"]‘

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

    四、通过链接文本定义超链接定位

    如果你知道一个锚标签使用了什么文本,那么就使用这种方法。在超链接定位里,会返回第一个文本属性匹配的链接,如果没有元素匹配,会抛出​NoSuchElementException​异常。

    1. driver.find_element(By.LINK_TEXT,'value')
    2. driver.find_element(By.PARTIAL_LINK_TEXT, 'value')

    示例:

    已有HTML代码

    1. <html>
    2. <body>
    3. <p>Are you sure you want to do this?p>
    4. <a href="continue.html">Continuea>
    5. <a href="cancel.html">Cancela>
    6. body>
    7. <html>

     可以这样定位 ​continue.html​链接:

    1. driver.find_element(By.LINK_TEXT,'Continue')
    2. driver.find_element(By.PARTIAL_LINK_TEXT, 'Conti')

    五、通过标签名定位

    知道元素标签名就使用这个定位,如果没有元素匹配,会抛出​NoSuchElementException​异常。

    driver.find_element(By.TAG_NAME,'value')

    示例:

    1. Welcome

    2. Site content goes here.

    可以这样定位​h1​元素:

    driver.find_element(By.TAG_NAME,'h1')

    六、通过css定位

    知道​class​就使用这个定位,只返回匹配的第一个,无元素匹配,会抛出​NoSuchElementException​异常

    driver.find_element(By.CLASS_NAME,'value')

    示例:

    用class定位百度搜索框

    driver.find_element(By.CLASS_NAME, 's_ipt')

     

  • 相关阅读:
    轻松整理文件夹,将视频文件全部归类到另一个文件夹!
    降级、熔断和限流———一看就会
    海康Visionmaster-全局脚本:通过通讯触发快速匹配 模块换型的方法
    写出干净的 JavaScript 5 个小技巧
    【LeetCode】41. 缺失的第一个正数
    Spring Boot Controller
    python 之yaml库使用总结
    【毕设项目推荐】学长做过的那些有趣的毕设项目 - 毕设项目分享 (单片机 嵌入式 物联网 stm32)
    阿里开源玄铁RISC-V系列处理器,推动RISC-V架构走向成熟
    力扣(144.94)补9.4
  • 原文地址:https://blog.csdn.net/m0_61491995/article/details/126327988