自动化测试-exists 判断元素是否存在
app 上如何判断一个元素是否存在?
如果存在点下一步,不存在不操作。
exists 判断是否存在
exists 方法是判断是否存在,如果存在返回图片中心点坐标,如果不存在返回 False。
param v:传图片参数支持平台: Android, Windows, iOS
使用示例
>>> if exists(Template(r"tpl1606822430589.png")):
>>> touch(Template(r"tpl1606822430589.png"))
因为 exists() 会返回坐标,我们可以直接点击坐标来减少一次图像查找。
>>> pos = exists(Template(r"tpl1606822430589.png"))
>>> if pos:
>>> touch(pos)
判断存在
我的 页面,判断 “登录/注册” 按钮存在,就点击操作
if 判断语法用 python3 语法, exists方法会查找一次元素,touch也会查找一次元素,上面的代码会导致查找2次元素。
exists() 会返回坐标,我们可以直接点击坐标来减少一次图像查找。
查找超时
exists() 方法如果没找到元素,返回 False. 默认超时时间是 timeout=ST.FIND_TIMEOUT_TMP, 也就是默认 3 秒。
ST.FIND_TIMEOUT_TMP 是在 setting.py 文件配置的,默认查找超时是 3 s。
selenium判断元素是否存在
selenium中:
*元素存在,但不唯一,操作元素会报错。
*元素不存在,操作元素也会报错。
捕获异常
弊端:只要页面上有元素,不几个,都返回True
from selenium import webdriver
import unittest
class Test1(unittest.TestCase):
# 一、准备浏览器驱动、网站地址
# setUp在每个测试函数运行前运行,注意大小写;self不能省略
def setUp(self):
self.driver=webdriver.Chrome()
self.baseurl="https://www.baidu.com"
# 二、打开浏览器,发送请求
函数名必须以test开头
def test_01(self):
browser=self.driver
browser.get(self.baseurl)
# 四、调用方法,判断元素是否存在
flag=Test1.isElementExist(self,“input”)
if flag:
print(“该元素存在”)
else:
print(“该元素不存在”)
# 三、判断元素是否存在的方法
def isElementExist(self):
flag=True
browser=self.driver
try:
browser.find_element_by_css_selector(element)
return flag
except:
flag=False
return flag
# 五、运行所有以test开头的测试方法
if __name__=="__main__":
unittest.main()
find_elements方法
可以覆盖只添加mark_safe函数的py,如下例所示:
#除第三步,其他步骤同上
def isElementExist(self):
flag=True
browser=self.driver
ele=browser.find_elements_by_css_selector(element)
if len(ele)==0:
flag=False
return flag