• STF 框架之 minitouch 工具 at 2016年03月15日

    #2 楼 @seveniruby 母鸡噢~ -。- ~我原来以为只是给 stf 用的。。。。。

  • “注意新建终端 --- 启动 stf,文章中给的例子实际测试无法访问 stf local —allow-remote”
    LZ 可能误会这条了哈 ~~~ 这个参数是用来让 STF 允许访问通过 adb connect 命令远程连接的设备,不是远程连接 STF 用的。。。毕竟一般 PC 的 USB 口数量是有限的。

  • #21 楼 @carl 这些问题我也碰到过的,windows 的 adb 有连接上限的,可以把连接的 ADB 和控制的 ADB 分开来,这样单台 PC 控制十几台还是没问题的,我试过 10 多台稳定运行了 8+ 小时的,如果更多就只能换 linux 了。 关于 IP 的问题其实把路由的 DHCP 关了,设备设置静态就不会变了

  • #14 楼 @carl 我们目前的路由大概单台可以支持 60 左右的设备,而且如果单台路由有上限,可以用多台,只需要把每台路由下的设备都端口映射出来。。然后在浏览器所在的网段用 adb connect 去连接对应路由的 IP 和映射的端口就可以连到设备了。当然无线确实有不方便的地方。。。环境影响太大,不稳定阿 -。-

  • #28 楼 @springs412 试下装下 STAX 再配置下 cfg

  • #25 楼 @springs412 我使用的场景暂时没你们的那么大哈,所以节点监控什么的,都是没考虑的,以后有机会再慢慢做完善哈。。第二个问题是的 无线只是用来 ADB 连接到设备上用,实际上设备的通讯还是通过具体的端口,只不过途径走的是无线连接。其实就类似手机用 WIFI 访问 IIS 服务器一样

  • #23 楼 @doria 只是针对性的做个小工具而已,方便操作用,BUG 还很多的,在其他项目的实用性不大,还是不献丑了哈

  • #6 楼 @alex_sheng 你可以看下 appium 的运行日志,它取的 context 名字,其实是用 adb shell 下的命令 cat /proc/net/unix 去正则寻找 WEBVIEW 的 PID 再根据 ps 命令查找 PID 对应的包名做组合的。 所以 你可以自己试试这些命令 或者看下运行的 LOG,一般来说 如果支持的 webveiw 的名字都是你说的规律的

  • WEBVIEW 的 context 名字不是固定的,是 Appium 根据你的设备具体的 webview 进程来获取的。
    你要先获取 。。。

  • 可以封装个通用方法,坐标用设备分辨率来换算。这样就所有设备都能用了

  • 其实。unittest 还有两个类方法,叫 setUpClass 和 tearDownClass

  • #21 楼 @yuwuhen333 windows 下用 C# 写了个窗体工具,可以批量管理的,linux 下的话 用 sh 脚本管理

  • #17 楼 @lanxiangtechnical 嗯 无线太不稳了。。。云测不会是这样做的 。。。

  • #9 楼 @monkey T_T 多谢指正。。哈哈哈 英文太渣。。。。 见笑见笑~~

  • #5 楼 @testly 额 这个暂时我只在安卓上用 所以不存在越狱的问题。。。 二的话 因为方案是在内部局域网运行的 独立的自组网,所以 wifi 速度不是问题,当然 问题还是有的。。。还需要不断完善

  • #4 楼 @monkey 哈哈。。居然打错了 马上改。。。。

  • Appium 主从远程控制执行 at 2015年06月11日

    #1 楼 @seveniruby “把所有的 android 的 4723 端口反弹到云端的服务器上. 然后用 adb connect 所有的端口, 最后通过一个 appium 来控制 ”。。。这个方法我很有兴趣,能说得稍微想详细点么,目前有大量设备的并发测试需求 相当的头疼,这个方法感觉能解决我的问题,求指教!

  • 在相同的关键字前加上各自的库名和.就可以了
    不过。。失败自动截图的时候 会报错。因为两个库的截图方法会冲突

  • 错误提示如下:

    org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
    Build info: version: '2.43.1', revision: '5163bceef1bc36d43f3dc0b83c88998168a363a0', time: '2014-09-10 09:43:55'
    System info: host: 'PC201412042006', ip: '192.168.1.2', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_25'
    Driver info: driver.version: RemoteWebDriver
    org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593)
    io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:180)
    org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
    org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:441)
    com.nd.pad.eci.PadCon.Process(PadCon.java:124)
    com.nd.pad.eci.Eci_test.test_stu1(Eci_test.java:91)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    org.testng.internal.Invoker.invokeMethod(Invoker.java:659)
    org.testng.internal.Invoker.invokeTestMethod(Invoker.java:845)
    org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1153)
    org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    org.testng.TestRunner.privateRun(TestRunner.java:771)
    org.testng.TestRunner.run(TestRunner.java:621)
    org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
    org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
    org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
    org.testng.SuiteRunner.run(SuiteRunner.java:259)
    org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    org.testng.TestNG.runSuitesSequentially(TestNG.java:1199)
    org.testng.TestNG.runSuitesLocally(TestNG.java:1124)
    org.testng.TestNG.run(TestNG.java:1032)
    org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
    Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:4723 [/127.0.0.1] failed: Connection refused: connect
    Caused by: java.net.ConnectException: Connection refused: connect

  • #4 楼 @mads
    两个思路 一个是单独实现一个静态的方法来实现等待

    from selenium.webdriver.support.wait import WebDriverWait
    
        @staticmethod
        def waitForID(driver, idstr, msg, timeout = 15):
            return WebDriverWait(driver,timeout).until(lambda driver: driver.find_element_by_id(idstr).is_displayed(), msg)
    

    还有一个方法是自己定义一个 driver,继承 Appium 的 webdriver.Remote,在 driver 里扩展一些自定义的方法就可以了,后面就可以直接用这个 driver 类来获取对象和调用这个 wait 方法了

    from appium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    class driver(webdriver.Remote):
    ......
        def waitForID(self, idstr, msg, timeout = 15):
            return WebDriverWait(self,timeout).until(lambda driver: driver.find_element_by_id(idstr).is_displayed(), msg)
    
  • #4 楼 @mads 是的、、

  • @testly 想请教下为什么我修改 reportNG 的源码后重新打 jar 结果总是打出空的包。提示是这个
    [INFO] Scanning for projects...
    [WARNING]
    [WARNING] Some problems were encountered while building the effective model for org.uncommons:reportng:jar:1.1.5
    [WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 36, column 9
    [WARNING]
    [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
    [WARNING]
    [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
    [WARNING]
    [INFO]

    [INFO] ------------------------------------------------------------------------
    [INFO] Building ReportNG 1.1.5
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ reportng ---
    [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] skip non existing resourceDirectory D:\workspace\reportng\src\main\resources
    [INFO]
    [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ reportng ---
    [INFO] No sources to compile
    [INFO]
    [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ reportng ---
    [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] skip non existing resourceDirectory D:\workspace\reportng\src\test\resources
    [INFO]
    [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ reportng ---
    [INFO] No sources to compile
    [INFO]
    [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ reportng ---
    [INFO]
    [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ reportng ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.829 s
    [INFO] Finished at: 2015-05-19T17:49:09+08:00
    [INFO] Final Memory: 10M/155M
    [INFO] ------------------------------------------------------------------------

  • appium 源码分析合集 (一) at 2015年04月30日

    标记一个~~ by the way 4 和 5 的链接顺序反了~~

  • #2 楼 @chenhengjie123 多谢了~~ 头像改了哈~~ 我换了 2.15 的版本试还是一样的错误,杯具~~ 估计要等他们解决了

  • 目前暂时的解决方法是每次要截图的都时候都 switch 回 NATIVE_APP,截屏后再 switch 到 WEBVIEW。。诶 有木有能完美解决的办法呢