• #29 楼 @jphtmt 感谢提醒。这块暂时问题不大,因为随机到的可能较小,且假设端口已经被占用,会重新分配端口。

  • #18 楼 @a_little 目前不兼容 python3,不过从报错原因来看是因为 configparser 没获取到 minicap 的绝对路径,你可以直接手动配置 data/test.ini 文件。配置说明你可以看 doc 内的 parameter_configuration.md。把里面所有的字段都给手动配置了。
    #21 楼 @Jhon 没访问到包,你也手动配置 data/test.ini 的参数信息后,然后运行 po.integration.py。这是单线程的方法,可以获取到更详细的报错信息

    我在 windows,linux,macos 上都运行测试过,所以大多错误应该是环境的问题,可以看项目里写的详细文档

    建议 Python 新手首次运行使用 pycharm,用强大的 ide 如同老师可以帮你处理很多事情。

  • #10 楼 @JonnyNan
    #8 楼 @Jhon 问题解决了吗?手机是需要开启 usb 调试的,不然电脑和手机无法通信

  • #3 楼 @Jhon 你 python 环境配置 pip 了吗?,setup 的原理是调用 pip 安装。如果配置了还是报错。尝试手动安装库:
    'pyyaml','matplotlib','Appium-Python-Client','selenium','termcolor'

    pip install 库名

    安装成功后,即可运行,python demo_run.py

  • #17 楼 @seveniruby
    拿 python requests 作为举例

    
    {
        "code": 200,
        "msg": "success",
        "data": {
            "user_nick": "cntao",
            "settings": {
                "nick": "t",
            },
            { "test":{
                "name":"xiaozhang"          }
            }
            { "test":"b"
            }
            "vip_level": 2,
        }
    }
    
    
    import requests
    
    req = requests.get('http://testerhome.com/xx').json()
    print req['code']
    print req['data']['user_nick']
    print req['data']['settings']['nick']
    print req['data'][0]['test']
    print req['data'][0]['test']['name']
    
    

    输出:

    • 200
    • cntao
    • t
    • {"name":"xiaozhang"}
    • xiaozhang
  • #7 楼 @seveniruby 请教一下,看这个文档类似 python 的 requests 模块,和 java 的 okhttp 模块,只看出是一个请求框架,测试框架的特性展示在什么地方?

    举个 python 的例子

    import requests
    
    req = requests.get(url='www.testerhome.com/xxx')
    
    print req.json()
    #json格式
    
    print req.status_code
    #状态码
    
    
  • #3 楼 @muwu711 你的路径写的有问题。

    "E:\\Appium\\Mailchat\\image\\getscreen\\p3.png"
    

    或者:

    "E:/Appium/Mailchat/image/getscreen/p3.png"
    
  • #9 楼 @lose 用例的组织使用的是 yaml,支持用例的继承,多重继承。常见的场景也有封装在用例里,例如循环用例,等待等

  • 截图存储的 api 是:self.driver.save_screenshot()

    self.driver.save_screenshot(file_path)
    
  • 你需要仔细看错误提示
    解决方法:adb -s [device_name] tcpip 5556
    adb connect 可以连接大量设备,我这边测试过 10 台 +

  • 实现起来不难,贴下我实现的代码吧

    • 1.启动 appium,指定 appium 端口和 bootstrap 端口与 device
    
    def start_appium(self):
        """
        启动appium
        p:appium port
        bp:bootstrap port
        :return: 返回appium端口参数
        """
    
        aport = random.randint(4700, 4800)
        bpport = random.randint(4700, 4800)
        U.cmd("appium -p %s -bp %s -U %s" %
              (aport, bpport, self.device))  # 启动appium
        U.Logging.success('start appium :p %s bp %s' % (aport, bpport,))
        U.sleep(10)
        return aport
    
    • 2.继承步骤 1 的端口与 device,启动 driver,需要注意的的是 appium 偶尔会启动失败,重试即可
    def start_appium(self):
        """
        启动driver
        :return: 
        """
    
        number_of_starts = 0
        while number_of_starts < 6:
            try:
                self.driver = webdriver.Remote(
                    'http://0.0.0.0:%s/wd/hub' %
                    self.__get_appium_port(), self.device_l)
                U.Logging.debug('appium start success')
                return self.driver
            except Exception as e:
                number_of_starts += 1
                U.Logging.error('Failed to start appium :{}'.format(e))
                U.Logging.error(
                    'Try restarting the appium,Trying the {} frequency'.format(number_of_starts))
                U.sleep(5)
        if number_of_starts == 4:
            U.Logging.error('Can not start appium, the program exits')
            exit()
    

    3.关于多进程,使用 multiprocessing,检查设备数量,同时开启每个设备的进程,实现并行测试

    import testcase.Integration
    from multiprocessing import Pool
    
    
    def case_sun(device):
        a = testcase.Integration.RunApp(device)
        a.case_start()
    
    
    device_list = testcase.Integration.get_device_info()
    pool = Pool(len(device_list))
    pool.map(case_sun, device_list)
    pool.close()
    pool.join()
    

    效果图
    Alt text

  • 可以不写 appActivity,注释掉试试

  • TesterHome 新秀培养计划 at 2014年08月25日

    HI,我叫 Joko。现在正在加班。
    来 testerhome 这两个月认识到了自己学识浅陋。每个人都那么上进,积极。
    既然来到了这个集体,你们能做到,我也会努力靠近大家。现在每天都会或多或少学习测试技能~
    之前缺乏同行交流,很缺乏测试理论知识,希望能和大家学习分享。

  • #2 楼 @hobbs 看看是不是 xx 助手搞的鬼