右侧
国内最专业的黑客技术博客
当前位置:网站首页 > 黑客教程 > 正文

appium定位元素的几种方式_appium定位

作者:hacker发布时间:2022-10-07分类:黑客教程浏览:179评论:5


导读:目录:1、appium怎么定位纯HTML5页面应用2、selenium中有8中定位方法,为什么appium和它很像?3、appium页面分层怎么定位控件...

目录:

appium 怎么定位纯 HTML5 页面应用

如果是进行wap端测试

1、使用appium集成的chromeDriver。在手机端安装chrome浏览器,下载对应版本的chromeDriver,使用appium初始化Chrome浏览器相关设置,可以启动chrome,利用chromedriver实现自动化。

2、如果是内嵌webview,需要初始化driver后,利用driver.contexx("WEBVIEW_1"),进行切换到webview,进行元素定位或者自动化

3、其他方式,启动源生浏览器,但这种方式是将源生浏览器当做一个app来使用,可能启动activity不允许三方进行调用,这样会导致失败

selenium中有8中定位方法,为什么appium和它很像?

其实,它俩属于师出同门的关系,你可以看一下,appium的定位方法是来自于selenium模块的,但appium有很多方法是在原生中不能用的,比如,你在android中找css样式,不太可行吧?Selenium为了这种有的能用有的不能用的方法,干脆就都提供给你,不能用就报错。我也是干自动化,想学习想快的话,推荐传智播客吧。一个发小在传智播客学测试,大学还没毕业就10k。

appium 页面分层怎么定位控件

控件的特征就是控件的属性,我们可以通过上一讲中的uiautomatorviewer去获取。

在appium的定位世界里,下面这些方法是可以为我们使用的。也就是说,我们通过下面几个约定好的方式,按照webdriver和appium的DSL(自行搜索并理解)进行控件特征的描述和定位。

继承自webdriver的方法,也就是通过这3个特征可以定位控件

find by "class" (i.e., ui component type,andorid上可以是android.widget.TextView)

find by "xpath" (i.e., an abstract representation of a path to an element, with certain constraints,由于appium的xpath库不完备的原因,这个不太推荐)

find by "id"(android上是控件的resource id)

由Mobile JSON Wire Protocol协议中定义的方法,更适合移动设备上的控件定位

-ios uiautomation: a string corresponding to a recursive element search using the UIAutomation library (iOS-only)

-android uiautomator: a string corresponding to a recursive element search using the UiAutomator Api (Android-only)

accessibility id: a string corresponding to a recursive element search using the Id/Name that the native Accessibility options utilize.

在appium 的client对Mobile JSON Wire Protocol中定义的方法进行了封装,使其调用起来更加方便

appium中只有text不同,而且是中文,该如何定位

像你这个情况最好的还是使用xpath,例如://android.widget.TextView[@text='异常行为 ']

如果直接用text属性拿不到的话(可能内部不是text属性,有时text属性会变为name或者其他属性),可以使用属性通配符://android.widget.TextView[@*='异常行为 ']

appium使用xpath定位元素并点击,为什么查找不到元素呢

这样定位会报错。xpath是按照树的层级一层一层识别元素。在uiautomatorviewer,识别到的元素前缀都是从0开始,而转换成xpath,是需要从1开始的,类似第一个层级,第二个层级

driver.findElementByXPath(

"//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.EditText[1]");

改写下定位元素到1,继续调试下

appium Python 能定位class=android.widget.FrameLayout这种吗

只要是在结构中的,就能定位到。如果有多个,可以用index,如果还定位不到,就使用xpath

标签:appium定位


已有5位网友发表了看法:

  • 访客

    访客  评论于 2022-10-08 01:39:08  回复

    ecursive element search using the UiAutomator Api (Android-only)accessibility id: a string corresponding to a rec

  • 访客

    访客  评论于 2022-10-07 16:26:27  回复

    装chrome浏览器,下载对应版本的chromeDriver,使用appium初始化Chrome浏览器相关设置,可以启动chrome,利用chromedriver实现自动化。

  • 访客

    访客  评论于 2022-10-08 01:21:59  回复

    ium模块的,但appium有很多方法是在原生中不能用的,比如,你在android中找css样式,不太可行吧?Selenium为了这种有的能用有的不能用的方法,干脆就都提供给你,不能用就报错。我也是干自动化,想学习想快的话,推荐

  • 访客

    访客  评论于 2022-10-07 14:33:24  回复

    ,继续调试下appium Python 能定位class=android.widget.FrameLayout这种吗只要是在结构中的,就能定位到。如果有多个,可以用index,如果还定位不到,就使用xpath

  • 访客

    访客  评论于 2022-10-07 21:44:21  回复

    et.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.EditText[1]");改写下定位元素到1,继续调试下appium Pyth

欢迎 发表评论:

黑客教程排行
最近发表
标签列表