在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. hdu4662 简单搜索打表

    题意:      给你一个初始串"MI",这个串有三种操作, (1)M后卖弄可以直接复制 ,MI -> MII (2)三个III可以变成一个U,MUIII -> MUU ...

  2. DVWA之SQL注入考点小结

    SQL Injection SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常 ...

  3. Markdown修改字体颜色

    在写blog时,想高亮某些字,但是发现markdown更改字体颜色不像word里那么方便,于是查了一下,要用一下代码进行更改字体颜色,还可以更改字体大小,还有字体格式 <font 更改语法> ...

  4. spring boot pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  5. python爬虫——《瓜子网》的广州二手车市场信息

    由于多线程爬取数据比单线程的效率要高,尤其对于爬取数据量大的情况,效果更好,所以这次采用多线程进行爬取.具体代码和流程如下: import math import re from concurrent ...

  6. BUAA-OO-第四单元总结——终章

    面向对象第四单元博客总结--终章 第四单元作业设计 第13次作业设计 类和对应方法属性设计 类设计如下图所示 本次作业主要涉及六个类,其中包括主类 Main ,通用Map类 UmlElementIdM ...

  7. [web] 系统运维--单机

    处理过程 浏览器发送请求经过网络到达web服务器 web服务器处理请求并响应数据 响应数据从web服务器发送到用户端 用户浏览器接收数据,本地计算渲染 指标 响应时间 吞吐量 响应时间 响应时间 = ...

  8. [c++] 如何流畅地读写代码

    代码不同于普通文字,阅读时注意两方面: 符号含义:相同符号,上下文不同时含义也不同,如*和& 阅读顺序:不总是按从左往右顺序阅读的,有时要倒着读或者跳着读逻辑才通顺 适当省略:有些内容虽然写了 ...

  9. 使用UltraISO制作ubuntu安装u盘启动盘图文教程

    使用UltraISO制作ubuntu安装u盘启动盘图文教程 胖先森关注 0.9572017.09.07 11:06:15字数 770阅读 27,901   制作U盘启动1.gif 1.首先打开Ultr ...

  10. mitogen附带文件到远程主机

    #!/usr/bin/env python # import mitogen.master import mitogen.select import subprocess import logging ...