• Appnuim作业题


    Appium 作业 1

    根据课堂视频,安装搭建Appium运行环境,并运行示例代码



    安装Appium Python Client 包

    安装Appium Python Client 包的命令

    pip install Appium-Python-Client



    安装 Appium Server

    下载安装Appium Desktop的安装包, 下载地址 https://github.com/appium/appium-desktop/releases/latest 下载扩展名为.exe的包



    安装 Android Studio

    官方中文网站 https://developer.android.google.cn/studio/archive.html 选择2.3.3 版本,包含了sdk的安装包 Windows IDE bundle with SDK (64-bit)

    特别注意,安装程序要求路径中最好不要有空格。



    安装JDK

    到 oracle 官方网站下载JDK 1.8 的安装包,进行安装



    安装安卓模拟器

    先试试android studio里面自带的模拟器

    打开 studio,创建一个项目,通过tools - android - AVD Manager菜单创建一个安卓模拟设备


    如果不行,可以试试Genymotion,安装过程参考 https://github.com/jcyrss/songqin-testdev/issues/3



    运行自动化测试

      • 运行虚拟机,下载开发者头条应用,http://toutiao.io/s/apk 
        安装到虚拟机中并运行;
        注册一个账号
      • 根据课堂教学视频,运行Appium Server,并设置、启动服务
      • 下载自动化脚本https://github.com/jcyrss/songqin-testdev/blob/master/appium/src/lesson1/toutiao_login.py 修改其中用户名,密码为你注册的账号,运行脚本完成一个自动登录功能
        • dfgdfg

          Appium 作业 2


          • 到如下网址下载 多多计算器 

          https://github.com/jcyrss/songqin-testdev/raw/master/appium/uploads/duoduoCalculators.apk

          • 用 aapt.exe 命令查看 apk包的 appPackage 信息和 主 Activity 信息
          • 用 UIAutomator Viewer 查看应用界面元素信息
          • 编写python程序,完成一个 计算 3+9 ,结果 再乘以5 的自动化功能. 最后判断计算结果是否为60,如果是,测试通过;否则测试不通过
          • # coding=utf8
            
            from appium import webdriver
            import time,traceback
            
            
            
            desired_caps = {}
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = '6'
            desired_caps['deviceName'] = 'test'
            desired_caps['app'] = r'd:apkduoduoCalculators.apk'
            desired_caps['appPackage'] = 'com.ibox.calculators'
            desired_caps['appActivity'] = '.SplashActivity'
            desired_caps['unicodeKeyboard']  = True
            desired_caps['noReset'] = True
            desired_caps['newCommandTimeout'] = 6000
            #启动Remote RPC
            driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
            driver.implicitly_wait(10)
            
            try:
                # -----------------
            
            
            
                num3 = driver.find_element_by_id("com.ibox.calculators:id/digit3")
                num5 = driver.find_element_by_id("com.ibox.calculators:id/digit5")
                num9 = driver.find_element_by_id("com.ibox.calculators:id/digit9")
                plus = driver.find_element_by_id("com.ibox.calculators:id/plus")
                mul = driver.find_element_by_id("com.ibox.calculators:id/mul")
                equal = driver.find_element_by_id("com.ibox.calculators:id/equal")
            
                num3.click()
                plus.click()
                num9.click()
                equal.click()
                mul.click()
                num5.click()
                equal.click()
            
            
                # 检查结果,需要我们去找结果对应的界面元素,发现是下面这个TextView
                # 研究发现没有特点,大家想想我们该怎么办
                # 可以看看父节点有没有唯一标识,发现 父节点是有id的,
                # 就可以怎么样?
                # 先查找父节点,
                # 再根据父节点元素 调用 find element 就是在父节点的范围内 查找
                retLayout = driver.find_element_by_id('com.ibox.calculators:id/cv')
                retTvs     = retLayout.find_elements_by_class_name('android.widget.TextView')
                retStr = retTvs[1].text
                print(retStr)
            
                if retStr == '60':
                    print('pass')
                else:
                    print('fail')
            
            
            
            
                    # -----------------
            
            except:
                print(traceback.format_exc())
            
            input('**** Press to quit..')
            driver.quit()
            

              

            Appium 作业 3

              • 找到一个安卓设备(没有可以向朋友借用一下),将其连接到电脑上,根据课堂视频指导,确保可以被命令 adb devices -l 检测到

              • 安装多多计算器(怎么装?自己想办法)

              • 练习用 Appium Desktop中的 inspector查看界面。

              • 将上次作业,用xpath方式定位元素,再实现一遍

          • # coding=utf8
            
            from appium import webdriver
            import time,traceback
            
            
            
            desired_caps = {}
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = '7.1'  #
            desired_caps['deviceName'] = 'test'
            desired_caps['app'] = r'd:apkduoduoCalculators.apk'
            desired_caps['appPackage'] = 'com.ibox.calculators' #
            desired_caps['appActivity'] = 'com.ibox.calculators.SplashActivity'
            desired_caps['unicodeKeyboard']  = True
            desired_caps['noReset'] = True
            desired_caps['newCommandTimeout'] = 6000
            
            driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
            driver.implicitly_wait(10)
            
            try:
                # -----------------
            
                num3 = driver.find_element_by_id('com.ibox.calculators:id/digit3')
                num9 = driver.find_element_by_id('com.ibox.calculators:id/digit9')
                num5 = driver.find_element_by_id('com.ibox.calculators:id/digit5')
                plus = driver.find_element_by_id('com.ibox.calculators:id/plus')
                equal = driver.find_element_by_id('com.ibox.calculators:id/equal')
                mul  = driver.find_element_by_id('com.ibox.calculators:id/mul')
            
                num3.click()
                plus.click()
                num9.click()
                equal.click()
                mul.click()
                num5.click()
                equal.click()
            
                # ----------------------
                xpath = '//*[@resource-id="com.ibox.calculators:id/cv"]/android.widget.TextView[2]'
                ele = driver.find_element_by_xpath(xpath)
            
                retStr = ele.text
            
                # ----------------------
            
            
                print(retStr)
                if retStr == '60':
                    print('pass')
                else:
                    print('fail!')
            
                    # -----------------
            
            except:
                print(traceback.format_exc())
            
            input('**** Press to quit..')
            driver.quit()
            

              

            Appium 作业 4

              • 找到一个安卓设备(没有可以向朋友借用一下)

              • 到华为官网 http://app.hicloud.com/ ,微信扫码右侧二维码,安装华为应用市场apk,

                如果手机安装后不能打开的,可以点击这里下载老版本安装,老版本安装运行后,不要选择更新到新版本。

              • 进入排行页面,滚动到 口碑最佳 部分

              • 打印出所有 口碑最佳 部分的5个应用名称

          • # coding=utf8
            from appium import webdriver
            import time
            import traceback
            
            
            desired_caps = {}
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = '6'
            desired_caps['deviceName'] = 'test'
            desired_caps['app'] = r'd:apkHiSpace.apk'
            desired_caps['appPackage'] = 'com.huawei.appmarket'  #app package名,指定了要运行的app
            desired_caps['appActivity'] = 'com.huawei.appmarket.MainActivity' #app默认Activity
            desired_caps['unicodeKeyboard']  = True
            desired_caps['noReset'] = True
            desired_caps['newCommandTimeout'] = 6000
            driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #启动Remote RPC
            driver.implicitly_wait(10)
            
            try:
                # ------------------------------
                javaCode = 'new UiSelector().resourceId("com.huawei.appmarket:id/tabLayout").childSelector(new UiSelector().text("排行") )'
            
                driver.find_element_by_android_uiautomator(javaCode).click()
            
                javaCode = 'new UiSelector().text("总榜").resourceId("com.huawei.appmarket:id/ItemTitle")'
                ele = driver.find_element_by_android_uiautomator(javaCode)
                destPosY = ele.location['y']
                xPos = ele.location['x']
            
                driver.implicitly_wait(0.5)
                while True:
                    driver.swipe(xPos,destPosY,xPos,destPosY-100, 1000)
                    javaCode = 'new UiSelector().text("口碑最佳").resourceId("com.huawei.appmarket:id/ItemTitle")'
                    eles = driver.find_elements_by_android_uiautomator(javaCode)
                    if not eles:
                        continue
            
            
                    driver.swipe(xPos,eles[0].location['y'],xPos,destPosY,3000)
                    break
            
                driver.implicitly_wait(10)
            
            
                eles = driver.find_elements_by_class_name("android.widget.TextView")
                tvs = []
                for ele in eles:
                    tvs.append(ele.text)
            
                tvsStr = '|||'.join(tvs)
            
                pos1 = tvsStr.find('口碑最佳|||')
                targetStr = tvsStr[pos1:]
            
            
            
            
                def getName(No): #'1', '2'
                    tp1 = targetStr.find(No+'|||')  + 4
                    tp2 = targetStr.find('|||',tp1)
                    return targetStr[tp1:tp2]
            
            
                print('================ finally ++++++++++++ 
            ')
                for i in range(1,6):
                    print(getName(str(i)))
            
            
            
                    # ------------------------------
            
            except:
                print(traceback.format_exc())
            
            input('**** Press to quit..')
            driver.quit()
            

              

            Appium 作业 5

              • 安装开发者头条应用
              • 打开该应用,在阅读标签页中,点击 精选文章的第一篇,验证确实能打开同名文章
              • 按返回键, 验证能够正确返回 阅读标签页
          • # coding=utf8
            
            from appium import webdriver
            import time,traceback
            
            desired_caps = {}
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = '5.1'
            desired_caps['deviceName'] = 'test'
            desired_caps['app'] = r'e:apk	outiao.apk'
            desired_caps['appPackage'] = 'io.manong.developerdaily'
            desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'
            desired_caps['unicodeKeyboard']  = True
            desired_caps['noReset'] = True
            desired_caps['newCommandTimeout'] = 6000
            #启动Remote RPC
            driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
            print driver.session_id
            driver.implicitly_wait(10)
            
            try:
                # -----------------
            
                # 用下面的表达式,也可以用xpath
            
                code = u'new UiSelector().resourceId("io.manong.developerdaily:id/btn_item").instance(0).childSelector(new UiSelector().className("android.widget.TextView"))'
                ele1 = driver.find_element_by_android_uiautomator(code)
                
                text1 = ele1.text
                print text1
            
                ele1.click()
            
                time.sleep(2)
            
                ele2 = driver.find_element_by_id('io.manong.developerdaily:id/tv_title')
                text2 = ele2.text
                print text2
            
                if text2 == text1:
                    print 'pass'
                else:
                    print 'fail'
            
            
                driver.press_keycode(4)
            
                #  检查是否回到刚才的页面
                ele2 = driver.find_elements_by_id('io.manong.developerdaily:id/tab_bar_plus')
            
                if ele2:
                    print 'we return back'
            
                # -----------------
            
            except:
                print traceback.format_exc()
            
            driver.quit()
            

              

  • 相关阅读:
    【more effective c++读书笔记】【第6章】杂项讨论
    【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(2)
    【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(1)
    【more effective c++读书笔记】【第5章】技术(6)——Proxy classes(代理类)
    【more effective c++读书笔记】【第5章】技术(5)——Reference counting(引用计数)(2)
    【more effective c++读书笔记】【第5章】技术(5)——Reference counting(引用计数)(1)
    【more effective c++读书笔记】【第5章】技术(4)——Smart Pointers(智能指针)
    【more effective c++读书笔记】【第5章】技术(3)——要求(或禁止)对象产生于heap之中
    【more effective c++读书笔记】【第5章】技术(2)——限制某个class所能产生的对象数量
    【more effective c++读书笔记】【第5章】技术(1)——将constructor和non-member functions虚化
  • 原文地址:https://www.cnblogs.com/xiao-qing/p/9230905.html
Copyright © 2020-2023  润新知