首页 > 编程语言 >Python元素定位方式总结

Python元素定位方式总结

时间:2023-02-22 11:59:24浏览次数:37  
标签:定位 name Python 元素 driver element div find

一,常用的8种定位方式

  • id定位

  driver.find_element_by_id("id 值")

  driver.find_element(by = "id", value = "ID值" )

  • name定位

   单个元素:

    driver.find_element_by_name("name值")

    driver.find_element(by = "name", value = "name值")

   多个元素:

    driver.find_elements_by_name("name值")

    driver.find_elements(by = "name", value = "name值")

  • class name定位

   单个元素:

    driver.find_element_by_class_name("class 属性值")

    driver.find_element(by = "class name", value = "class 属性值")

   多个元素:

    driver.find_elements_by_class_name("class 属性值")

    driver.find_elements(by = "class name", value = "class 属性值")

  • tag定位

   单个元素:

    driver.find_element_by_tag_name("标签名称")

    driver.find_element(by = "tag name", value = "标签名称")

   多个元素:

    driver.find_elements_by_tag_name("标签名称")

    driver.find_elements(by = "tag name", value = "标签名称")

  • link定位

   单个元素:

    driver.find_element_by_link_text("链接全部文字内容")

    driver.find_element(by = "link text", value = "链接全部文字内容")

   多个元素:

    driver.find_elements_by_link_text("链接全部文字内容")

    driver.find_elements(by = "link text", value = "链接全部文字内容")

  • partial_link定位

   单个元素:

    driver.find_element_by_partial_link_text("链接部分文字内容")

    driver.find_element(by = "partial link text", value = "链接部分文字内容")

   多个元素:

    driver.find_elements_by_partial_link_text("链接部分文字内容")

    driver.find_elements(by = "partial link text", value = "链接部分文字内容")

  • xpath定位

   单个元素:

    driver.find_element_by_xpath("xpath 定位表达式")

    driver.find_element(by = "xpath", value = "xpath 定位表达式")

   多个元素:

    driver.find_elements_by_xpath("xpath 定位表达式")

    driver.find_elements(by = "xpath", value = "xpath 定位表达式")

  • css定位

   单个元素:

    driver.find_element_by_css("css定位表达式")

    driver.find_element(by = "css", value = "css定位表达式")

   多个元素:

    driver.find_elements_by_css("css 定位表达式")

    driver.find_elements(by = "css", value = "css定位表达式")

二,Xpath定位

  • 使用绝对路径定位元素

    /html/body/div/input[@value="查询"] 不建议使用

  • 使用相对路径定位元素

    //input[@value="查询"]

  • 使用索引号定位元素

    //div[last()-1]/a  倒数第二个div元素下的a标签

    //div/input[position()<2]  div元素下input的位置序列号小于2的input标签

  • 使用页面元素多个属性值定位元素

    //div[@name="div1" and @value="div2"]/input[@name="div1input"]

  • 使用模糊属性值定位元素

    //img[starts-with(@alt,"div1")  查找属性alt的属性值以div1开始的页面元素

    //img[contains(@alt,"img")]  查找属性alt的属性值包含img的页面元素

  • 使用xpath轴定位元素

    //div[@name="div1"]/parent::input  查找name属性值为div1的div元素的父级input元素

    //div[@name="div1"]/child:img  查找name属性值为div1元素的子级img元素

    //div[@name="div1"]/following::img  查找name属性值为div1的div元素后面的所有img元素

    //div[@name='div1']/following-sibling::img  查找name属性值为div1的div元素后面所有兄弟img元素

    //div[@name='div1']/preceding::img  查找name属性值为div1的div元素前面的所有img元素

    //div[@name='div1']/preceding-sibling::img[1]  查找name属性值为div1的div元素前面的所有兄弟中的第一个img元素

    //div[@name='div1']/ancestor::img  查找name属性值为div1的div元素的所有上级的img元素

    //div[@name='div1']/descendant::img  查找name属性值为div1的div元素的所有下层的img元素

  • 使用页面元素的文本定位元素

    //a[contains(text(), "百度")]  查找文本是“百度”的元素

    //a[text()="搜狐"]  查找文本是“搜狐”的元素

  • 使用xpath运算符定位元素

    //div[a>9]  子元素中有a元素,文本值>9的div元素

    //div[a<10 and span =13]  子元素中有a元素,文本值>9 同时子元素span文本值=13的div元素

三,Css定位

  •  CSS定位方法

    driver.find_element_by_css_selector()

  • CSS常用策略

    1. id选择器:driver.find_element_by_css_selector("#su")  查找id为su的元素

    2. class选择器:driver.find_element_by_css_selector(".bg_s_btn")  查找class属性值为bg_s_btn的元素

    3. 元素选择器:driver.find_element_by_css_selector("input")  查找所有input元素

    4. 属性选择器:driver.find_element_by_css_selector("[name='ie']")  查找name属性为ie的元素

    5. 层级选择器:driver.find_element_by_css_selector("div>[name='ie']")  查找div下的name属性为ie的元素  >可用空格代替  注意:直接子节点才能使用

    6. CSS延伸:

      input[type^='p']  找一个input元素,type属性的值以p开头

      input[type$='d']  找一个input元素,type属性的值以d结尾

      input[type*='w']  找一个input元素,type属性的值包含w

四,CSS元素定位与XPATH元素定位的对比

定位方式 XPATH CSS
元素名 //input input
id //input[@id='su'] #su
class //input[@class='su'] .su
属性

//*[starts-with(@属性名,'XXX')]

//*[contains(@属性名, 'XXX')]

//*[text()="XXX"]

input[type$='XXX']

input[type*='XXX']

input[type^='XXX']

 

 

    

标签:定位,name,Python,元素,driver,element,div,find
From: https://www.cnblogs.com/linda-sunshine/p/17143612.html

相关文章

  • 用Python实现ChatGPT智能机器人
    最近,ChatGPT突然大火,说是十分的智能,可以写诗,写报告,甚至写论文,报着试试看的态度,我也研究了一下,找了很多资料,写了一个智能机器人的小demo。 因为ChatGPT依赖于OpenAI,所以,......
  • js操作shadow-root内的DOM元素
    其实就是documentfragment元素,就是动态生成的文档碎片元素。1,项目中在DOM结构里遇到了shadow-root(open),用JS方法无法直接获取其内的DOM元素2、shadow DOMWebcompon......
  • 《python数据分析与挖掘实战》学习指南
     要求:1、能够发现数据:对数据进行质量分析(异常值分析之3sigma原则、箱型图)2、画图:对数据进行特征分析,一般可通过绘制图表(更优的是制作视频)、计算某些特征量等手段进行数......
  • python 怎么保留小数
    使用字符串格式化大部分语言都可以使用字符串格式化的方法来实现保留两位小数的效果,python也不例外:a=3.1415926print("%.2f"%a)#%代表格式化输出,.2代表小数点后保......
  • python+playwright 学习-8.如何在控制台调试定位(Inspect selectors)
    前言在运行selenium脚本的时候,我们通常习惯用sleep去让页面暂停,打开console输入$(selector)去调试定位页面的元素。有时候明明页面能找到元素,代码运行却找不到,很是郁......
  • python 删除大于超过一定时间文件
    importosfromdatetimeimportdatetime,timedeltapath="."if__name__=='__main__':forroot,firs,filesinos.walk(path):forfileinfiles......
  • 【python】python基本语法
    字符串字符串是否包含子字符串两种方法:[find()][in]/[notin]//方法一ifstring1.find(string2):print("foundstring2instring1")//方法二ifstring2in......
  • python+playwright 学习-7.录制生成脚本
    前言playwright可以支持自动录制生成脚本,也就是说只需要在页面上点点点,就可以自动生成对应的脚本了。启动运行Playwright具有开箱即用的生成测试的能力,是快速开始测试......
  • Python中函数参数是如何传递的?
    Python函数相比对于多数程序员来说不陌生吧,那么Python函数中的参数是如何传递的呢?首先我将会以代码图文的形式给大家展现以下,看看是不是和您所认知的Python函数一样的结果?......
  • 一文了解Python协程本质
    关于Python协程我觉得当你学到一定程度的时候一定要懂,比如你在对代码进行优化或者提升速度时,就不得不使用异步编程,加上现在有很多的优秀第三方库都可以实现异步编程,从而让......