Eclipse findElement在Android上的Appium中不起作用

Eclipse findElement在Android上的Appium中不起作用,eclipse,selenium-webdriver,mobile,automation,appium,Eclipse,Selenium Webdriver,Mobile,Automation,Appium,我正在尝试单击设置应用程序中的显示按钮。 但“findElementBy..”语句不起作用,有时会出现“nullpointer异常”或“无此类元素存在”异常,有时测试通过而不单击“显示”按钮 我尝试了不同的应用程序,但仍然是findElementBy。。。在Win10中不工作。 但当我在Win7笔记本电脑的同一个真实设备上运行时,同样的代码也在工作 项目正在使用以下jar: @Test public void Script1() throws Exception{ DesiredCa

我正在尝试单击设置应用程序中的显示按钮。 但“findElementBy..”语句不起作用,有时会出现“nullpointer异常”或“无此类元素存在”异常,有时测试通过而不单击“显示”按钮

我尝试了不同的应用程序,但仍然是findElementBy。。。在Win10中不工作。 但当我在Win7笔记本电脑的同一个真实设备上运行时,同样的代码也在工作

项目正在使用以下jar:

@Test
public void Script1() throws Exception{

    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability("automationName", "UiAutomator 2");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("platformVersion", "6.0.1");
    capabilities.setCapability("deviceName", "Redmi 3S");
    capabilities.setCapability("appPackage", "com.android.settings");
    capabilities.setCapability("appActivity", "com.android.settings.MainSettings");

    AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

    Thread.sleep(5000); 
driver.findElementByAndroidUIAutomator("UiSelector().text(\"Display\")").click();
}
  • gson-2.2.2.jar

  • java-client-4.1.2.jar

  • selenium-server-standalone-3.4.0.jar

  • Android Eclipse开发工具(插件)

  • Android for Maven Eclipse 1.4.0(插件)

  • Appium服务器(版本:1.4.13.1)

  • 应用程序代码:

    @Test
    public void Script1() throws Exception{
    
        DesiredCapabilities capabilities = new DesiredCapabilities();
    
        capabilities.setCapability("automationName", "UiAutomator 2");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("platformVersion", "6.0.1");
        capabilities.setCapability("deviceName", "Redmi 3S");
        capabilities.setCapability("appPackage", "com.android.settings");
        capabilities.setCapability("appActivity", "com.android.settings.MainSettings");
    
        AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    
        Thread.sleep(5000); 
    driver.findElementByAndroidUIAutomator("UiSelector().text(\"Display\")").click();
    }
    
    我已经尝试过不同类型的定位器(如ByID、ClassPath、xpath、UISelector等),但在win10机器上没有任何效果。我认为没有定位器的问题,因为它们在我的win7笔记本电脑上工作

    Appium日志:

    使用以下命令启动Appium服务器:C:\Program Files(x86)\Appium\node.exe lib\server\main.js--地址127.0.0.1--端口4723--平台名称Android--平台版本23--自动化名称Appium--日志号颜色

    警告:Appium对node<0.12版本的支持已被弃用,并将在将来的版本中删除。请升级

    信息:欢迎使用Appium v1.4.13(版本c75d8adcb66a75818a542fe1891a34260c21f76a)

    信息:Appium REST http接口侦听器于127.0.0.1:4723启动

    信息:[调试]非默认服务器参数:{“地址”:“127.0.0.1”,“logNoColors”:true,“platformName”:“Android”,“platformVersion”:“23”,“automationName”:“Appium”}

    信息:控制台日志级别:调试

    信息:-->POST/wd/hub/session{“desiredCapabilities”:{“appPackage”:“com.android.settings”,“appActivity”:“com.android.settings.MainSettings”,“platformVersion”:“6.0.1”,“automationName”:“Automator 2”,“platformName”:“android”,“deviceName”:“Redmi 3S”},“requiredCapabilities”:{},“capabilities”:{“desiredCapabilities”:{“appPackage“com.android.settings”、“appActivity”:“com.android.settings.MainSettings”、“platformVersion”:“6.0.1”、“automationName”:“UiAutomator 2”、“platformName”:“android”、“deviceName”:“Redmi 3S”},“requiredCapabilities”:{},“alwaysMatch”:{“platformName”:“android”},“firstMatch”:[]}

    信息:客户端用户代理字符串:Apache HttpClient/4.5.3(Java/1.8.0_144)

    信息:[调试]未获取应用程序,但已获取Android软件包,将尝试在设备上启动它

    信息:[调试]创建新的应用程序会话44f52f68-60a6-4469-9575-0c1bfe2d999d

    信息:启动android appium

    信息:[调试]正在获取Java版本

    信息:Java版本为:1.8.0_144

    信息:[调试]检查adb是否存在

    信息:[调试]从C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe使用adb

    警告:没有应用程序功能,无法分析包/活动

    信息:[调试]使用快速重置?正确

    信息:[调试]正在为会话准备设备

    信息:[调试]不检查应用程序是否存在,因为我们假设它已经在设备上

    信息:检索设备

    信息:[调试]正在尝试查找已连接的android设备

    信息:[调试]正在获取连接的设备

    信息:[调试]执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”设备

    信息:[调试]已连接1个设备

    信息:找到设备964aa907d030

    信息:[调试]将设备id设置为964aa907d030

    信息:[调试]等待设备准备就绪并响应shell命令(超时=5)

    信息:[调试]执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 964aa907d030等待设备

    信息:[调试]正在执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 964aa907d030 shell“echo'ready'”

    信息:[调试]正在启动logcat捕获

    信息:[调试]正在获取设备API级别

    信息:[调试]正在执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 964aa907d030 shell“getprop ro.build.version.sdk”

    信息:[调试]设备处于API级别23

    信息:设备API级别为:23

    信息:[调试]正在提取语言的字符串:默认值

    信息:[调试]本地不存在Apk

    信息:[调试]无法获取字符串,但看起来我们仍然有一个旧的字符串文件,因此忽略

    信息:[调试]正在执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 964aa907d030 shell“rm-rf/data/local/tmp/strings.json”

    信息:[调试]未卸载应用程序,因为服务器未以--完全重置启动

    信息:[调试]正在跳过安装,因为我们是使用软件包而不是应用程序路径启动的

    信息:[调试]将系统:4724转发到设备:4724

    信息:[调试]正在执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 964aa907d030转发tcp:4724 tcp:4724

    信息:[调试]正在将appium引导程序推送到设备

    信息:[调试]执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 964aa907d030 push”C:\Program Files(x86)\Appium\node\u modules\Appium\build\Android\u bootstrap\AppiumBootstrap.jar”/data/local/tmp/

    信息:[调试]正在将设置apk推送到设备

    信息:[调试]正在执行cmd:“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 964aa907d030安装”C:\Program Files(x86)\Appium\node\u modules\Appium\build\settings\u apk\settings\u apk-debug.apk”

    信息:[调试]正在将解锁帮助程序应用程序推送到设备