在python-selenium元素定位中,有很多小技巧,在此记录总结

 技巧一、有关联关系的元素有交集关系时,必须添加固定等待,整体调试时候也适当增加固定等待,保持代码运行稳定性。下拉的时候选择下拉框有时候也需要等待。

当遇到两个元素有交集依赖(先后)关系,重新加载的时候,需要消耗时间等待,必须添加一个固定等待(备注:一定要固定等待,隐式等待无效)

举例:
下拉框的选择,比如选择省份>城市,在选择省份后一定要添加固定等待后再去选择城市。
代码举例:
driver.find_element(By.XPATH,"//div[@id='project_chosen']").click()   #下拉框一的div的定位
time.sleep(1)
driver.find_element(By.XPATH,"/[@title='提成项目1']").click()   #下拉框的值的输入
time.sleep(2)  #需要固定等待,因为有依赖关系
driver.find_element(By.XPATH,"//div[@id='openedBuild_chosen']").click() #固定等待后再去选择下拉框二
driver.find_element(By.XPATH,"/[@title='OA2.7.2版本1']").click()  #选择下拉框二的子选项的值,一定要检查到子选项的值

 技巧二、同一个界面,当元素属性相同,但非同一个元素,可利用多属性识别,否则可能会定位元素报错,也可以使用不同的定位方式。

 技巧三、某些元素不能定位到,可能是该元素在当前界面所在位置不可见了,解决方案

a、可将鼠标滚动下拉

b、考虑将浏览器最大化处理

c、将浏览器下拉移动到该元素可见的位置。

举例:

element=driver.find_element(By.XPATH,"//div[@id='mailto_chosen']")  #当前不可见但是需要下拉滚动条操作的元素
driver.execute_script('arguments[0].scrollIntoView();',element)
element.click()
time.sleep(1) ##必须加等待,否则不准确,再去操作后续元素
driver.find_element(By.XPATH,"//div[@id='mailto_chosen']/div/ul/li[@title='C:测试001']").click()  ##可分层定位,先定位到div,再定位到div下面的子选项进行输入。

 技巧四、当需要调试一个模块的功能时候,先把能单独拆分的小功能内部调通,再整体调试

 技巧五、当定位不到元素时,先定位到该元素的上级,再定位到该元素。

例如:
driver.find_element(By.XPATH,"//div[@id='mailto_chosen']/div/ul/li[@title='C:测试001']").click() ##可分层定位,先定位到div,再定位到div下面的子选项进行输入。
或:
driver.find_element(By.XPATH,"//td[contains(@title,'人工修改提成失败')]").click()  #点击标题先定位到当前行,可通过元素定位看出来。
##根据链接进入BUG详情页
driver.find_element(By.XPATH,"//td[contains(@title,'人工修改提成失败')]/a").click() #再通过点击当前行的相对路径方式定位到可点击的BUG的链接点击进入BUG详情
time.sleep(1)



 

selenium-python元素定位技巧(二)的更多相关文章

  1. Selenium+Java元素定位之二

    //通过完全匹配链接来定位 driver.findElement(By.linkText("新闻")).click(); //通过部分匹配链接来定位 driver.findElem ...

  2. python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)

    今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...

  3. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

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

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

  5. 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  6. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  7. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

  8. 《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)

    1.简介 按计划今天宏哥继续讲解倚天剑-css的定位元素的方法:ID属性值定位.其他属性值定位和使用属性值的一部分定位(这个类似xpath的模糊定位). 2.常用定位方法(8种) (1)id(2)na ...

  9. 《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)

    1.简介 按计划今天宏哥继续讲解css的定位元素的方法.但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用. 2.常用定位方法(8种) (1)id(2)name(3)class name( ...

  10. selenium界面元素定位

    一.        Selenium界面元素定位 本文元素定位以das2为例 #导入包 from selenium import  webdriver #打开火狐驱动 driver=webdriver ...

随机推荐

  1. POJ1018贪心(多路归并的想法)

    题意:      有n个服务器,每个服务器都要安装网线(必须也只能安装一个),然后每个服务器都有mi种选择网线的方式,每种方式两个参数,一个是速度b,另一个是价钱p,然后让你找到一个最大的比值 min ...

  2. Win64 驱动内核编程-32.枚举与删除注册表回调

    枚举与删除注册表回调 注册表回调是一个监控注册表读写的回调,它的效果非常明显,一个回调能实现在SSDT 上 HOOK 十几个 API 的效果.部分游戏保护还会在注册表回调上做功夫,监控 service ...

  3. 【python】Leetcode每日一题-前缀树(Trie)

    [python]Leetcode每日一题-前缀树(Trie) [题目描述] Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的 ...

  4. Day009 稀疏数组

    稀疏数组(数据结构) 场景 需求:编写五子棋游戏中,有存盘和续上盘的功能. 分析问题:因为该二维数组的很多值默认都是0,因此记录了很多没有意义的数据. 解决:稀疏数组 稀疏数组介绍 当一个数组大部分元 ...

  5. 安装和简单使用apidoc

    安装nodejs 参考链接 安装apidoc 参考链接 使用 https://www.bilibili.com/video/BV1MW411Q7g4 https://www.bilibili.com/ ...

  6. 表单模块 layui-form

    使用 layui针对各种表单元素做了比较全面的Ui支持,在Ui渲染只要求一点.,在表单体所在父元素加上class="layui-form" 监听事件 提交按钮监听,注意需要加·la ...

  7. java的继承和组合

    继承和组合是java中非常常用的两种创建新类型的方法,两者都能提高代码的复用率. 继承主要是想让子类继承父类的基本特性:组合技术通常用于想在新类中使用现有类的功能,而非它的接口.两者的分别是" ...

  8. Docker搭建开发环境(Nginx+MySQL+PHP)

    注意事项 1.像MySQL配置文件.Nginx配置文件.网站根目录这种比较经常操作的需要先使用 docker cp 将文件从容器里复制到主机目录,docker run的时候直接挂载目录就可以了 2.d ...

  9. 【转】风控中的特征评价指标(一)——IV和WOE

    转自:https://zhuanlan.zhihu.com/p/78809853 1.IV值的用途 IV,即信息价值(Information Value),也称信息量. 目前还只是在对LR建模时用到过 ...

  10. [DB] MapReduce 例题

    词频统计(word count) 一篇文章用哈希表统计即可 对互联网所有网页的词频进行统计(Google搜索引擎的需求),无法将所有网页读入内存 map:将单词提取出来,对每个单词输入一个<wo ...