• 下面两个方法,不过都不能保证通用,换个输入法说不定就不行了
    1:抓取控件id或name,按id或name来click
    2:既然你keyevent(66)(66代表回车)不行,那你再试试看keyevent(84) (84代表搜索)

  • 我发现Appium1.6.3和1.6.4在测试Android7.0,有个问题,必须使用uiautomator2才可以支持。

    但是appium的appium-uiautomator2-driver又有一个bug,它使用的adb端口写死了是5037端口(adb默认端口),即使你在启动appium的caps里面传入自己定义的adbPort端口,也没有用。

    原因是appium-uiautomator2-driver在运行adb的时候,使用了开源的adbkit,但是adbkit在执行adb命令时,需要传入adbport(不传就使用5037),而appium-uiautomator2-driver的代码里我看了一下,调用adbkit时没有传入指定的adbport。。。

    所以如果想用Appium支持安卓7,需要做以下几点:
    1:使用Appium1.6.3或以上版本
    2:启动Appium时设置caps:capabilities.setCapability("automationName", "uiautomator2");
    3:确保5037端口没有被占用

  • 楼主是测试的android应用? 不同的输入法软件,以及不同的应用APP,对输入法的按键定义都会不同,不太好找一个通用的方法。
    你想用press_keycode(66) or keyevent(66),首先得要求你测试的这个APP的“搜索”按键,支持keyevent

  • 是的,这个国行iphone的问题,之前在facebook的github上已经有人确认了,只有国行有问题,你换港行就没有问题。
    最近Facebook有没有解决这个bug我还不清楚。我一直用iproxy映射USB连接规避这个问题的。

  • 这个Listening on USB的日志提示,我后来发现似乎不同版本iphone有的会打印,有的不打印,但不影响实际测试。
    比如目前我的iphone6P启动WDA后,并不提示Listening on USB,但appium运行自动化一切正常,所以个人觉得可以忽略了。

  • 一个月前遇到这个问题,也看到这个帖子可惜没有解决方法。。后来自己折腾了几天解决了,说一下我的解决方法吧,虽然不一定每个人的问题都相同,至少可以尝试一下:
    appium到目前为止,使用的FB提供的webdriveragent驱动一直存在一个bug,不支持中国国行全系iphone的wifi连接,FB也没有打算修复此bug,如果大家用appium测试中国国行iphone,webdriveragent就可能一直卡死,解决方法是使用iproxy将wifi的tcp协议转换成usb协议,具体方法:
    1)安装并启动iproxy把webdriveragent的默认8100端口转到usb协议(安装需联网):
    $ brew uninstall ideviceinstaller
    $ brew uninstall libimobiledevice
    $ brew install --HEAD libimobiledevice
    $ brew install ideviceinstaller
    $ iproxy 8100 8100
    注意webdriveragent监听的默认端口是8100,如果你修改过端口,这里就改成你定义的端口
    2)手动启动webdriveragent:
    xcodebuild -project /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id= 你的设备UDID’ test
    3)确认webdriveragent在iphone上安装并启动后,就可以启动appium了,重要的是在启动appium的cap中传入下面这个参数,让appium连接上面步骤中手动启动的WebDriverAgent:

    webDriverAgentUrl
    http://localhost:8100

    上面是关键!要传入这个cap,不要让appium自己启动WebDriverAgent,因为前面说了,appium自己启动WebDriverAgent会引发bug,导致中国国行手机无法与WebDriverAgent通过tcp协议通信,然后一直卡死。
    4)执行测试用例,看看这次是不是不会卡着了。。。

  • #4楼 @zuiniao123 不好意思之前写错命令,是执行这个命令“xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=你的UDID' test”,你是在xcode里面运行test后看到提示Listening on USB,还是在Terminal运行上面命令后看到提示Listening on USB? 我的iphone6P是国行的,不知道和手机型号有没有关系。。

  • #2楼 @zuiniao123 我发现应该是WebDriverAgent的BUG(Appium就是调用WebDriverAgent实现XUITest真机自动化),我用IOS9.3和IOS10.2两部手机做了试验,用Terminal进入到WebDriverAgent工程目录下,连接手机后运行命令"xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=你的UDID' test",可以看到区别:

    1:IOS9.3手机的运行结果明确提示:Listening on USB

    2:IOS10.2手机的运行结果没有上面的提示,而是一直卡在下面这段:
    Test Case '-[UITestingUITests testRunner]' started.
    t = 0.00s Start Test at 2016-12-20 09:58:02:209
    t = 0.01s Set Up

    我去github的WebDriverAgent下载安装了最新的版本,测试后一样有这个问题,我猜测WebDriverAgent目前不支持IOS10最近几个新版本的真机运行。

  • @楼主,请问你解决了吗?我也遇到这个一模一样的问题,研究了2天还没有解决,环境是appium1.6.3+xcode8.2+ios10.2iphone6P真机。