IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 元素定位方法 -> 正文阅读

[Python知识库]元素定位方法

一、xpath基本定位用法

1.1 使用id定位–driver.find_element_by_xpath(’//input[@id=“kw”]’)

在这里插入图片描述

1.2 使用class定位–driver.find_element_by_xpath(’//input[@class=“s_ipt”]’)

在这里插入图片描述

1.3 通过常用的8种方式结合xpath均可以定位(name、tag_name、link_text、partial_link_text)

二、xpath相对路径/绝对路径定位

2.1 相对定位–以// 开头 如://form//input[@name=“phone”]

在这里插入图片描述

2.2 绝对定位–以/开头,但是要从根目录开始i,比较繁琐,一般不建议使用,如:/html/body/div/a

在这里插入图片描述

三、xpath文本、模糊、逻辑定位

3.1 【文本定位】使用text()元素的text内容 如://button[text()=“登录”]

在这里插入图片描述

3.2 【模糊定位】使用contains() 包含函数 如://button[contains(text(),“登录”)]、//button[contains(@class,“btn”)] 除了contains不是=等于 多用于display属性

在这里插入图片描述

3.3 【模糊定位】使用starts-with – 匹配以xx开头的属性值;ends-with – 匹配以xx结尾的属性值 如://button[starts-with(@class,“btn”)]、//input[ends-with(@class,"-special")]

3.4 使用逻辑运算符 – and、or;如://input[@name=“phone” and @datatype=“m”]

四、xpath轴定位

4.1 轴运算

?ancestor:祖先节点 包括父
?parent:父节点
?preceding-sibling:当前元素节点标签之前的所有兄弟节点
?preceding:当前元素节点标签之前的所有节点
?following-sibling:当前元素节点标签之后的所有兄弟节点
?following:当前元素节点标签之后的所有节点

使用语法:轴名称::节点名称
?使用较多场景:页面显示为一个表格样式的数据列
?如:
在这里插入图片描述
在这里插入图片描述
注意:

#定位 找到元素 -- 做到唯一识别
#优先使用id
#舍弃:有下标的出现、有绝对定位的出现、id动态变化时舍弃
from selenium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
 
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
time.sleep(3)
 
# 定位百度搜索框
driver.find_element_by_id("kw").send_keys("python")
time.sleep(3)
driver.find_element_by_id("su").click()
time.sleep(5)
# 找到这个元素
ele = driver.find_element_by_xpath('//a[text()="_百度百科"]')
# 拖动元素到可见区域--scrollIntoView() 拉到顶部显示,有可能会被导航栏遮挡,定位不到而报错;scrollIntoView(false)可视区域底部对齐
driver.execute_script("arguments[0].scrollIntoView(false);", ele)
time.sleep(5)
driver.quit()

定位后的常见操作

?get(url)?? ??????打开网页

?send_keys(str) ? ?????输入

?click()??????????点击

?clear()??????????清空

?text?????????获取标签文本内容

?get_attribute(‘属性’)??获取元素属性值

?close()????????关闭当前标签页

?quit()???????关闭浏览器,释放进程

FAQ

1.脚本结束如果没有调用quit()方法,chromedriver进程会在后台继续运行,大概占用4M空间,如果创建多了不关,会导致电脑卡

import(‘os’).system(“taskkill /f /t /im chromedriver.exe”)

无处安放的Xpath

?1.元素没有id,name,class等明显或者唯一属性

?2.元素id是动态

?3.元素定位工具抓取不到

?4.复制xpath的路径不稳定
??复制1://[@id=“ko-content”]/div[2]/div[3]/div/div[2]/div[2]/input
??复制2://
[@id=“ko-content”]/div[2]/div[3]/div/div[2]/div[3]/input

?元素本身没有变化,其他元素修改导致该元素定位失效

特点:灵活、稳定、万能

xpath的思想:通过路径找节点(元素属性、内容)

如何写xpath表达式:

xpath语法规则

/?根节点,节点分隔符
//?任意位置
*?任意元素
@?属性
.?当前节点
…?父级节点
text?文本值

五、写xpath的两种方式

格式

属性://*[@属性=‘属性值’]
?如://(星号)[class=“am-dropdown-toggle”]
文本值://(一个星号)[text()=‘文本值’]
?如://(星号)[text()=‘人才招聘’]

高级查询

contains模糊查询:contains(@属性/text(),值)
?如://(星号)[contains(text(),院系专业)]
starts-with:以xxx开始,匹配一个属性开始位置的关键字

上下级查询:
?//*[@type=‘password’]/…/…/…/div[3]

多个条件and:
?//*[@class=‘mnav’ and @type=‘password’]

特殊:
?svg:name属性
??//*[name()=‘svg’]

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:24:55  更:2022-03-08 22:25:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:43:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码