相关文章推荐
老实的梨子  ·  Qt ...·  1 年前    · 
发财的蚂蚁  ·  golang 写入csv文件-掘金·  1 年前    · 
自动化测试-exists 判断元素是否存在

自动化测试-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 Test1unittest.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.isElementExistself,“input”)
 if flag
  print(“该元素存在”)
 else
  print(“该元素不存在”)
# 三、判断元素是否存在的方法
 def isElementExistself):
 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