Appium进行移动端自动化测试

  1. 在手机打开开发者模式并且通过usb数据线连接电脑,使用adb devices 检查链接是否正确

  2. 打开Android SDK目录下\tool\uiautomatorviewer.bat工具,工具分四个工作区。

    按截图中顺序说明:
        * 工作栏:第一与第四分别为打开和保存,中间两个为捕获按钮,点击捕获按钮会将链接电脑手机的页面捕获下来在工具中展示,工具不会随着手机视图更新而自动更新。需要手动捕获
        * 页面视图:捕获时手机的手机展现的视图
        * 页面层级:捕获的视图的元素层级
        * 元素属性:所查看的元素属性,这里需要注意,Android中ID(resource-id)不一定是唯一的。

  3. 元素操作:由于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 等方法进行操作。

  1. 功能支持:同样的,Appium作为移动端自动化测试解决方案,在Selenium的基础上也新定义的一系列移动设备的常见操作,例如滑动,打开系统栏,缩放,双击,长按,摇一摇等之类的函数。但对于我们业务测试而言,很少用到,所以这里就不多详细介绍,有兴趣了解的可以自行百度了解了解。
  2. 案例
    #  在"通讯录"页面打开聊天窗口
    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

你可能感兴趣的:(Appium进行移动端自动化测试)