• 我有好几个测试同事从测试转了产品,和他们交流了下,转产品之前一定要对产品有热情,感兴趣,然后再转。而不是说觉得测试工作无聊转到产品,产品的工作量不一定测试工作量低,各种画交互,设计需求,无止境的需求评审会,写 PPT 汇报 Boss,和研发撕逼等等。所以要看你自己转产品的动机是什么?

  • 从你的第一张截图报错信息来看,是说你 css 定位(css selector)的方式不支持。你点击报错信息跳转代码,检查下里面哪个地方使用了 css 定位的。

  • 谢谢支持!😀

  • 自己坐个沙发。😀

  • 你那个直接获取元素的宽高是不准确的,你要获取滑动的坐标点位置,然后去滑动。
    坐标点获取可以使用绝对坐标或者相对坐标,我的博客有关于滑动的实践,你可以参考一下:

  • Appium 服务是否指定 pb 端口。我的博客有详细的操作实践,可以参考:Appium 多进程并发测试

  • 什么时候开课啊,是网络课程吗?😀

  • 目前使用了一种替代方案实现了缩放,结合 MultiAction 和 TouchAction。

    滑动原理图解

    x = driver.get_window_size()['width']
    y = driver.get_window_size()['height']
    
    
    
    # 放大
    def zoom():
        action1 = TouchAction(driver)
        action2 = TouchAction(driver)
        zoom_action = MultiAction(driver)
    
        action1.press(x=x*0.4, y=y*0.4).move_to(x=x*0.1, y=y*0.1).wait(500).release()
        action2.press(x=x*0.6, y=y*0.6).move_to(x=x*0.8, y=y*0.8).wait(500).release()
    
        print('start zoom...')
        zoom_action.add(action1, action2)
        zoom_action.perform()
    
    
    
    # 缩小
    def pinch():
        action1=TouchAction(driver)
        action2=TouchAction(driver)
        pinch_action=MultiAction(driver)
    
        action1.press(x=x*0.1, y=y*0.1).move_to(x=x*0.4, y=y*0.4).wait(500).release()
        action2.press(x=x*0.8, y=y*0.8).move_to(x=x*0.6, y=y*0.6).wait(500).release()
    
        print("start pinch...")
        pinch_action.add(action1, action2)
        pinch_action.perform()
    
  • 补充一下测试环境:

    测试环境

    • 夜神模拟器 Android 5.1.1
    • 百度地图 Android app V10.6.5
    • Win 10 64bit
    • Appium 1.7.2
  • 你用的是什么模拟器啊,建议你重启下 Appium 服务和模拟器看看。

  • 使用 appium-doctor 先做个全面体检吧:
    1.安装 appium-doctor: npm install appium-doctor -g
    2.在控制台输入命令:appium-doctor 看到如下提示说明整体环境配置成功。

    C:\Users\Shuqing>appium-doctor
    info AppiumDoctor Appium Doctor v.1.4.3
    info AppiumDoctor ### Diagnostic starting ###
    info AppiumDoctor   The Node.js binary was found at: D:\program files\nodejs\node.exe
    info AppiumDoctor   Node version is 6.11.3
    info AppiumDoctor   ANDROID_HOME is set to: E:\Andriod_sdk
    info AppiumDoctor   JAVA_HOME is set to: C:\Program Files\Java\jdk1.8.0_05
    info AppiumDoctor   adb exists at: E:\Andriod_sdk\platform-tools\adb.exe
    info AppiumDoctor   android exists at: E:\Andriod_sdk\tools\android.bat
    info AppiumDoctor   emulator exists at: E:\Andriod_sdk\tools\emulator.exe
    info AppiumDoctor   Bin directory of %JAVA_HOME% is set
    info AppiumDoctor ### Diagnostic completed, no fix needed. ###
    info AppiumDoctor
    info AppiumDoctor Everything looks good, bye!
    info AppiumDoctor
    
    
  • 这个是由于你的 toast 内容为中文,由于字符编解码问题导致不能识别,需要在代码顶部写注释如下即可

    # coding=utf-8
    
  • 站在测试角度我觉得选自己最能上手的语言完成就好,就拿我之前公司产品来说底层是 C,C++ ,应用层是 C# 来开发的。我不能能花大量时间把 C++,C# 语言学习精通(而且光 C++ 这门语言门槛就不低了)。

  • 首先将各个功能模块进行独立封装,比如封装登录操作 def login():, 退出操作:def logout():
    。伪代码如下:

    
    def login():
    def logout():
    
    

    然后你接下来要设计的测试用例是先登录再退出,就可以再封装一个方法比如 def test_loginout_action() 在这个方法先调用登录,再调用退出。

    def test_loginout_action()
        def login():
        def logout():
    
  • 外包现在确实不值得去了,最主要还是扎扎实实提高自身实力。

  • 暂时停更 at February 28, 2018

    身体是革命的本钱。

  • 繁体字,台湾同胞吗?

  • 好的,知道了。谢谢!

  • 基于楼上的答案,这里封装为一个方法如下:

    def kill_appiumServer(self,port):
    
           #查找对应端口的pid
           cmd_find='netstat -aon | findstr %s' %port
           print(cmd_find)
    
           result = os.popen(cmd_find)
           text = result.read()
           pid=text[-5:-1]
    
           #执行被占用端口的pid
           cmd_kill='taskkill -f -pid %s' %pid
           print(cmd_kill)
           os.popen(cmd_kill)
    
  • appium desktop 都是封装好的,无法使用命令来启动。另外想问一下,你那边关闭 appium 服务是怎么实现的?是用 taskkill /f 直接全部关闭 node.exe 进程还是其他方式呢?

  • 将 stdout=stdout=subprocess.PIPE 改为:stdout=open('E:/logs.log','a') 就可以了。😅

  • 聊聊用过的智能硬件 at January 15, 2018

    是我们公司的一个智能家居事业部的指纹锁,3000 多一把。具体就不说品牌名称了(怕被 HR 看到请去喝茶。。)老板朋友出于情义买了一把,结果出了这个闹剧,客户电话还打不通。老板把相关负责人骂了一顿,太打脸了。

  • 聊聊用过的智能硬件 at January 15, 2018

    指纹锁

    还有看似高大上的指纹锁,结果客户买了晚上按指纹进不了家门,求客户心理阴影面积。。。😅