appium +ios 判断元素是否存在,排除visible=“false”的数据
2024-10-10 07:42:28
问题 想要判断name=xxx的元素是否存在,存在的话进行点击,结果页面并没有展示我要的元素时也提示找到了元素
原因 ios通过driver.find_element_by_name(“name值”),会找到visible=false的值(即不可见的元素),而实际再操作UI时,我们只想要visible=true的
driver.page_source部分信息如下:
</XCUIElementTypeCell>
<XCUIElementTypeCell type="XCUIElementTypeCell" enabled="true" visible="false" x="0" y="-132" width="320" height="50">
<XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="游戏交易" name="游戏交易" label="游戏交易" enabled="true" visible="false" x="0" y="0" width="52" height="16"/>
</XCUIElementTypeCell>
解决方法 通过正则匹配判断结果
对找到的元素进行过滤,只要visible=true的,可以先获得页面的xml,然后进行正则匹配,查看是否有visible=“true”,且name=xxx的元素
代码如下:找到情况返回True,否则返回False
currentcontent=self.driver.page_source
result = re.search('label="' + catename + '" enabled="true" visible="true"', currentcontent)
if result is not None:
return True
else:
return False
备注:最开始是想用iOS的谓词来实现,但是我的手机ios 9.3系统没有生效,不知道是我系统原因,还是这么用就是有问题。代码如下
return self.driver.find_element((MobileBy.IOS_PREDICATE,"name == 'xxx' AND visible == 'true' "))
最新文章
- linux下的守护进程
- 【PHP面向对象(OOP)编程入门教程】4.如何抽象出一个类?
- C++ 类的静态成员及静态成员函数
- js-sdk探索之微信网页分享
- H5 移动Web框架集合
- Python中的split()函数的使用方法
- 浅谈Java对象回收的三种方式
- mysql install
- 类与对象 - PHP手册笔记
- struts2 s:if 的字符串比较问题
- linux_ Redhat Linux配置JDK和Tomcat需要注意的地方
- IIS7和Tomcat7整合,即IIS7和Tomcat共用80端口
- 基于redis的分布式锁实现
- centos 6.9:device eth0 does not seem to be present
- 进度条QProgressBar
- synchronized 关键字如何使用
- Derek解读Bytom源码-P2P网络 upnp端口映射
- 解决git pull时出现的几个问题
- CGI servlet Applet Scriptlet Scriptlet JSP data layer(数据层),business layer(业务层), presentation layer(表现层)
- sql server数据库备份单个表的结构和数据生成脚本
热门文章
- djangobb之debug-toolbar查看其sql
- twisted的DelayedCall
- 使用子查询创建表(oracle)
- element UI select 设定默认值
- 深度学习原理与框架-神经网络-cifar10分类(代码) 1.np.concatenate(进行数据串接) 2.np.hstack(将数据横着排列) 3.hasattr(判断.py文件的函数是否存在) 4.reshape(维度重构) 5.tanspose(维度位置变化) 6.pickle.load(f文件读入) 7.np.argmax(获得最大值索引) 8.np.maximum(阈值比较)
- day05-if-else语句
- centos7 自动定时备份mysql数据库
- centos7 操作记录
- virtual 初探
- NSNotification相关