2017-09-26 29 views
1

我试图点击设置应用中的显示按钮。 但是“findElementBy ..”语句不起作用,有时候我得到'空指针异常'或'没有这样的元素存在'异常,有时候测试通过时没有点击显示按钮。findElement在Android上的Appium中不起作用

Click to View Image

我曾尝试与不同的应用程序,但仍然findElementBy ...是不是在Win10工作。 但是,当我在Win 7笔记本电脑的相同实际设备上运行代码时,这段代码正在工作。

项目使用下列jar:

  1. GSON-2.2.2.jar

  2. Java的客户端 - 4.1.2.jar

  3. 硒的服务器独立-3.4.0.jar

  4. 适用于Eclipse的Android开发工具(插件)

  5. 的Android对Maven的Eclipse 1.4.0(插件)

  6. Appium Sever的(版本:1.4.13.1)

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等),但没有任何工作赢得10机器。我不这么认为,因为他们正在使用我的win7笔记本电脑,所以存在定位器问题。

Appium日志:

启动Appium服务器命令:C:\程序文件(x86)\ Appium \ node.exe LIB \服务器\ main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --log-no-color

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

信息:欢迎Appium v​​1.4.13(REV c75d8adcb66a75818a542fe1891a34260c21f76a)

信息:Appium REST HTTP接口听众开始127.0.0.1:4723

信息:[调试]非默认的服务器ARGS:{ “address”:“127.0.0.1”,“logNoColors”:true,“platformName”:“Android”,“platformVersion”:“23”,“automationName”:“Appium”}

info:Console LogLevel:debug

info: - > POST/wd/hub/session {“desiredCapabilities”:{“a ppPackage “:” com.android.settings “ ”appActivity“: ”com.android.settings.MainSettings“, ”platformVersion“:” 6.0。1“,”automationName“:”UiAutomator 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”:[]}}

info: :Apache的HttpClient的/ 4.5.3(Java/1.8.0_144)

信息:[调试]没有收到应用程序,但没有得到Android包,将尝试启动它在设备上

信息:调试]创建新的appiu米会议44f52f68-60a6-4469-9575-0c1bfe2d999d

信息:正在启动Android appium

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

信息:Java版本是:1.8.0_144

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

信息:[调试]从C使用亚行:\程序文件(x86)\ Android的\ Android的SDK \平台TOOLS \ adb.exe

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

info:[debug]使用快速重置?真正

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

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

信息上:检索设备

信息:[调试]想找到一个连接的Android设备

信息:[调试]入门连接设备...

info:[debug]执行cmd:“C:\ Program Files文件(x86)\ Android \ android-sdk \ platform-tools \ adb.exe”设备

info:[debug] 1 device(s)connected

信息:实测值设备964aa907d030

信息:[调试]设置设备ID 964aa907d030

信息:[调试]等待装置做好准备,以响应外壳命令(超时= 5)

info:[debug]执行cmd:“C:\ Program Files(x86)\ Android \ android-sdk \ pl atform-tools \ adb.exe“-s 964aa907d030等待设备

info:[debug]执行cmd:”C:\ Program Files(x86)\ Android \ android-sdk \ platform-tools \ adb。EXE “-s 964aa907d030壳 ”回声 '准备好'“

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

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

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

info:[debug] Device is at API Level 23

info:设备API级别是:23

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

信息:[调试] APK没有本地存在

信息:[调试]无法获取字符串,但看起来我们有一个旧的字符串文件无论如何,所以忽略

info:[debug]执行cmd:“C:\ Program Files文件(x86)\安卓android-SDK平台工具\ adb.exe”-s 964aa907d030 shell“rm- rf /data/local/tmp/strings.json“

info:[debug]不卸载应用程序,因为服务器未启动--full-reset

信息:[调试]跳过安装,因为我们有一个包,而不是一个应用程序路径

信息推出:[调试]转发系统:4724至设备:4724

信息:[调试]执行CMD :“C:\ Program Files(x86)\ Android \ android-sdk \ platform-tools \ adb.exe”-s 964aa907d030 forward tcp:4724 tcp:4724

info:[debug]将appium bootstrap推送到设备。 ..

info:[debug]执行cmd:“C:\ Program Files(x86)\ Android \ android- sdk \ platform-tools \ adb.exe“-s 964aa907d030 push”C:\ Program Files(x86)\ Appium \ node_modules \ appium \ build \ android_bootstrap \ AppiumBootstrap.jar“/ data/local/tmp/

info :[debug]执行cmd命令:“C:\ Program Files(x86)\ Android \ android-sdk \ platform-tools \ adb.exe”-s 964aa907d030安装 “C:\ Program Files文件(x86)的\ Appium \ node_modules \ appium \建立\ settings_apk \ settings_apk-debug.apk”

信息:[调试]推解锁助手应用程序设备...

info:[debug]执行cmd:“C:\ P (x86)\ Android \ android-sdk \ platform-tools \ adb.exe“-s 964aa907d030 install”C:\ Program Files(x86)\ Appium \ node_modules \ appium \ build \ unlock_apk \ unlock_apk-debug.apk“

信息:启动应用程序

信息:[调试]试图杀死所有 'uiautomator' 处理

信息:[调试]掌握 'uiautomator'

信息的所有进程:[调试]执行cmd:“C:\ Program Files(x86)\ Android \ android-sdk \ platform-tools \ adb。EXE” -s 964aa907d030壳 “PS 'uiautomator'”

信息:[调试]没有匹配的过程中发现

信息:[调试]运行引导

信息:[调试]产卵: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

info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:numtests = 1

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:流=

信息:[调试] [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap:

信息:[调试] [UIAUTOMATOR STDOUT ] INSTRUMENTATION_STATUS:ID = UiAutomatorTestRunner

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:测试= testRunServer

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:类= io.appium.android.bootstrap.Bootstrap

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:电流= 1

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE:1

信息:[调试] [BOOTSTRAP] [调试]插孔打开在端口4724

信息:[调试] [引导] [调试] Appium插槽服务器就绪

信息:[调试]醒来设备,如果它不是活着

信息:[调试]芘ushing命令appium工作队列: “唤醒”,{}]

信息:[调试] [引导] [调试]载入中... JSON

信息:[调试] [引导] [调试]注册崩溃观察者。

信息:[调试] [BOOTSTRAP] [调试]客户端连接

信息:[调试] [BOOTSTRAP] [调试]得到了客户机数据:{ “CMD”: “动作”, “动作”: “唤醒”, “PARAMS”:{}}

信息:[调试] [BOOTSTRAP] [调试]得到类型的动作命令

信息:[调试] [BOOTSTRAP] [调试]得到命令动作:唤醒

info:[debug] [BOOTSTRAP] [debug]返回结果:{“status”:0,“value”:true}

信息:[调试]执行CMD: “C:\ Program Files文件(x86)的\ Android的\ Android的SDK \平台工具\ adb.exe” -s 964aa907d030壳 “dumpsys窗口”

信息:调试]屏幕已解锁,继续。

信息:[调试]推命令appium工作队列:[ “getDataDir”,{}]

信息:[调试] [BOOTSTRAP] [调试]得到了客户机数据:{ “CMD”:”动作”, “动作”: “getDataDir”, “PARAMS”:{}}

信息:[调试] [BOOTSTRAP] [调试]得到类型的动作命令

信息:[调试] [BOOTSTRAP] [debug]得到的命令行动:getDataDir

info:[debug] [BOOTSTRAP] [debug]返回结果:{“status”:0,“value”:“/ data/local/tm P “}

信息:[调试] DATADIR设置为:/数据/本地的/ tmp

信息:[调试]推命令appium工作队列:[” compressedLayoutHierarchy”,{ “compressLayout”:假} ]

info:[debug] [BOOTSTRAP] [debug]从客户端获得数据:{“cmd”:“action”,“action”:“compressedLayoutHierarchy”,“params”:{“compressLayout”:false}}

信息:[调试] [BOOTSTRAP] [调试]得到类型的动作命令

信息:[调试] [BOOTSTRAP] [d ebug]得到命令动作:compressedLayoutHierarchy

信息:[调试] [BOOTSTRAP] [调试返回结果:{ “状态”:0 “值”:假}

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

info:[debug]执行cmd:“C:\ Program Files(x86)\ Android \ android-sdk \ platform-tools \ adb.exe”-s 964aa907d030 shell“getprop ro.build.version.sdk “

信息:[调试]设备在API等级23

信息:[调试]执行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“

info:[debug]等待pkg”com.android.settings“和activity”com.android.settings.MainSettings“到集中

信息:[调试]获取集中包装和活动

信息:[调试]执行CMD:“C:\ Program Files文件(x86)的\ Android的\ Android的SDK \平台工具\ ADB。 exe“-s 964aa907d030外壳”dumpsys窗口窗口“

info:[debug]执行cmd:“C:\ Program Files(x86)\ Android \ android-sdk \ platform-tools \ adb.exe”-s 964aa907d030 shell“getprop ro.build.version.release”

info:[debug] Device is at release version 6.0.1

info:[debug] Device started!准备命令

信息:[调试]命令超时设置为60秒

默认

信息:[调试] Appium会议开始的sessionId 44f52f68-60a6-4469-9575-0c1bfe2d999d

信息: < - POST/WD /集线器/会话303 6622.421毫秒 - 74

信息: - > GET/WD /集线器/会话/ 44f52f68-60a6-4469-9575-0c1bfe2d999d {}

信息:[调试]成功响应客户端:{“status”:0,“value”:{“平台 “:” LINUX “ ”browserName“: ”机器人“, ”platformVersion“: ”6.0.1“, ”webStorageEnabled“:假的, ”takesScreenshot“:真实的, ”javascriptEnabled“:真实的, ”databaseEnabled“:假” networkConnectionEnabled “:真” locationContextEnabled “:假,” 警告 “:{},” 期望的 “:{” appPackage “:” com.android.settings “ ”appActivity“: ”com.android.settings.MainSettings“,” platformVersion“:”6.0.1“,”automationName“:”UiAutomator 2“,”platformName“:”Android“,”deviceName“:”Redmi 3S“},”appPackage“:”com.android.settings“,” “:”com.android.settings.MainSettings“,”automationName“:”UiAutomator 2“,”platformName“:”Android“,”deviceName“:”964aa907d030“},”sessionId“:”44f52f68-60a6-4469-9575 -0c1bfe2d999d“}

info:< - GET/wd/hub/session/44f52f68-60a6-4469-9575-0c1bfe2d999d 200 1.705 ms - 695 {”status“:0,”value“:{”platform“ : “LINUX”, “browserName”: “机器人”, “platformVersion”: “6.0.1”,“我们bStorageEnabled “:假” takesScreenshot “:真” javascriptEnabled “:真” databaseEnabled “:假” networkConnectionEnabled “:真” locationContextEnabled “:假,” 警告 “:{},” 期望的 “:{” appPackage” :“com.android.settings”,“appActivity”:“com.android.settings.MainSettings”,“platformVersion”:“6.0.1”,“automationName”:“UiAutomator 2”,“platformName”:“Android”, “deviceName”:“Redmi 3S”},“appPackage”:“com.android.settings”,“appActivity”:“com.android.settings.MainSettings”,“automationName”:“UiAutomator 2”,“platformName”:“ Android“,”deviceName“:”964aa907d030“},”sessionId“:”44f52f68-60a6-4469-9575-0c1bfe2d999d“}

info: - > POST/wd/hub/session/44f52f68-60a6-4469 -9575-0c1bfe2d999d/element {“using”:“ - android uiautomator”,“value”:“UiSelector()。text(\”Display \“)”}

inf ○:[调试]等待最多为0ms的条件

信息:[调试]推命令appium工作队列: “发现”,{ “策略”: “ - 机器人uiautomator”, “选择”:“UiSelector( ).text(\“Display \”)“,”context“:”“,”multiple“:false}]

info:[debug] [BOOTSTRAP] [debug]从客户端获得数据:{”cmd“ :“action”,“action”:“find”,“params”:{“strategy”:“ - android uiautomator”,“selector”:“UiSelector().text(\”Display \“) : “”, “多重”:假}}

信息:[调试] [BOOTSTRAP] [调试]得到类型的动作命令

信息:[调试] [BOOTSTRAP] [DE错误]得到命令操作:找到

信息:[调试] [引导] [调试]使用ANDROID_UIAUTOMATOR与CONTEXTID查找UiSelector()文本( “显示”):多重:假

信息:[调试] [BOOTSTRAP] [debug]解析选择器:UiSelector().text(“Display”)

info:[debug] [BOOTSTRAP] [debug] UiSelector强制类型:类java.lang。串ARG: “显示”

信息:[调试] [BOOTSTRAP] [调试]使用:UiSelector [TEXT =显示]

信息:[调试] [BOOTSTRAP] [调试返回结果:{“状态“:0,”value“:{”ELEMENT“:”1“}}

info:[debug]成功响应客户端:{”status“:0,”value“:{”ELEMENT“ 1 “},” 的sessionId “:” 44f52f68-60a6-4469-9575-0c1bfe2d999d“}

信息:< - POST/WD /集线器/会话/ 44f52f68-60a6-4469-9575-0c1bfe2d999d /元件200 82.340 ms - 87 {“status”:0,“value”:{“ELEMENT”:“1”},“sessionId”:“44f52f68-60a6-4469-9575-0c1bf POST:/ wd/hub/session/44f52f68-60a6-4469-9575-0c1bfe2d999d/element/1/click {“id”:“1”} info:[debug]推送命令到appium工作队列:[“element:click”,{“elementId”:“1”}]

info:[debug] [BOOTSTRAP] [debug]从客户端获得数据:{“cmd”:“动作”, “动作”: “元素:点击”, “PARAMS”:{ “elementId”: “1”}}

信息:[调试] [BOOTSTRAP] [调试]得到类型的动作命令

info:[调试] [BOOTSTRAP] [调试]得到的命令行动:点击

信息:[调试]响应成功客户端:{ “地位”:0, “值”:真 “的sessionId”: “44f52f68-60a6-4469-9575-0c1bfe2d999d”}

信息:< - POST/wd/hub/session/44f52f68-60a6-4469-9575-0c1bfe2d999d/element/1/click 200 40.169 ms - 76 {“status”:0,“value”:true,“sessionId”:“44f52f68- 60a6-4469-9575-0c1bfe2d999d “}

信息:[调试] [BOOTSTRAP] [调试返回结果:{” 状态 “:0”,值“:真的}

信息:[调试]没在60秒内没有得到新的命令,关闭...

信息:关闭appium会议

信息:[调试]按下HOME键

信息:[调试]执行CMD:“C:\ Program Files文件(x86)的\ Android的\ Android的SDK \平台-tools \ adb.exe” -S 964aa907d030壳 “输入的KeyEvent 3”

信息:[调试]停止的logcat捕获

信息:[调试] logcat的终止代码空,信号SIGTERM

信息:[debug] [BOOTSTRAP] [debu G]得到了客户机数据:{ “CMD”: “关断”}

信息:[调试] [BOOTSTRAP] [调试]得到式SHUTDOWN的命令

信息:[调试] [BOOTSTRAP] [调试]返回结果:{“status”:0,“value”:“OK,关闭”}

info:[debug]发送关机命令,等待UiAutomator停止...

信息:[调试] [BOOTSTRAP] [调试]闭客户端连接

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:numtests = 1

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS :stream =。

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:ID = UiAutomatorTestRunner

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:测试= testRunServer

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS :类= io.appium.android.bootstrap.Bootstrap

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:电流= 1

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATU S_CODE:0

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:流=

信息:[调试] [UIAUTOMATOR STDOUT]试验WatcherResultPrinter =结果。

信息:[调试] [UIAUTOMATOR STDOUT]时间:67.859

信息:[调试] [UIAUTOMATOR STDOUT] OK(1个试验)

信息:[调试] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE: - 1

信息:[调试] UiAutomator正常关闭

信息:[调试]清理机器人对象

信息:[调试]清洁荷兰国际集团达appium会议

信息:[调试]我们关闭,因为没有新的命令进来

回答

0

刚刚得到通过添加使用maven项目依赖的解决方案。

0

你可以试试看:driver.findElement(By.ByName("Display"));

driver.findElement(By.xpath("//android.widget.TextView[@text='Display']")); 
+0

试过,但仍然没有工作 – Sandeep

0

尝试

driver.findElementByName(“Display”)。click(); 。

driver.findElementByxpath( “// * [@ id中= '机器人:ID /标题'] [@文本= '显示']”)点击();

它应该工作

相关问题