我正在尝试点击设置应用程序中的显示按钮。但“FindElementBy..”语句不起作用,有时我会得到“nullpointer exception”或“no such element exist”异常,有时测试通过时没有单击Display按钮。
我尝试了不同的应用程序,但仍然是FindElementBy...在Win10中不工作。但当我从Win7笔记本电脑上运行同一台真实设备时,同样的代码也在工作。
Project正在使用以下JAR:
java-client-4.1.2.jar
Selenium-Server-Standalone-3.4.0.jar
面向Eclipse的Android开发工具(addon)
Appium代码:
@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 REST http接口侦听器在127.0.0.1:4723启动
信息:[debug]非默认服务器参数:{“Address”:“127.0.0.1”,“LognoColors”:True,“PlatformName”:“Android”,“PlatformVersion”:“23”,“AutomationName”:“Appium”}
信息:控制台日志级别:调试
信息:客户端用户代理字符串:apache-httpclient/4.5.3(java/1.8.0_144)
信息:[debug]没有得到应用程序,但得到了Android软件包,将尝试在设备上启动它
信息:[debug]正在创建新的appium会话44F52F68-60A6-4469-9575-0C1BFE2D999D
信息:启动android应用程序
信息:[debug]正在获取Java版本
信息:Java版本为:1.8.0_144
信息:[debug]是否使用快速重置?真
信息:[debug]正在为会话准备设备
信息:[debug]未检查应用程序是否存在,因为我们假设它已经在设备上
信息:[debug]正在获取连接得设备...
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”设备
信息:[debug]1个设备已连接
信息:[debug]等待设备就绪并响应shell命令(超时=5)
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-S 964AA907D030等待-设备
信息:[debug]执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-s 964AA907D030 shell“echo'ready”“
信息:[debug]正在启动logcat捕获
信息:[debug]获取设备API级别
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-s 964AA907D030 shell“getprop ro.build.version.sdk”
信息:[debug]设备处于API级别23
信息:设备API级别为:23
信息:[debug]提取语言的字符串:default
信息:[debug]无法获取字符串,但看起来我们有一个旧的字符串文件,因此忽略
信息:[debug]执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-s 964aa907d030 shell“rm-rf/data/local/tmp/strings.json”
信息:[debug]未卸载应用程序,因为服务器未启动--完全重置
信息:[debug]跳过安装,因为我们启动时使用的是软件包而不是应用程序路径
信息:[debug]将系统:4724转发到设备:4724
信息:[debug]正在将appium引导程序推送到设备...
信息:[debug]执行cmd:“C:\ProgramFiles(x86)\android\android-sdk\platform-tools\adb.exe”-s 964AA907D030 push“C:\ProgramFiles(x86)\appium\node_module\appium\build\android_bootstrap\appiumbootstrap.jar”/data/local/tmp/
信息:[debug]正在将设置apk推送到设备...
信息:[debug]执行cmd:“C:\ProgramFiles(x86)\android\android-sdk\platform-tools\adb.exe”-s 964AA907D030安装“C:\ProgramFiles(x86)\appium\node_module\appium\build\settings_apk\settings_apk-debug.apk”
信息:[debug]正在将解锁帮助程序应用程序推到设备...
信息:[debug]执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-s 964AA907D030安装“C:\Program Files(x86)\appium\node_module\appium\build\unlock_apk\unlock_apk-debug.apk”
信息:启动应用程序
信息:[debug]正在尝试终止所有“UIAutomator”进程
信息:[debug]正在使用“uiautomator”获取所有进程
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-s 964AA907D030 shell“ps'uiautomator'”
信息:[debug]找不到匹配的进程
信息:[debug]正在运行引导程序
信息:[debug]生成:C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe-s 964aa907d030 shell uiautomator runtest appiumbootstrap.jar-c io.appium.android.bootstrap.bootstrap-e pkg com.android.settings-e disableAndroidWatchers false
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:numtests=1
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:stream=
信息:[debug][UIAUTOMATOR STDOUT]io.appium.android.bootstrap.bootstrap:
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:id=UIAutomatorTestRunner
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:test=testrunserver
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:class=io.appium.android.bootstrap.bootstrap
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:current=1
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status_code:1
信息:端口4724上已打开[debug][BOOTSTRAP][debug]套接字
信息:[debug]如果设备不活动,将唤醒设备
信息:[debug]正在将命令推送到appium工作队列:[“Wake”,{}]
信息:[debug][BOOTSTRAP][debug]正在加载JSON...
信息:[debug][BOOTSTRAP][debug]从客户端获得数据:{“cmd”:“action”,“action”:“wake”,“params”:{}}
信息:[debug][BOOTSTRAP][debug]获得了ACTION类型的命令
信息:[debug][BOOTSTRAP][debug]获得命令操作:唤醒
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-S 964AA907D030 shell“dumpsys window”
信息:[调试]屏幕已解锁,正在继续。
信息:[debug]正在将命令推送到appium工作队列:[“GetDataDir”,{}]
信息:[debug][BOOTSTRAP][debug]从客户端获得数据:{“cmd”:“action”,“action”:“GetDataDir”,“params”:{}}
信息:[debug][BOOTSTRAP][debug]获得了ACTION类型的命令
信息:[debug][BOOTSTRAP][debug]已获得命令操作:getDataDir
信息:[debug]dataDir设置为:/data/local/tmp
信息:[debug]将命令推送到appium工作队列:[“CompressedLayouthierarchy”,{“CompressLayout”:false}]
信息:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd”:“action”,“action”:“compressedlayouthierarchy”,“params”:{“compresslayout”:false}}
信息:[debug][BOOTSTRAP][debug]获得了ACTION类型的命令
信息:[debug][BOOTSTRAP][debug]获得命令操作:compressedLayoutHierarchy
信息:[debug][BOOTSTRAP][debug]返回结果:{“status”:0,“value”:false}
信息:[debug]设备处于API级别23
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-S 964AA907D030 shell“am start-S-A android.intent.action.main-C android.intent.category.launcher-F 0x10200000-N com.android.settings/com.android.settings.mainsettings”
信息:[debug]正在等待pkg“com.android.settings”和活动“com.android.settings.mainsettings”被聚焦
信息:[debug]获取焦点包和活动
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-s 964aa907d030 shell“dumpsys window windows”
信息:[debug]正在执行cmd:“C:\Program Files(x86)\android\android-sdk\platform-tools\adb.exe”-s 964AA907D030 shell“getprop ro.build.version.release”
信息:[debug]设备的版本为6.0.1
信息:[debug]设备已启动!命令就绪
信息:[debug]将命令超时设置为默认值60秒
信息:[debug]成功响应客户端:{“Status”:0,“Value”:{“PlatformVersion”:“Linux”,“BrowserName”:“Android”,“PlatformVersion”:“6.0.1”,“WebStorageEnabled”:False,“TakessCreenShot”:True,“JavaScriptEnabled”:True,“DatabaseEnabled”:False,“NetworkConnectionEnabled”:True,“LocationContExtenabled”:False,“Warnings”:{},“Desired”:{“AppPackage”:“
信息:<--GET/WD/Hub/Session/44F52F68-60A6-4469-9575-0C1BFE2D999D 200 1.705MS-695{“状态”:0,“值”:{“平台”:“Linux”,“BrowserName”:“Android”,“PlatformVersion”:“6.0.1”,“WebStorageEnabled”:false,“TakessCreenShot”:true,“JavaScriptEnabled”:true,“DatabaseEnabled”:false,“NetworkConnectionEnabled”:true,“LocationContExtenabled”:false,“
信息:-->POST/wd/hub/session/44f52f68-60a6-4469-9575-0c1bfe2d999d/element{“using”:“-Android UIAutomator”,“value”:“UISelector().text(\”display\“)”}
信息:[debug]等待条件最多0ms
信息:[debug]将命令推送到appium工作队列:[“find”,{“strategy”:“-Android UIAutomator”,“selector”:“UISelector().text(\”display\“)”,“context”:“”,“multiple”:false}]
信息:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd”:“action”,“action”:“find”,“params”:{“strategy”:“-Android UIAutomator”,“selector”:“UISelector().text(\”display\“)”,“context”:“”,“multiple”:false}}
信息:[debug][BOOTSTRAP][debug]获得了ACTION类型的命令
信息:[debug][BOOTSTRAP][debug]已获得命令操作:查找
信息:[debug][BOOTSTRAP][debug]查找UiSelector()。使用带有上下文ID:multiple:false的ANDROID_UIAUTOMATOR的文本(“display”)
信息:[debug][BOOTSTRAP][debug]分析选择器:UiSelector().text(“display”)
信息:[debug][BOOTSTRAP][debug]UiSelector强制类型:class java.lang.string arg:“display”
信息:[debug][BOOTSTRAP][debug]使用:uiselector[text=display]
信息:[debug][BOOTSTRAP][debug]返回结果:{“status”:0,“value”:{“element”:“1”}}
信息:<--POST/WD/HUB/SESSION/44F52F68-60A6-4469-9575-0C1BFE2D999D/ELEMENT 200 82.340MS-87{“状态”:0,“值”:{“ELEMENT”:“1”},“SESSIONID”:“44F52F68-60A6-4469-9575-0C1BFE2D999D”}
信息:-->POST/WD/HUB/SESSION/44F52F68-60A6-4469-9575-0C1BFE2D999D/element/1/click{“id”:“1”}信息:[debug]将命令推送到appium工作队列:[“element:click”,{“elementId”:“1”}]
信息:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd”:“action”,“action”:“element:click”,“params”:{“elementId”:“1”}}
信息:[debug][BOOTSTRAP][debug]获得了ACTION类型的命令
信息:[debug][BOOTSTRAP][debug]获得命令操作:单击
信息:<--POST/WD/Hub/Session/44F52F68-60A6-4469-9575-0C1BFE2D999D/元素/1/Click 200 40.169MS-76{“状态”:0,“值”:true,“SessionID”:“44F52F68-60A6-4469-9575-0C1BFE2D999D”}
信息:[debug][BOOTSTRAP][debug]返回结果:{“status”:0,“value”:true}
信息:[debug]在60秒内没有获得新命令,正在关闭...
信息:正在关闭appium会话
信息:[debug]按HOME键
信息:[debug][BOOTSTRAP][debug]从客户端获得数据:{“cmd”:“shutdown”}
信息:[debug][BOOTSTRAP][debug]获得了SHUTDOWN类型的命令
信息:[debug][BOOTSTRAP][debug]返回结果:{“status”:0,“value”:“OK,shutting down”}
信息:[debug]已发送关闭命令,正在等待UiAutomator停止...
信息:[debug][BOOTSTRAP][debug]关闭客户端连接
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:numtests=1
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:test=testrunserver
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:class=io.appium.android.bootstrap.bootstrap
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status:current=1
信息:[debug][UIAUTOMATOR STDOUT]instrumentation_status_code:-1
信息:[debug]UiAutomator正常关闭
信息:[debug]正在清理android对象
信息:[debug]正在清理appium会话
信息:[debug]我们关闭了,因为没有新命令进入
您只需尝试一下:driver.findElement(By.byName(“display”));
或
driver.findElement(By.xpath("//android.widget.TextView[@text='Display']"));
基本页面类: 并在该类上实现: 我已经将参数编辑到50秒,但在Junit测试中没有等待。在使用AndroidDriver之前,我使用了WebDriver并且它工作得很好,但是我需要Android Driver来做TouchAction。所以我的测试用例总是失败,因为当assert运行时,它会立即找到元素,而元素还不可用。
这里有一个git repo包含一个应用程序和一个测试项目。失败的JUnit测试证明了问题:https://github.com/achengs/an-appium-question 详细信息如下(代码和Appium日志交错) 这是第一个成功的发现。活动的布局xml文件对于我要查找的文本字段具有以下属性: 有一个HTML请求。我正在测试一个原生的Android应用程序。下面是当前测试活动的布局xml
问候flutter开发人员正在开发一个应用程序,iOS和Android使用手机身份验证用户一切正常iOS但Android当这一行被称为我得到一个错误: 错误: E/flutter(14190):[ERROR: flutter/shell/通用/shell.cc(184)]Dart错误:未处理的异常: E/flutter(14190): PlatformExc0019(错误,空引用,空)E/flut
我对Android Studio有意见。 任务:应用程序:ProcessDebugResources失败AGPBI:{“kind”:“error”,“text”:“Android资源链接失败”,“sources”:[{“file”:“/users/luisabsg/.gradle/caches/transforms-2/files-2.1/270e51d2bcfda0833b0b336f50197
在我的应用程序代码中,在使用滑动时,滚动方法并执行代码。获取以下异常。 org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。(警告:服务器未提供任何stacktrace信息) 在自动建议下拉列表中,我没有看到方法。当我手动键入SendKeyEvent()时,它会抛出一个错误,即类型AndroidDriver中未定义的错误。 有人能告诉我吗
这是我的密码 我想执行滚动,但在屏幕上它没有执行任何操作。这是android设备的屏幕截图 以下是Appium服务器日志: 信息:[调试][引导][调试]已注册的崩溃监视程序。信息:[debug][BOOTSTRAP][debug]客户端连接信息:[debug][BOOTSTRAP][debug]从客户端获取数据:{“cmd”:“action”,“action”:“wake”,“params”:{