Selenium2+python自动化36-判断元素存在【转载】
前言
最近有很多小伙伴在问如何判断一个元素是否存在,这个方法在selenium里面是没有的,需要自己写咯。
元素不存在的话,操作元素会报错,或者元素有多个,不唯一的时候也会报错。本篇介绍两种判断元素存在的方法。
一、find_elements方法判断
1.find_elements方法是查找页面上所有相同属性的方法,这个方法其实非常好用,能熟练掌握技巧的不多,小编这次就发挥它的功效
2.由于元素定位的方法很多,所以判断的时候定位方法不统一也比较麻烦,这里我选择css定位(有喜欢xpath的同学可以自己用xpath语法)
3.写一个函数判断,找到就返回Ture,没找到就返回False(或者不止一个)
二、百度输入框为例
1.判断id为kw的元素是否存在
2.判断标签为input元素是否存在
3.判断id为xxx元素是否存在
三、捕获异常方法
1.如果没找到元素会抛异常,返回False
2.如果找到元素就返回Ture
3.但是这个方法有个弊端,如果页面上存在多个一样元素,也会返回Ture的(也就是说只要页面上有元素就返回Ture,不管几个)
四、参考代码
# coding:utf-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
def is_element_exist(css):
s = driver.find_elements_by_css_selector(css_selector=css)
if len(s) == 0:
print "元素未找到:%s"%css
return False
elif len(s) == 1:
return True
else:
print "找到%s个元素:%s"%(len(s),css)
return False
# 判断页面上有无id为kw的元素
if is_element_exist("#kw"):
driver.find_element_by_id("kw").send_keys("yoyoketang")
# 判断页面有无标签为input元素
if is_element_exist("input"):
driver.find_element_by_tag_name("input").send_keys("yoyoketang")
# 判断页面有无id为xxx的元素
if is_element_exist("xxx"):
driver.find_element_by_id("xxx").send_keys("yoyoketang")
def isElementExist(css):
try:
driver.find_element_by_css_selector(css)
return True
except:
return False
print isElementExist("#xxx")
Selenium2+python自动化36-判断元素存在【转载】的更多相关文章
- Selenium2+python自动化52-unittest执行顺序【转载】
前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺 ...
- Selenium2+python自动化20-Excel数据参数化【转载】
前言 问: Python 获取到Excel一列值后怎么用selenium录制的脚本中参数化,比如对登录用户名和密码如何做参数化? 答:可以使用xlrd读取Excel的内容进行参数化.当然为了便于各位小 ...
- Selenium2+python自动化17-JS处理滚动条【转载】
前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...
- Selenium2+python自动化36-判断元素存在
前言 最近有很多小伙伴在问如何判断一个元素是否存在,这个方法在selenium里面是没有的,需要自己写咯. 元素不存在的话,操作元素会报错,或者元素有多个,不唯一的时候也会报错.本篇介绍两种判断元素存 ...
- Selenium2+python自动化42-判断元素(expected_conditions)【转载】
前言 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方 ...
- Selenium2+python自动化6-八种元素元素定位(Firebug和firepath)【转载】
前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位.元素定位在这四个环节中是至关 ...
- Selenium2+python自动化35-获取元素属性【转载】
前言 通常在做断言之前,都要先获取界面上元素的属性,然后与期望结果对比.本篇介绍几种常见的获取元素属性方法. 一.获取页面title 1.有很多小伙伴都不知道title长在哪里,看下图左上角. 2.获 ...
- Selenium2+python自动化12-操作元素(键盘和鼠标事件)【转载】
前言 在前面的几篇中重点介绍了一些元素的到位方法,到位到元素后,接下来就是需要操作元素了.本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件 有些web界面的选项菜单需要鼠标悬停在某个元素 ...
- Selenium2+python自动化42-判断元素(expected_conditions)
前言 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方 ...
随机推荐
- 正则匹配java多行注释
类似: /** * This method was generated by MyBatis Generator. * This method returns the value of the dat ...
- codeforce580c (dfs)
题目意思:给你一棵树,然后每个叶子节点会有一家餐馆,你讨厌猫,就不会走有连续超过m个节点有猫的路,然后问你最多去几家饭店 思路:直接DFS Example Input 4 11 1 0 01 21 3 ...
- Vue2.0 新手完全填坑攻略——从环境搭建到发布(转载)
强力推荐,详情请点击此链接http://www.jianshu.com/p/5ba253651c3b
- WCF 动态调用(动态创建实例接口)
很多时候,服务地址都不止一个的,这个时候就要动态去配置地址.配置Web.config,很麻烦 下面就看看怎样实现动态调用WCF. 首先看看动态创建服务对象的代码: using System; usin ...
- Hiberante可配置参数
###################### ### Query Language ### ###################### ## define query language consta ...
- Codeforces Round #518 Div. 1没翻车记
A:设f[i][j][0/1]为前i个数第i位为j且第i位未满足/已满足限制的方案数.大力dp前缀和优化即可. #include<iostream> #include<cstdio& ...
- [Leetcode] unique paths ii 独特路径
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- AtCoder Grand Contest 028 B - Removing Blocks 解题报告
B - Removing Blocks Time limit : 2sec / Memory limit : 1024MB Score : 600 points ## Problem Statemen ...
- 一些奇怪的JavaScript试题
JavaScript有很多地方和我们熟知的C.Java等的编程习惯不同,这些不同会产生很多让人意想不到的事情.前段时间在知乎有人发了写Javascrtip试题,觉得挺好玩的,这里跟大家分享一下. 01 ...
- POJ3020:Antenna Placement(二分图匹配)
Antnna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11093 Accepted: 5459 ...