uiautomatorviewer 定位
appium 在虚拟机中并不好定位,前提是adb可以连接, 这时候,我们就可以借助一个ui定位,搜索
uiautomatorviewer.bat (这个软件是安装sdk的时候安装下来的)
使用完成之后的,就可以点击左上角的更新
从左往右四个按钮分别是
1、打开已保存的布局
2、获取详细布局
3、获取精简布局
4、保存当前布局
每当虚拟机的页面发生变化的时候,就可以点击第二或者第三个(必须更新,不会自动同步)
成功。
Appium Desktop的Inspector定位
前提也是adb连上,appium可以正常使用,才会出现
Inspector 可以模拟用户动作, 或者可以 录制一系列操作,然后转换成代码, 减少我们一大部分代码量
使用demo可以参考: https://www.cnblogs.com/c-keke/p/14981257.html
顶部区域解析
从左往右的按钮依次是
- Select Element:选择元素
- Swipe By Coordinates:选择滑动的起始和结束位置
- Tap By Coordinates:使得手机界面变换可操作状态,可以点击界面的元素
- Back:模拟Android的返回键
- Refresh Source & Screenshot:刷新页面,用来重新获取手机当前界面
- Start Recording:录制操作
- Search for element:校验定位表达式
- Copy XML Source to Clipboard:复制XML树
- Quit Session & Close Inspector:退出当前Session
侧面*区域解析
- tap:点击该元素
- send keys:输入 针对输入框的操作
- clear:清空
实战
1、打开手机的设置
2、点击输入框,搜索
3、输入"WLAN"
4、点击只是出现WLAN的页面
5、输出页面出现的wifi名称和连接状态
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1.1'
desired_caps['deviceName'] = '127.0.0.1:21503'
# com.android.settings/com.android.settings.Settings
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = 'com.android.settings.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(5) # 稳定元素
click_input = driver.find_element_by_id('com.android.settings:id/search').click() # 启动放大镜
# 搜索 WLAN
search_input = driver.find_element_by_id('android:id/search_src_text')
search_input.send_keys('WLAN') # 输入参数
# 点击 WLAN
search_button = driver.find_element_by_xpath("//android.widget.TextView[@text='WLAN']") # class 下的一个文本名字
# print(search_button.text)
search_button.click()
# 点击wlan信息
wl_msg = driver.find_elements_by_id('android:id/list')
for wl in wl_msg:
# 输出wifi名称
name = wl.find_element_by_id('android:id/title')
print(name.text) # wifi名字
wifi_style = wl.find_element_by_id('android:id/summary')
print(wifi_style.text) # wifi状态