Appium-desktop元素定位

Posted mr-zy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Appium-desktop元素定位相关的知识,希望对你有一定的参考价值。

一、打开appium-desktop,点击start session

技术图片

 

二、打开后,点击屏幕右上角的搜索按钮

技术图片

 

三、然后会打开配置页面,在本地服务配置信息同上面写的代码链接配置。填入正确的信息后,点击startSession

 技术图片

 

成功启动模拟器中的qq程序。如下图。此时如果模拟器和appium-desktop中界面不同,可点击刷新按钮同步下。

技术图片

 

四、定位方式

1、id定位

举例:

点击定位元素按钮,点击左侧app界面中的登录定位元素后,就会出现selected element界面。

技术图片

 此时,右侧栏中可以看到,有个id,下拉滚动条会发现还有个resource-id。会发现他们两个是一样的。这就是说明,这个id是唯一的,登录按钮被唯一定位到,代码中就可以通过id直接定位===》find_element_by_id(‘com.tencent.mobileqq:id/btn_login‘)

#通过id定位如果右侧栏中只有resource-id,没有id,说明resource-id不是唯一的,也就是不能通过id定位方式定位元素.  

 

2、xpath定位

用定位元素按钮定位某个元素后,右侧selected element栏目中找到xpath,复制其对应的内容。通过xpath方法就可以定位

driver.find_element_by_xpath(‘//android.widget.EditText[@content-desc="请输入QQ号码或手机或邮箱"]‘)

技术图片

  

3、残障人士提示信息进行定位,也就是content-desc:

先用定位元素按钮定位某个元素后,右侧selected element栏目中,找到content-desc。复制content-desc的值后。通过find_element_by_accessibility_id(),将对应的值作为参数传入。

driver.find_element_by_accessibility_id(‘请输入QQ号码或手机或邮箱‘)

技术图片

 

4、AndroidUiautomator定位

 这个在运行时,调用的是Android自带的UI框架UiAutomator的Api。格式固定,介绍几个常用的格式如下

driver.find_element_by_android_uiautomator(new UiSelector().text("手机号"))
# 包含text文字
driver.find_element_by_android_uiautomator(new UiSelector().textContains("机"))
# 以text什么开始
driver.find_element_by_android_uiautomator(new UiSelector().textStartsWith("手"))
# 正则匹配text
driver.find_element_by_android_uiautomator(new UiSelector().textMatches("^手.*"))
 
# className
driver.find_elements_by_android_uiautomator(new UiSelector().className("android.widget.TextView"))
# classNameMatches
driver.find_elements_by_android_uiautomator(new UiSelector().classNameMatches("^android.widget.*"))
 
# resource-id、resourceIdMatches
driver.find_element_by_android_uiautomator(new UiSelector().resourceId("com.syqy.wecash:id/et_content"))
 
# description
driver.find_element_by_android_uiautomator(new UiSelector().description("S 日历"))
# descriptionStartsWith
driver.find_element_by_android_uiautomator(new UiSelector().descriptionStartsWith("日历"))
# descriptionMatches
driver.find_element_by_android_uiautomator(new UiSelector().descriptionMatches(".*历$"))

 

5.坐标定位点击操作

技术图片

# coding:utf-8
from appium import webdriver
from time import sleep
desired_caps = {
                platformName: Android,
                deviceName: 127.0.0.1:62001,
                platformVersion: 4.4.2,
                appPackage: com.baidu.yuedu,
                appActivity: com.baidu.yuedu.splash.SplashActivity
                }
driver = webdriver.Remote(http://127.0.0.1:4723/wd/hub, desired_caps)

sleep(5)
# 点弹出框去看看
driver.tap([(810, 1776), (1080, 1905)], 500)

# 返回上一页
driver.back()
sleep(2)

 

五、通过不同的定位方式查找元素 

我们也可以通过appium-desktop的search for element功能。通过定位方式和对应的值来查找元素,从而验证定位方式和值的正确性

技术图片

技术图片

可以看到定位方式就是我们第4种说的集中定位方式。选择一个定位方式,填入对应的值,点击search

技术图片

选中找到的元素,可以看到左侧对应手机界面中的元素被选中。从而也证明我们的这种定位方式和对应的值都是没问题的。可以定位到元素的。

如果是按钮,就点击  tap element ,相当于代码中的click()

如果是输入框,就在‘enter keys‘ 中输入内容,然后点击sendkeys就可以往已选的元素中输入内容,相当于代码中的send_keys()

 技术图片

 

六、录制

点击小眼睛图标的录制按钮,可以看到界面展现出来代码模块。可以选择录制语言=》python或其他

技术图片

然后和右侧selected element 栏目中的tap、send keys、clear 或者 search for element结合操作,根据search for element找到元素定位i,并tap或者sendkeys等操作。这些操作都会被录制下来并生成python代码。可直接使用

 

 

以上是关于Appium-desktop元素定位的主要内容,如果未能解决你的问题,请参考以下文章

APP——Python——元素定位方法01

Appium移动端自动化:Appium-Desktp的使用以及定位元素方式总结

Appium 学习三:Appium-Desktop 填坑

CSS代码片段

CSS代码片段

Appium学习元素定位