Web自动化的大门到达“犯罪现象”-侦破架构、环境安装及常用元素定位方法
发表时间:2023-09-19 16:00:35
文章来源:炫佑科技
浏览次数:138
菏泽炫佑科技
Web自动化的大门到达“犯罪现象”-侦破架构、环境安装及常用元素定位方法
推开Web自动化之门直达“犯罪现象”——检测架构、环境安装和常用元素定位方法
或 W3C:
2.23 通过id定位(原则上每个元素都有自己唯一的id值)——重要
学过Web自动化的同学都知道,HTML中的元素都有自己的id。 在移动端,元素仍然有自己的id值Web自动化的大门到达“犯罪现象”-侦破架构、环境安装及常用元素定位方法,但名称为-id,如下:
注意:我们看到id的值很长。 其实实际使用时只需要取斜杠/后面的部分即可,如下:
By.id("statusTitle")
2.24 通过定位(实际上是-desc)-偶尔使用
移动自动化中有一种特殊的定位方法自动化软件开发,它是基于定位的。 在dom中,用属性-desc的值来表示。 如果值写在-desc中,可以通过它来定位:
这里更尴尬了。 。 。 由于研发往往懒得写,所以找了半天也没找到例子。 希望大家都知道如何使用~
另外需要注意的是,如果想写成“By.xxx”的形式,需要使用
MobileBy.AccessibilityId("AccessibilityId");
appiumdriver.findElementByAccessibilityId("AccessibilityId");
2.25 通过定位(相当于使用Api递归查找元素(独占))——高级用法
有时候我们需要在界面上进行某些操作来查找我们想要的元素,比如滑动列表进行搜索等,这时候我们可以使用
这里我们使用模拟器中的API Demo进行演示,进入Views,然后滑动屏幕找到“Popup Menu”点击即可。
可以用来进行滑屏操作,这时候就需要了。 此外,还可以使用定位元素:
官网上有用ruby写的例子,但是定位方法是一样的,可以直接在java代码中使用。
这里大概的定位方法是先用new().(true).(0)判断是否可以滑动,找到,然后用(new().text("").(0)来滑动找到定位属性对应的元素。
driver.findElementByXPath("//*[@text='Views']").click();
((AndroidDriver
)driver). findElementByAndroidUIAutomator
("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text(\"Popup Menu\").instance(0))")
.click();
在实际操作中,偶尔会出现定位失败的情况,定位元件的位置可能会出现轻微偏差。 这里稍微修改一下,以避免这种偶尔出现的故障;
修改方法:滑动屏幕查找元素时,会先滑动屏幕到要查找的元素附近。 此时,该元素已经在页面的可见范围内。 元素操作可以重新定位。 例如,单击操作可以使用Xpath方法重新定位,然后单击。 ()。
By departmentName = MobileBy.AndroidUIAutomator(
"new UiScrollable(new UiSelector().scrollable(true).instance(0))." +
"scrollIntoView(new UiSelector().text(\""+ departName +"\").instance(0))");
find(departmentName);
// click(departmentName); 原来直接操作滑动查找的元素结果
click(ByText(departName));//现在利用xpath重新定位确认后再操作,成功率大大提升
运行效果演示:
定位逻辑的差异
在之前的文章中,我们介绍了底层使用的各种引擎。 您可以在文章末尾查看**篇文章来查看。
我们先简单看一下下面这张图:
我们现在使用的*新版本优先支持。 如果您使用的是相对较早的版本,则可能会受支持。 那么这两款引擎对上面介绍的定位有什么影响呢? 我们看一下源码:
我们现在使用的*新版本优先支持。 如果您使用的是相对较早的版本,则可能会受支持。 那么这两款引擎对上面介绍的定位有什么影响呢? 我们看一下源码:
以id定位为例,从源码中可以看出id定位的范围更广。 当我们使用By.id时,我们会同时匹配 , id , id 。
中,对ids的定位进行了细分,在操作前判断不同的id。 所以我们在使用的时候写法一定要更加严谨。
官方文档:
源码路径:
推荐学习
内容全面升级,5个月30+项目强化培训。 资深测试架构师和开源项目作者,教你各大BAT厂商*前沿的*佳实践,帮助你一站式掌握测试开发必备的核心技能(以阿里巴巴P6+为基准,年薪50W+)! 直接推荐BAT名企测试经理,普遍加薪50%+!