-
在手机打开开发者模式并且通过usb数据线连接电脑,使用
adb devices
检查链接是否正确
-
打开Android SDK目录下
\tool\uiautomatorviewer.bat
工具,工具分四个工作区。
按截图中顺序说明:
* 工作栏:第一与第四分别为打开和保存,中间两个为捕获按钮,点击捕获按钮会将链接电脑手机的页面捕获下来在工具中展示,工具不会随着手机视图更新而自动更新。需要手动捕获
* 页面视图:捕获时手机的手机展现的视图
* 页面层级:捕获的视图的元素层级
* 元素属性:所查看的元素属性,这里需要注意,Android中ID(resource-id)不一定是唯一的。 -
元素操作:由于Appium是在Selenium基础上二次开发的产品,所以在使用上与Selenium几乎一致,但为了解决Android定位的问题,在原Selenium8种定位的基础上新添加了10种定位函数,但一般我们使用Selenium常用的就够了
resource-id = id driver.find_element_by_id("com.tencent.mm:id/apx")
class = class_name driver.find_element_by_class_name("android.view.View")
text = name driver.find_element_by_name("优柯玛")
content-desc = AccessibilityId 截图中无此ID
由于Android中ID并不一定是唯一的,所以也可以用xpath进行定位:
xpath = driver.find_element_by_xpath("//android.view.View[contains(@text,'优柯玛')]");
获取到元素之后,与Selenium一样,也有click,send_keys,clear 等方法进行操作。
- 功能支持:同样的,Appium作为移动端自动化测试解决方案,在Selenium的基础上也新定义的一系列移动设备的常见操作,例如滑动,打开系统栏,缩放,双击,长按,摇一摇等之类的函数。但对于我们业务测试而言,很少用到,所以这里就不多详细介绍,有兴趣了解的可以自行百度了解了解。
- 案例
# 在"通讯录"页面打开聊天窗口
def __open_chat(self, keyword):
all_chat = self.driver.find_elements_by_id("com.tencent.mm:id/ja") # 通过ID获取当前页面所有好友列表
chat_name = [x.text for x in all_chat] # 上一步获取的好友列表的名称
chat_old = [] # 上一次名称列表,用以判断页面是否完全加载完成
while chat_name != chat_old: #如果当前列表名称不等于上一次名称
chat_old = chat_name[::]
for names in all_chat: #循环当前名称列表,
if names.text == keyword: #判断其中是否有元素的名称与传入的参数一致,如果有则点击该元素并返回True
names.click()
self.driver.find_element_by_id("com.tencent.mm:id/anc").click() #在通讯录中点击好友后弹出的页面中点击发消息
return True
else:
width = self.driver.get_window_size()['width'] # 获取当前设备的页面尺寸
height = self.driver.get_window_size()['height']
self.driver.swipe(width * 0.5, height * 0.75, width * 0.5, height * 0.25) # 向上滑动屏幕
all_chat = PageElement("com.tencent.mm:id/ja").entity(self.driver, True) #滑动之后重新获取好友列表
chat_name = [x.text for x in all_chat] #更新好友名称列表
else:
return False
网友评论