• 你为什么会加班? at August 16, 2018

    曾经在某公司里面有考勤排行榜。。排名靠后会被HR谈话。

  • 也希望使用过httpRunner的小伙伴一起讨论交流一下。

  • 谢谢提醒,我这边尝试了一下,也是ok的!

  • 你这个学习方向搞错了,应该是你先要确定用Python来做什么?自动化测试?接口测试?爬虫?你要学自动化测试就去安装selenium,appium等框架,你要学接口测试,爬虫就去安装requests....而不是说一上来就先安装工具。
    就好像你买了一台新电脑,你不能因为里面应用少就打开应用市场把所有软件就下载下来安装吧,而是先确定你需要什么软件,再去下载。

  • 我有好几个测试同事从测试转了产品,和他们交流了下,转产品之前一定要对产品有热情,感兴趣,然后再转。而不是说觉得测试工作无聊转到产品,产品的工作量不一定测试工作量低,各种画交互,设计需求,无止境的需求评审会,写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)