在测试过程中,我碰到过这类的问题,使用find_element却找不到某个元素而产生异常,这就需要在操作某个元素之前判定该元素是否存在,而selenium中没有判定元素是否存在的方法,或者判定相同的元素有几个,需要操作对象是第几个。但是,有人已经总结一些相关的方式方法,下面还是通过实例说明。

find_elements获取元素个数

如果确定查找的元素在网页中只有一个,那么完全可以用find_element(),但如果有多个满足要求的节点,用find_element()就只能得到第一个节点了,所以查找多个节点时,应该使用find_elements()更好。即使元素只有唯一的一个时,由于网络时延或者弹窗前后台切换导致操作该元素时,该元素不存在,就可以使用find_elements来判定元素个数是否不为零,再进行相关操作。Selenium中find_elements的方法如下,但是注意复数形式,别乱用。

Find_elements的方法很多,如果常用判定最好自己写一个函数,方便调用,通常选择CSS或xpath。返回0则页面没有这个元素,返回1则仅有1个元素,其它返回则说明有多个该元素。

还是以企业邮箱为例,企业邮箱默认使用二维码方式登录,但是想要使用账户密码登录,就需要判定“账户密码登录”元素是否存在,我们可以使用 Ranorex Selocity直接复制该元素的xpath。

但是这类有一个确定,就是当页面存在多个同样的元素时,也是返回true,可能需要操作的并不是第一个。

捕获异常

捕获异常是使用find_element方法无法获取元素则会抛出异常,如果找到元素则会返回True。

# -*- coding: UTF-8 -*-from selenium import webdriver

driver = webdriver.Firefox()

driver.implicitly_wait(20)

# 打开腾讯企业邮箱

driver.get("https://exmail.qq.com/login")

#判定元素是否存在def test_elements_judge(xpath):

test_element = driver.find_elements_by_xpath(xpath)

if len(test_element) == 1:

return True

else:

return False

#捕获异常

def test_exceptions(xpath):

try:

driver.find_element_by_xpath(xpath)

return True

except:

return False

if test_exceptions("//form[@id='loginForm']"

"/div[3]/div[@class='login_scan_footer']/a[1]"):

driver.find_element_by_xpath("//form[@id='loginForm']" "/div[3]/div[@class='"

"login_scan_footer']/a[1]").click()

appium判断元素是否存在_Python+selenium自动化之判定元素是否存在相关推荐

  1. 怎么用python自动注册_python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  2. python自动化测试web页面组成_python+selenium自动化软件测试(第3章):unittest

    3.1 unittest简介 前言 (python基础比较弱的,建议大家多花点时间把基础语法学好,这里有套视频,可以照着练习下:http://pan.baidu.com/s/1i44jZdb 密码:9 ...

  3. python自动化流程概念_python selenium 自动化流程的一些总结与思考

    首先要考虑的项目为什么要做自动化测试?(主要从自动化测试的优点着手) 其次是什么项目才适合做自动化测试? 自动化测试覆盖率要达到什么样的程度?因为都知道不可能达到100%的,不然脚本太臃肿,反而会失去 ...

  4. python 自动点击网页上按钮_python selenium自动化(一)点击页面链接测试

    需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回到原始页面. 要完成这个需求就必须实现3点: 1. 找 ...

  5. android select下拉列表_Python+selenium自动化之下拉列表操作(一)

    下拉列表操作中分为两种:select.非select 非select下拉列表操作 非select下拉列表的操作与其他元素的操作一致,定位元素,设置等待,操作元素. 下面还是以腾讯邮箱为例,查看一封邮件 ...

  6. java自动化分页_Python+Selenium自动化实现分页(pagination)处理

    selenium怎么应对网页分页的情况 什么是分页?是指frame么?selenium有处理frame的机制.driver.switchTo().frame("frame name" ...

  7. dnf自动刷图python脚本_python+selenium自动化登录dnf11周年活动界面领取奖励登录部分采坑总结[1]...

    背景: Dnf的周年庆活动之一,游戏在6月22日 06:00~6月23日 06:00之间登陆过游戏后可以于6月25日 16:00~7月04日 06:00领取奖励 目标:连续四天自动运行脚本,自动领取所 ...

  8. python自动化控制运动_Python +selenium自动化帮你预订运动场地

    导语 炎热的夏天,正是换上短裤短裙晒身材的时候.但是,身材不好怎么办?运动是一个选择,特别是像我们程序员行业,天天坐在空调办公室,更应该出出汗,正所谓:冬练三九,夏练三伏. 下班后,约上公司的妹子,打 ...

  9. js等待5秒后执行_Python+selenium自动化之等待

    Selenium学习和使用过程中,比较常见的一个问题就是,弹窗定位不到.元素定位不到等,除了页面有frame.多窗口,就是没有加等待.代码运行的速度远远高于浏览器加载的速度,就像双人跑步运动,一个人快 ...

最新文章

  1. 如何正确选择聚类算法? | CSDN博文精选
  2. VScode 乱装插件环境破坏踩坑自我反思总结
  3. arduino向串口发送数据时掉包_[技术]清楚简单,一种串口触摸屏的开发流程和方法介绍...
  4. IOS登陆+注册+抽奖+排行榜
  5. 微信小程序 推送模板教程 附源码
  6. 以太坊智能合约Java_以太坊:调用已部署的智能合约
  7. 《设计模式详解》创建型模式 - 建造者模式
  8. L2-029 特立独行的幸福 (25 分)-PAT 团体程序设计天梯赛 GPLT
  9. C盘清理工具Dism++教程
  10. T分布和T检验的理解,Python代码实现T检验的计算
  11. uni-app 颜色选择器(插件分享)
  12. 三层交换机和vrrp协议
  13. codeforces A. Statues
  14. IBM PureApplication System如何使用DNS将工作负载部署到数据中心的网络上
  15. R语言入门(1)时间序列分析
  16. USB音频编解码芯片电路方案设计(原理图)|TYPEC音频方案|TYPEC扩展坞方案|USB音频方案
  17. 监听器和简单邮件发送
  18. 助力新冠抗原检测产品规模化、智能化生产,慧灵科技推出整体解决方案
  19. python数据分析与应用第四章课后实训答案_应用回归分析,第4章课后习题参考答案...
  20. java 程序员 基石

热门文章

  1. OpenCV测试程序
  2. C++中的继承与虚函数各种概念
  3. ubuntu vnc 远程连接桌面
  4. 计算机电路基础张志良,计算机电路基础
  5. 一文教你掌握 ZooKeeper 核心知识
  6. android 手机工具箱,Android工具箱下载
  7. linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译
  8. kali安装docker(有效详细的教程)
  9. vue中使用codemirror
  10. 前端图片canvas,file,blob,DataURL等格式转换