Python Selenium 疑难杂症解方(二): 定位
定位方法
Python Selenium的定位方法有以下8种:
- 通过id定位:
driver.find_element_by_id('username')
- 通过name定位:
driver.find_element_by_name('username')
- 通过xpath定位
driver.find_element_by_xpath('//form/div/div[2]/div/div/div/div/input')
- 通过css_selector定位
driver.find_element_by_css_selector('.el-form-item:nth-child(2) img')
- 通过class_name定位
driver.find_element_by_class_name('el-input__inner')
- 通过link_text定位
driver.find_element_by_link_text('确定')
- 通过tag_name定位
driver.find_element_by_tag_name('link')
- 通过partial_link_text定位
driver.find_element_by_partial_link_text("确定")
实战技巧
实际在编写脚本的过程中,用id和name的定位方式,往往只适用于简单的页面。对于复杂的页面,则更多的依赖css_selector和xpath两种方法。关于这两种方法有以下几个使用技巧:
css_selector
- 可以使用Selenium IDE来帮助定位:打开Selenium IDE,输入项目信息后开始录制,点击想要定位的元素,就可以在IDE中看到对应的CSS:
- 采用css_selector同样会碰到不唯一的情况,这时就只能借助于xpath。
xpath
- 同样,xpath也可以通过Selenium IDE来获取,点击需要定位的元素后,将定位方式改为xpath即可:
- 但是,有些页面中弹出的浮层,其div的次序在每次刷新页面后是随机的,比如:
driver.find_element_by_xpath("//div[6]/div/div/ul/li[2]")
其中的第一个div[6]中的数字6,在每次刷新页面的时候,都会不一样,此时就需要采用模糊定位的方法。
以此页面为例,我们发现,在页面中当前弹出的浮层,其style属性中都会有“fixed”关键词,且在整个页面中“fixed”唯一:
所以我们采用contains来模糊定位这个元素:driver.find_element_by_xpath("//div[contains(@style, 'fixed')]/div/div/ul/li[2]")
这样无论第一个div中的数字如何变化,每次刷新页面都可成功的定位到我们所需的元素上。
- xpath的模糊定位方法,一共有三种方法,分别是:
- 属性中包含***(关键词可不连续):
contains(@属性名, '***')
- 属性以***开头:
starts-with(@属性名, '***')
- 属性以***结尾:
ends-with(@属性名, '***')
- 属性中包含***(关键词可不连续):
- 注意:Chrome不支持ends-with语法。
熟练掌握xpath的相对路径定位和模糊定位,基本就可以解决所有在实战中会碰到的各种无法定位的问题。
Python Selenium 疑难杂症解方(二): 定位相关推荐
- 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二
相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...
- 爬虫笔记:Python Selenium详解
1.简介 Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome.Firefox.Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器. 支持多种操作系统 ...
- python selenium中析构方法报错sys.meta_path is None, Python is likely shutting down如何解决?
在代码跑通之后编译器跟我说唉,你这析构中关闭的这个代码报错了然后就弹出了一堆的报错信息最后弹出来一个 ImportError: sys.meta_path is None, Python is lik ...
- python+selenium——详解介绍Selenium常用API的使用--python语言(完整版)
参考:http://www.51testing.com/html/03/n-3725703-2.html from selenium import webdriver driver = webdriv ...
- python+selenium,详解selenium原理。
鉴于很多同学对原理都处于懵逼状态,那么就仔细阅读这篇文章然后自己去体会. 1.在之前学过的接口测试里面我们事如何做接口测试的? 首先是python请求了一个接口地址,发送对应的参数,然后拿到服务器给我 ...
- Python Tkinter详解 (二)Label标签的使用
#一个简单到不能再简单的标签import tkinter as tkwindow = tk.Tk() window.title('Label的使用') window.geometry('400x400 ...
- python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法
1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome ...
- 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...
- 【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一
相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职 ...
- Python爬虫初级(十一)—— Selenium 详解
欢迎关注公众号K的笔记阅读博主更多优质学习内容 上一篇内容:Python爬虫初级(九)-- ajax 详解 Selenium 库的安装 Selenium 的安装比起其他 python 库的安装稍显复杂 ...
最新文章
- 小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)
- C/C 输入输出缓冲区
- 深度学习(10)-- Capsules Networks(CapsNet)
- 校园PHP表白墙程序源码
- Spring获取前台参数的几种方式
- OpenGL之路(六)贴图
- 1分钟实现Autodesk Vault登录对话框
- 2020计算机博弈大赛幻影围棋分组第二天 围棋规则学习
- 苹果6p计算机在哪里设置方法,苹果手机怎么设置铃声【图文教程,不用电脑,1分钟完成】...
- [LOJ575]不等关系
- 一个公务员工作七年后的肺腑之言”——给想考公务员的XDJM们看看,或许能有帮助
- python数据结构之线性顺序表
- 关于wifi portal认证--为浏览器添加wifi认证功能
- 时代“前浪”迅雷拍被打暗礁,Q2财报或道出缘由
- 计算机汉字字模信息怎么算,汉字字模库字模.PPT
- 蓝桥天枰问题,C组,砝码称重
- ICMP有哪些消息类型?常见的ICMP报文有哪些?
- 去哪儿网支付系统架构演进(上)
- python把excel变成ppt_用Python写excel和ppt文件
- ProE 工程图教程系列-1. 零件的质量属性自动计算
热门文章
- JS 实现列表移动(JQuery实现)
- 苹果开发 笔记(69)SVProgressHUD
- 在你的 Android 手机上「云养猫」:Android 11 Beta 3 具透
- xynu 2917: 整数凑和问题(搜索)
- win7蓝屏0x000000f4修复_Win 7电脑突发蓝屏现象,应如何解决或避免
- 儋州“炰米”:美味的特制粮食
- python 入侵服务器_一个入侵iis服务器的简单案例
- 服务器系统封装iso,轻松几步 封装Windows系统镜像
- boost format使用详解
- 塑胶卡扣弹性计算公式_塑胶产品结构设计卡扣