selenium-python元素定位技巧(二)
在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)
最新文章
- 管理者与下属谈话的技巧及注意点[持续更新ing]
- SQL Server 2012新增和改动DMV
- BZOJ 2048 题解
- Discuz模拟批量上传附件发帖
- [ html canvas globalCompositeOperation ] canvas绘图属性 设置合成图像如何显示 属性演示
- JAVA——getter setter
- SendTextMessage如何打开记事本并显示指定内容
- Tinder 心动效果---卡片式view左右滑动
- 美国易安信公司 EMC
- SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现
- oninput,onpropertychange,onchange的使用方法和差别
- linux之多进程fork:进程通信
- JavaScript八张思维导图
- asp.net -mvc框架复习(11)-基于三层架构与MVC实现完整的用户登录
- Java代理模式之Cglib代理
- Asp.Net MVC3.0中防止跨站的POST
- Java IO流学习总结七:Commons IO 2.5-FileUtils
- 八一八cvs vss svn和git比较
- [osgearth]Earth文件详解
- 如何去除Linux文件的^M字符
热门文章
- hdu5015 矩阵快速幂233(好题)
- Linux中Tomcat和Jboss的安装和部署
- Intel汇编语言程序设计学习-第三章 汇编语言基础-中
- web php wrong nginx config
- Thyemleaf报错: Method call: Attempted to call method *** on null context object
- vue 访问页面时报错 Failed to compile
- C# 变体(variance)
- 了解常用数据库MySQL、Oracle、MongoDB
- [转发]PotPlayer 无损截取视频片段
- Kubernetes 部署微服务电商平台(16)