• android真机自动化测试


    appium执行用例时报错问题:

    问题解析:

    一般该种情况都是因为来连接了多个设备,验证办法:cmd->执行adb devices  看结果是否是多个devices ,如果是这个问题,停掉多余设备,剩余一个设备就可以了。

    android真机自动化测试

    1、appium相关安装(eclipse下)见http://www.cnblogs.com/wangcp-2014/p/5717589.html参考selenium的安装

      1.1appium的安装除了selenium安装的东西外 还需要再切换到E:PythonScripts 目录下cmd输入:pip install Appium-Python-Client  安装appium client

      1.2 eclipse下导入开发框架项目---设置appium---项目->properties->PyDev-Interpreter/Grammar中的click here to configure an interpreter not listed中进行设置,进入之后,Forced Builtins选项,点击new,输入appium保存,点击apply,点击确定,重启下eclipse,ok

    2、android-sdk下载及安装

      2.1 android-sdk下载及安装

      2.2 配置环境变量

           ANDROID_HOME=android-sdk的安装目录

           PATH=.; %ANDROID_HOME% ools; ; %ANDROID_HOME%platform-tools;。。。

      2.3 通过cmd下输入adb验证配置是否正确

      2.4 启动adb  cmd下输入adb start-server 启动adb 返回没有报错就是启动成功了 (报错时查看端口是否被占用,结束占用该端口的进程就可以了)

      2.5 连接测试手机真机,cmd输入adb devices 验证 devices连接成功

       补充:cmd下输入adb shell  进入android的linux系统

    3、appium配置

      

    4、运行appium不报错,进入debug状态证明配置没问题了

    5、eclipse写测试用例代码

    # -*- coding: utf-8 -*-
    import os
    from appium import webdriver
    import unittest
    from time import sleep
    
    # Returns abs path relative to this file and not cwd
    PATH = lambda p: os.path.abspath(
        os.path.join(os.path.dirname(__file__), p)
    )
    
    class MyClass(unittest.TestCase):
        '''
        classdocs
        '''
    
        def setUp(self):
            '''
            Constructor
            '''
    #################
            desired_caps = {}
            desired_caps['deviceName'] = 'device'  
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = '4.3'  
            desired_caps['app'] = PATH('D:\Workspace\zufangdai_app_appium_test\yuefuApp\agent4.0.0_test.apk')
            desired_caps['appPackage'] = 'com.bj58.finance.agent'  
            desired_caps['appActivity'] = 'com.bj58.finance.agent.LuncherActivity' 
            desired_caps['waitappActivity'] = 'com.bj58.finance.agent.activity.LoginActivity'
            desired_caps['unicodeKeyboard'] = 'True'
            desired_caps['resetKeyboard'] = 'True'
            self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    
        def test_login_success(self):
            self.driver.find_element_by_id("com.bj58.finance.agent:id/login_et_username").send_keys("18612180000")
            self.driver.find_element_by_id("com.bj58.finance.agent:id/login_et_password").send_keys("58shenqi58")
            self.driver.find_element_by_id("com.bj58.finance.agent:id/login_btn_login").click()
            sleep(10)
            self.driver.find_elements_by_xpath("//android.widget.Button[@resource-id='com.bj58.finance.agent:id/item_btn']")
            self.driver.find_element_by_id("com.bj58.finance.agent:id/item_btn").click() 
            sleep(5)
            
            
         def tearDown(self):
             self.driver.quit()
            
    if __name__ == '__main__':
        suite = unittest.TestLoader().loadTestsFromTestCase(MyClass)
        unittest.TextTestRunner(verbosity=2).run(suite)

    运行结果:

    ok

    appium执行用例时报错问题:

    1、执行时报unknown host service

    问题解析:

    一般该种情况都是因为连接了多个设备,验证办法:cmd->执行adb devices  看结果是否是多个devices ,如果是这个问题,停掉多余设备,剩余一个设备就可以了。

    2、输入框输入是输不进去后台报错

    解决办法:

        首次运行时会提示让安装appium setting 和另一个与appium运行有关的,点击同意就好了,进入手机输入法会发现多了一个appium。。。。输入法,然后如果运行时出现输入框输不进去东西时,那么在运行前将输入法手动切换成appium。。。那个输入法,然后重新运行用例,输入问题就解决了

    3、Error: Requested a new session but one was in progress

    问题分析:appium没有正常进入debug模式,或者因为设置了预启动,预启动的应用session,没有正常结束,就执行了测试代码(代码中还包括了应用的启动)

    解决方法:1、取消预启动应用选择

    启动appium后日志显示正常进入debug模式,再执行测试代码

  • 相关阅读:
    spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心
    spring cloud 入门系列二:使用Eureka 进行服务治理
    spring cloud 入门系列一:初识spring cloud
    Java网络编程基础(Netty预备知识)
    spring boot 系列之五:spring boot 通过devtools进行热部署
    spring boot 系列之四:spring boot 整合JPA
    spring boot 系列之三:spring boot 整合JdbcTemplate
    spring boot 系列之二:spring boot 如何修改默认端口号和contextpath
    关于window.location.href 传中文参数 乱码问题
    Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
  • 原文地址:https://www.cnblogs.com/wangcp-2014/p/5765083.html
Copyright © 2020-2023  润新知