selenium获取元素定位的方法总结(动态获取元素)

 更新时间:2024年02月01日 11:03:55   作者:墨痕诉清风  
要想操作一个元素,首先应该识别这个元素,人有各种的特征(属性),可以通过其特征找到人,同理,界面的某个元素会有各种的特征(属性),可以通过这个属性找到这对象,本文给大家介绍了python selenium获取元素定位的8种方法,需要的朋友可以参考下

元素

要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),可以通过其特征找到人,如通过身份证号、姓名、家庭住址。同理,界面的某个元素会有各种的特征(属性),可以通过这个属性找到这对象。

例如:

driver.find_element(By.CSS_SELECTOR, 'img[title="点击图片重新获取验证码"]')

该代码寻找属性标识着为 “点击图片重新获取验证码图” 的图片验证码。

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

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

查看元素信息

选中元素,右键点击“检查”,即可查看到该控件的所有属性 

元素定位

selenium提供了常用的8种方法:

定位一个元素

定位多个元素

  • 通过元素id定位
    • find_element_by_id

    • find_elements_by_id

  • 通过元素name定位

    • find_element_by_name

    • find_elements_by_name

  • 通过xpath表达式定位

    • find_element_by_xpath

    • find_elements_by_xpath

  • 通过完整超链接定位

    • find_element_by_link_text

    • find_elements_by_link_text

  • 通过部分链接定位

    • find_element_by_partial_link_text

    • find_elements_by_partial_link_text

  • 通过标签定位

    • find_element_by_tag_name

    • find_elements_by_tag_name

  • 通过类名进行定位

    • find_element_by_class_name

    • find_elements_by_class_name

  • 通过css选择器进行定位

    • find_element_by_css_selector

    • find_elements_by_css_selector

通过元素id定位

find_element_by_id("kw")?

通过元素name定位

find_element_by_id("kw")?

通过xpath表达式定位

Xpath是一种在XMLHTML文档中查找信息的语言,通过Xpath路径来定位元素的时候也是分绝对路径和相对路径。

绝对路径

鼠标单机右键-Copy-Copy full XPath即可获取其XPath绝对路径

/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input

selenium通过xpath定位语句: 

find_element_by_xpath('/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input')

相对路径

鼠标单机右键-Copy-Copy XPath即可获取其XPath相对路径

//*[@id="kw"]

selenium通过xpath定位语句: 

find_element_by_xpath('//*[@id="kw"]')

相对路径的xpath定位表达式更加简洁,但是偶然会出现错误的寻址,但如果可以推荐使用相对路径的xpath表达式。

通过完整超链接定位

find_element_by_link_text('文库')

通过部分链接定位

find_element_by_partial_link_text('库')

通过标签定位

HTML是通过tag来定义一类功能的,比如input是输入,table是表格,tbody是表格主体等。每个元素其实就是一个tag,由于一个tag用来定义一类功能,一个网页往往有很多同类tag,所以很难通过tag去区分不同的元素。

find_element_by_tag_name('input')?

通过类名进行定位

find_element_by_class_name('s_ipt')

如果class的值中有空格,则需要借助CSS选择器。

通过css选择器进行定位

Selenium官网当中是更加推荐Css Selector()方法来进行页面元素的定位的,Css定位可以通过id选择器、class选择器、标签选择器和属性选择器。

id选择器

通过 # 来定义,通过元素的id属性来定位

find_element_by_css_selector("#kw")?

class选择器

通过 .来定义,通过元素的class属性来定位

find_element_by_css_selector(".s_ipt")?

标签选择器

通过标签的名字来定位元素

find_element_by_css_selector("input")?

属性选择器

find_element_by_css_selector('[id="kw"]')?
find_element_by_css_selector('input[id="kw"]')?

定位带空格的复合class属性

以百度上方栏目元素为例,其class属性带有空格。

class="s-top-left-new?s-isindex-wrap"

直接通过class属性定位是会报错的,需要通过css selector按class属性定位。

find_element_by_css_selector('[class="s-top-left-new?s-isindex-wrap"]')

selenium 4.0以后版本用法

from?selenium.webdriver.common.by?import?By
element?=?web.find_element(By.ID,'kw')
element?=?web.find_element(By.NAME,'wd')
element?=?web.find_element(By.CLASS_NAME,'s_ipt')
element?=?web.find_element(By.TAG_NAME,'input')
element?=?web.find_element(By.LINK_TEXT,'新闻')
element?=?web.find_element(By.PARTIAL_LINK_TEXT,'闻')
element?=?web.find_element(By.XPATH,'//*[@id="kw"]')
element?=?web.find_element(By.CSS_SELECTOR,'#kw')
element?=?web.find_element(By.CSS_SELECTOR,'[id="kw"]')
element?=?web.find_element(By.CSS_SELECTOR,'input[id="kw"]')

以上就是selenium获取元素定位的8种方法总结(动态获取元素)的详细内容,更多关于selenium元素定位的资料请关注脚本之家其它相关文章!

相关文章

  • python Tkinter版学生管理系统

    python Tkinter版学生管理系统

    这篇文章主要为大家详细介绍了python Tkinter版学生管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 在Django框架中编写Context处理器的方法

    在Django框架中编写Context处理器的方法

    这篇文章主要介绍了在Django框架中编写Context处理器的方法,Django是重多高人气Python框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • Python3.9.1中使用split()的处理方法(推荐)

    Python3.9.1中使用split()的处理方法(推荐)

    这篇文章主要介绍了Python3.9.1中使用split()的处理方法(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python神经网络学习使用Keras进行简单分类

    python神经网络学习使用Keras进行简单分类

    这篇文章主要为大家介绍了python神经网络学习使用Keras进行简单分类,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python里使用正则的findall函数的实例详解

    python里使用正则的findall函数的实例详解

    这篇文章主要介绍了python里使用正则的findall函数的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • Python2和Python3中urllib库中urlencode的使用注意事项

    Python2和Python3中urllib库中urlencode的使用注意事项

    这篇文章主要介绍了Python2和Python3中urllib库中urlencode的使用注意事项,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • 跟老齐学Python之啰嗦的除法

    跟老齐学Python之啰嗦的除法

    python 除法运算 比较奇怪,和别的程序语言不大一样。从Python2.2开始,除法运算符除了/之外,又引入了一个除法运算符://,后一种运算符只用于进行整除法。对于除法运算符/,默认时的行为跟Python2.2之前的一样,它视操作数而定,既可以进行整除,也可以进行真除法。
    2014-09-09
  • jupyter notebook保存文件默认路径更改方法汇总(亲测可以)

    jupyter notebook保存文件默认路径更改方法汇总(亲测可以)

    安装Anaconda后,新建文件的默认存储路径一般在C系统盘,那么路径是什么呢?如何更改jupyter notebook保存文件默认路径呢?今天小编就这一问题通过两种方法给大家讲解,需要的朋友跟随小编一起看看吧
    2021-06-06
  • Python爬虫必备之Xpath简介及实例讲解

    Python爬虫必备之Xpath简介及实例讲解

    xpath是一种在XML文档中定位元素的语言,常用于xml、html文件解析,比css选择器使用方便,下面这篇文章主要给大家介绍了关于Python爬虫必备之Xpath简介及实例的相关资料,需要的朋友可以参考下
    2022-04-04
  • 如何将写好的.py/.java程序变成.exe文件详解

    如何将写好的.py/.java程序变成.exe文件详解

    有时候我们需要将自己写的代码打包成exe文件,给别人使用需要怎么办呢,下面这篇文章主要给大家介绍了关于如何将写好的.py/.java程序变成.exe文件的相关资料,需要的朋友可以参考下
    2023-01-01

最新评论