一、元素定位基本方法

1、如何进行元素定位?

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

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

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

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

2、浏览器开发者工具介绍

浏览器开发者工具主要是用来查看元素的信息,同时也可以查看接口的相关信息;

浏览器开发者工具不需要安装,浏览器自带;

浏览器开发者工具的启动:

  1. F12;
  2. 选中元素右键点击检查/检查元素(谷歌浏览器、火狐浏览器);

浏览器开发者工具使用:

  1. 点击浏览器开发者工具左上角的元素查看器按钮;
  2. 再点击想要查看的元素

3、元素定位

八种元素定位方法

3.1、ID定位

1、通过元素的ID属性值来进行元素定位(在html标准规范中ID值是唯一的);

2、定位方法:find_element_by_id(id) #id参数表示的是id的属性值;(定位的元素必须有ID属性)

driver.find_element_by_id("kw")

3.2、NAME定位

1、通过元素的NAME属性值来进行元素定位;(name属性值在html页面中是可以重复的);

2、定位方法:find_element_by_name(name) #name参数表示的是name的属性值;(定位元素必须有NAME属性)

driver.find_element_by_name("wd")

3.3、CLASS_NAME定位

1、通过元素的CLASS属性值来进行元素定位;(class属性值在html页面中是可以重复的);

2、定位方法:find_element_by_class_name(class_name) #class_name参数表示的是class的属性值;(定位元素必须有class属性)

注意:class属性值有多个时(用空格隔开),仅需要其中一个属性值:(但若是使用Xpath属性定位时,需要用到全部属性值)
比如:

driver.find_element_by_class_name("s_ipt")

3.4、TAG_NAME定位

1、通过元素的标签名称来进行元素定位,在同一个html页面当中,相同标签元素会有很多;(不建议使用)

2、定位方法:find_element_by_tag_name(tag_name) #tag_name参数表示的是元素的标签名;(定位元素必须有标签名)如果有重复的元素定位到的元素默认都是第一个;

driver.find_element_by_tag_name("input")

3.5、LINK_TEXT定位

1、通过超链接的全部文本信息来进行元素定位(主要用来定位a标签);

2、定位方法:find_element_by_link_text(link_text) #link_text参数表示的是超链接(a标签)的全部文本内容;

driver.find_element_by_link_text("新闻")
driver.find_element_by_link_text("地图")

3.6、PARTIAL_LINK_TEXT定位

1、通过超链接的局部文本信息来进行元素定位(主要用来定位a标签);

2、定位方法:find_element_by_partial_link_text(partial_link_text) #partial_link_text参数表示的是超链接(a标签)的局部文本内容;

find_element_by_partial_link_text("访问")
find_element_by_partial_link_text("网站")

3.7、定位一组元素

1、定位一组元素的方法

find_elements_by_id(id)
find_elements_by_tag_name(tag_name)

2、定位一组元素返回的值是一个里列表;

3、可以通过下标来使用列表中的元素;(下标以0开始)

二、XPATH定位及CSS定位

在页面当中,有一些元素无法通过元素的信息精准的定位到,所以需要Xpath及Css定位。

1、XPATH定位

1.1、什么是XPATH?

1、Xpath是XML Path的简称,是一门在XML文档中查找元素信息的语言;

2、HTML可以看做是XML的一种实现;

XML:是一种标记语言,用于数据的存储和传递。后缀.xml结尾。

1.2、XPATH定位策略

路径定位

属性定位

属性与逻辑结合

属性与层级结合

1.2.1、路径定位

定位方法:find_element_by_xpath(xpath) #xpath表达式

绝对路径:表达式以/html开头,元素的层级之间是以/分隔,相同层级的元素可以使用下标,下标从1开始;需要列出元素所经过的所有层级元素,在工作中,一般不使用绝对路径。

/html/body/div/div/div/div/div

相对路径:匹配任意层级的元素,是以//tag_name或者//*开头,也可以使用下标,下标从1 开始。

//div[10]//button

1.2.2、属性定位

//或者//tag_name //[@attribute=‘value’] #attribute元素的属性 #元素的属性值

driver.find_element_by_xpath(//input[@id='kw'])

1.2.3、属性与逻辑结合定位

//或者//tag_name //[@attribute1=‘value1’ and @attribute2=‘value2’ ] #attribute元素的属性 #元素的属性值

driver.find_element_by_xpath(//input[@id='kw' and @name='wd'])

1.2.4、属性与层级结合定位

是以//*或者//tag_name开头

在任意层级当中,都可以结合属性使用

driver.find_element_by_xpath(//form//input[@id='kw'])

1.3、XPATH-延伸

//*[text()=“value”] value表示的是要定位的元素的全部文本内容

//*[text()='新闻']

//*[contains(@attribute,‘value’)] attribute表示的属性名称,value表示是内容,要定位的元素中,attribute属性的属性值中包含了value的内容

//*[contains(@value,'百度')]
//*[contains(@value,'一下')]

//*[starts-with(@attribute,‘value’)] attribute表示的属性名称,value表示是字符串,要定位的元素,attribute属性的属性值是以value开头

//*[starts-with(@value,'百度')]

2、CSS定位

2.1、什么是CSS?

1、css是一种语言,他用来描述HTML元素的显示样式;

2、在css中,选择器是一种模式,用于选择需要添加样式的元素;

3、在Selenium中也可以使用选择器来定位元素;

find_element_by_css_selector(css_selector)   # css_selector 表示的是CSS选择器表达式
  1. css定位速度较快;
  2. css选择器语法强大;(但一般工作中使用xpath)

2.2、CSS定位策略

id选择器

class选择器

元素选择器

属性选择器

层级选择器

2.2.1、id选择器

表达式: #id # 表示通过元素的ID属性进行元素选择 id表示的是id属性的属性值

find_element_by_css_selector(#su)

2.2.2、class选择器

表达式: .class . 表示通过元素的CLSS属性进行元素选择 class表示的是class属性的其中一个属性值

find_element_by_css_selector(.s_ipt)

2.2.3、元素选择器

通过元素标签名称来选择元素。表达式:tag_name(不推荐使用)

find_element_by_css_selector(input)

2.2.4、属性选择器

通过元素的属性来选择元素。表达式:[attribute=‘value’] #attribute属性名称 #value属性值

如果使用的是class属性,需要带上class的全部属性值

find_element_by_css_selector([name='wd'])

2.2.5、层级选择器

说明:根据元素的父子关系来选择
父子关系
格式1:element1>element2 通过element1来定位element2,并且element2必须为element1的直接子元素;

find_element_by_css_selector(span>input[id='kw'])

隔代关系
格式2:element1 element2 通过element1来定位element2,并且element2必须为element1的后代元素;

find_element_by_css_selector(form[id='form'] input[name='wd'])

2.2、CSS扩展

input[type^=‘p’] #input表示标签名称 #type表示属性名称 #p表示匹配内容(以p字母开头的元素)

find_element_by_css_selector(input[class^='s'])

input[type$=‘d’] (以d字母结束元素)

find_element_by_css_selector(input[type$='it'])

input[type*=‘w’] (包含w字母的元素)

find_element_by_css_selector(input[type*='sub'])

三、元素定位的另一种写法

from selenium.webdriver.common.by import By

方法:find_element()

   # 办公管理OfficeManagementLoc = (By.XPATH, "//main//span[@id='bc13ef20f5844e73b3ba'][text()='办公管理']")

Selenium中元素定位方法详细介绍相关推荐

  1. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  2. selenium八大元素定位方法

    selenium八大元素定位方法 定位方式一 定位方式二 定位方式一 定位方式二 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与 ...

  3. Python Appium 元素定位方法简单介绍

    Python  Appium  元素定位 常用的八种定位方法(与selenium通用) id定位 name定位 Xpath定位 如下图,使用 uiautomatorviewer.bat 获取页面元素 ...

  4. Django restframework中 Serializer 序列化方法详细介绍

    以前在写django 的时候,从后端拿到数据返回给前端,每个字段都要单独进行定义,有了Serializer方法,我们可以节省代码量. 首先,编写今天的models 表,并自己进行url 配置,详细参照 ...

  5. Python+selenium自动化八大元素定位方法及实例(超详细)

    目录 一.selenium模块中的find_element_by_id方法无法使用 二.Python+selenium自动化八大元素定位方法 使用场景: 1.通过id属性定位:driver.find_ ...

  6. App控件定位:Android 控件介绍及元素定位方法

    本文将分享Android相关基础知识和Android APP控件定位工具的使用方法. 目录 Android基础知识 Android布局 Android四大组件 1.activity 2.Service ...

  7. Selenium常用的8大元素定位方法

    1.元素定位方法的分类(调用方式): 直接调用型(推荐方式) driver.find_element_by_xxx(value) 使用By类型(需要导入By) from selenium.webdri ...

  8. Selenium元素定位方法大全

    目录 一.背景 二.浏览器定位元素 三.Selenium元素定位代码 3.1 通过id定位 3.2 通过class定位 3.3 通过name定位 3.4 通过tagname定位 3.5 通过link_ ...

  9. Selenium原理及元素定位方法(JAVA)

    Selenium原理 1.Selenium 1.0(Selenium RC): 早期的Selenium使用的是Javascript注入技术与浏览器打交道,需要Selenium RC启动一个Server ...

最新文章

  1. 学计算机哪家强?清华竟是2018全球第1!(附排名)
  2. 向公司讲述虚拟应用价值的技巧
  3. linux脚本 程序输入,[转]Linux中shell脚本如何自动输入…
  4. oracle 11g 大小,修改oracle 11GR2归档模式和归档目录及大小-Oracle
  5. python面试常见问题-Python面试中常见的40个问题
  6. 差异备份、增量备份、完全备份的区别
  7. 洛谷 P1004 方格取数 【多线程DP/四维DP/】
  8. php 数学基础,第四章 php数学运算
  9. css用边框实现圆角矩形
  10. 连接SQL SERVER的时候登录名如何清除
  11. python的金融计算器_Python计算器
  12. 真实的网络赚钱经历:另类推广引流操作CPA!
  13. 查看数据库实例名的方法:
  14. iOS逆向 和班尼特福迪一起攻克难关(unity)
  15. 最新台式计算机CPU,三月台式电脑CPU性能排行榜, 2019年3月最新版CPU天梯图
  16. 【字符串】字符串的boder和其性质、应用
  17. 基于PHP+MySQL的图书馆图书借阅系统
  18. 电子与计算机工程导论,BGPLUS科研荟萃 | 杜克大学 | 电子工程、计算机工程:电子与计算机工程导论...
  19. 安卓版matlab下载,matlab转为app
  20. 毕业论文设计:第二部分—激光雷达里程计研究

热门文章

  1. 感谢飞书放过幕布!GPT-4平替Poe;100个GPT-4实战案例;AI绘画新手指南之SD篇;new Bing靠谱教程;AI生成视频摘要神器 | ShowMeAI日报
  2. [Android] 使用完美刷机开启手机Root权限
  3. jQuery-案例-五星评价
  4. 视频14-15五色球任选三个不同颜色选法。根据理解编写。
  5. mysql int11 最大值_int(11)最大长度是多少,MySQL中varchar最大长度是多少(转)
  6. 工具变量 | 全国各省368个地级市河流密度数据
  7. 在一定范围内生成随机数
  8. 近20年最全目标检测综述
  9. 《双人成行》和制作人约瑟夫·法斯(Josef Fares)
  10. 【硬件#复刻#B站大鱼SPA3D打印机】B站大鱼SPA_V1.1_3D打印机复刻日志