【发布时间】:2018-11-17 09:52:07
【问题描述】:
我正在 android 的时钟应用程序上尝试一段 appium 自动化代码,但我的代码倾向于跳过滚动逻辑。我还尝试使用 findelement() 和 gettext() 来识别元素,但仍然不成功。以下是代码:
package com.test.Clock;
import org.testng.annotations.Test;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.PerformsTouchActions;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import org.testng.annotations.BeforeClass;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoSuchFrameException;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.touch.TouchActions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterClass;
public class Clock {
static WebDriver driver;
//static AndroidDriver driver;
@BeforeClass public void setUp() throws MalformedURLException{ DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("BROWSER_NAME", "Android"); capabilities.setCapability("VERSION", "7.0"); capabilities.setCapability("deviceName","IFZDSCVCKJUWRSOV"); capabilities.setCapability("platformName","Android"); capabilities.setCapability("--session-override",true); capabilities.setCapability("noReset",true); capabilities.setCapability("appPackage", "com.android.deskclock"); capabilities.setCapability("appActivity","com.android.deskclock.AlarmClock"); //driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
}
@Test public void testCal() throws InterruptedException { System.out.println("inside test");
WebElement createAlarm=driver.findElement(By.id("amigo:id/amigo_icon0")); //WebElement createAlarm=driver.findElement(By.xpath("//android.widget.Button[@text='Create']"));
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS); createAlarm.click();
// WebElement plus=driver.findElement(By.id("amigo:id/amigo_numberpicker_input")); //plus.click();
// driver.swipe(6, -188, 0, 0, 2);
try {
WebElement frame1=driver.findElement(By.id("com.android.deskclock:id/add_alarm_activity_hourNumber"));
driver.switchTo().frame(frame1);
}
catch (NoSuchFrameException e) {
System.out.println(e.getMessage());
}
Thread.sleep(2000);
WebElement gettime=driver.findElement(By.id("com.android.deskclock:id/add_alarm_activity_hourNumber"));
Thread.sleep(2000);
System.out.println(gettime.getText());
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, Double> swipeObject = new HashMap<String, Double>(); System.out.println(swipeObject);
swipeObject.put("startX", 3.0);
System.out.println(swipeObject);
swipeObject.put("startY", -183.8);
System.out.println(swipeObject);
swipeObject.put("endX", 0.022);
System.out.println(swipeObject);
swipeObject.put("endY", 0.02);
System.out.println(swipeObject);
swipeObject.put("duration", 2.0);
//HashMap[] params = { swipeObject };
js.executeScript("mobile: scroll", swipeObject);
System.out.println(js);
/*JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>(); scrollObject.put("direction", "up");
js.executeScript("mobile: scroll", scrollObject);*/
Thread.sleep(2000);
WebElement equalTo=driver.findElement(By.id("com.android.deskclock:id/add_alarm_save")); equalTo.click();
}
@AfterClass public void teardown(){
//close the app driver.quit();
}
}
以下是appium服务器日志:
使用 args 调用 AppiumDriver.createSession(): [{"--session-override":true,"BROWSER_NAME":"Android","VERSION":"7.0","appActivity":"com.android.deskclock.AlarmClock","appPackage":"com.android .deskclock","deviceName":"IFZDSCVCKJUWRSOV","noReset":true,"platformName":"Android"},null,{"desiredCapabilities":{"--session-override":true,"BROWSER_NAME":" Android","VERSION":"7.0","appActivity":"com.android.deskclock.AlarmClock","appPackage":"com.android.deskclock","deviceName":"IFZDSCVCKJUWRSOV","noReset":true ,"platformName":"Android"},"firstMatch":[{"platformName":"android"}]}] [BaseDriver] 事件“newSessionRequested”记录在 1528276642225 (14:47:22 GMT+0530(印度标准时间))[Appium] 无法解析 W3C 能力:“设备名称”不能为空。回退到 JSONWP 协议。 [Appium] 中提供了以下功能 JSONWP 所需的 W3C 功能中缺少的功能: ["--session-override","BROWSER_NAME","VERSION","appActivity","appPackage","deviceName","noReset","platformName"]。 回退到 JSONWP 协议。 [Appium] 创建新的 AndroidDriver (v2.6.0) 会话 [Appium] 功能:[Appium] --session-override: true [Appium] 浏览器名称:Android [Appium] 版本:7.0 [Appium] appActivity: com.android.deskclock.AlarmClock [Appium] appPackage: com.android.deskclock [Appium] 设备名称:IFZDSCVCKJUWRSOV [Appium] noReset: true [Appium] platformName: Android [BaseDriver] 创建 与 MJSONWP 所需功能的会话: {"--session-override":true,... [BaseDriver] 以下功能 已提供,但 appium 无法识别:--session-override, BROWSER_NAME,版本。 [BaseDriver] 使用会话 ID 创建的会话: 7118f268-78fb-4b3e-91fa-f46f119d6dba [AndroidDriver] 获取 Java 版本 [AndroidDriver] Java 版本为:1.8.0_101 [ADB] 检查 adb 是否存在 [ADB] 使用 adb.exe 来自 C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe [AndroidDriver] 检索设备列表 [ADB] 试图找到一个 已连接的 android 设备 [ADB] 正在连接设备... [ADB] 1 连接的设备 [AndroidDriver] 使用设备:IFZDSCVCKJUWRSOV [ADB] 检查 adb 是否存在 [ADB] 使用来自的 adb.exe C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe [ADB] 未将设备 ID 设置为 IFZDSCVCKJUWRSOV [AndroidDriver] 应用文件 列出,而不是我们将直接运行 com.android.deskclock 设备 [AndroidDriver] 检查包是否存在于 设备 [ADB] 正在连接设备... [ADB] 1 个设备已连接 [亚行] 运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell pm list packages com.android.deskclock' [AndroidDriver] 启动 Android 会话 [ADB] 运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV 等待设备' [ADB] 正在连接 设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell echo ping' [AndroidDriver] 推送 设置 apk 到设备... [ADB] 获取安装状态 io.appium.settings [ADB] 正在连接设备... [ADB] 1 设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell pm list packages io.appium.settings' [ADB] 应用程序已安装 [ADB] 获取包信息 'io.appium.settings' [ADB] 获取连接的设备... [ADB] 1 设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell dumpsys 包 io.appium.settings' [ADB] 检查 aapt 是否存在 [ADB] 使用来自的 aapt.exe C:\Users\PAKALI\AppData\Local\Android\Sdk\build-tools\28.0.0-rc2\aapt.exe [ADB] 安装的 'io.appium.settings' 包不需要 upgrade ('2.3.0' >= '2.3.0') [ADB] 正在连接设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell ps' [AndroidDriver] io.appium.settings 已经运行。无需重置其权限。 [亚行] 正在连接设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell getprop ro.build.version.sdk' [ADB] 当前设备属性“ro.build.version.sdk”:24 [ADB] 设备 API 级别:24 [ADB] 正在连接设备... [ADB] 1 个设备 已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell appops 设置 io.appium.settings android:mock_location 允许' [AndroidDriver] setDeviceLanguageCountry 需要语言或国家。 [AndroidDriver] 获取语言: 'undefined' 和 country: 'undefined' [Logcat] 启动 logcat 捕获 [AndroidDriver] 将解锁助手应用推送到设备... [ADB] 获取 io.appium.unlock [ADB] 的安装状态正在连接设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell pm list packages io.appium.unlock' [ADB] 应用程序已安装 [ADB] 获取包信息 'io.appium.unlock' [ADB] 正在连接设备... [ADB] 1 设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell dumpsys 包 io.appium.unlock' [ADB] 检查 aapt 是否存在 [ADB] 使用来自的 aapt.exe C:\Users\PAKALI\AppData\Local\Android\Sdk\build-tools\28.0.0-rc2\aapt.exe [ADB] 安装的 'io.appium.unlock' 包不需要 upgrade ('2.0.0' >= '2.0.0') [ADB] 获取设备平台版本 [ADB] 正在连接设备... [ADB] 1 个设备已连接 [ADB] 跑步 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell getprop ro.build.version.release' [ADB] 当前设备属性“ro.build.version.release”:7.0 [ADB] 获取 连接的设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell wm size' [ADB] 建立连接 设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell getprop ro.product.model' [ADB] 当前 设备属性“ro.product.model”:S6s [ADB] 连接 设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell getprop ro.product.manufacturer' [ADB] 当前设备属性“ro.product.manufacturer”:金立 [AndroidDriver] 没有应用发送,不解析包/活动 [AndroidDriver] 没有应用功能。假设它已经在 设备 [AndroidBootstrap] 观察引导断开连接 [ADB] 转发系统:4724 到设备:4724 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV 转发 tcp:4724 tcp:4724' [UiAutomator] 启动 UiAutomator [UiAutomator] 移动到状态“正在启动” [UiAutomator] 解析 uiautomator jar [UiAutomator] 找到 jar 名称: 'AppiumBootstrap.jar' [ADB] 运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV 推 'C:\Program 文件 (x86)\Appium\resources\app\node_modules\appium-android-bootstrap\bootstrap\bin\AppiumBootstrap.jar' /data/local/tmp/' [ADB] 试图杀死所有 uiautomator 进程 [ADB] 使用 uiautomator 获取所有进程 [ADB] 建立连接 设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell ps' [ADB] 找不到 uiautomator 进程 杀死,继续... [UiAutomator] 启动 UIAutomator [ADB] 使用 args 创建 ADB 子进程: ["-P",5037,"-s","IFZDSCVCKJUWRSOV","shell","uiautomator","runtest","AppiumBootstrap.jar","-c","io.appium.android.bootstrap.Bootstrap ","-e","pkg","com.android.deskclock","-e","disableAndroidWatchers",false,"-e","acceptSslCerts",false] [UiAutomator] 进入“在线”状态 [AndroidBootstrap] Android 引导套接字现已连接 [ADB] 正在连接设备... [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 注册崩溃观察者。 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 客户端已连接 [ADB] 1 设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell dumpsys 窗口' [AndroidDriver] 屏幕 已经解锁,什么都不做 [ADB] 设备 API 级别:24 [ADB] 正在连接设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV 外壳启动 -W -n com.android.deskclock/com.android.deskclock.AlarmClock -S' [Appium] 新的 AndroidDriver 会话创建成功,会话 7118f268-78fb-4b3e-91fa-f46f119d6dba 添加到主会话列表 [BaseDriver] 事件“newSessionStarted”记录在 1528276661138 (14:47:41 GMT+0530 (India Standard Time)) [W3C] 回应客户 使用 driver.createSession() 结果: {"platform":"LINUX","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{ },"desired":{"--session-override":true,"BROWSER_NAME":"Android","VERSION":"7.0","appActivity":"com.android.deskclock.AlarmClock","appPackage" :"com.android.deskclock","deviceName":"IFZDSCVCKJUWRSOV","noReset":true,"platformName":"Android"},"--session-override":true,"BROWSER_NAME":"Android", "VERSION":"7.0","appActivity":"com.android.deskclock.AlarmClock","appPackage":"com.android.deskclock","deviceName":"IFZDSCVCKJUWRSOV","noReset":true,"platformName ":"Android","deviceUDID":"IFZDSCVCKJUWRSOV","platformVersion":"7.0","deviceScreenSize":"1080x1920","deviceModel":"S6s","deviceManufacturer":"GIONEE"} [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/timeouts [HTTP] {"type":"implicit","ms":15000} [W3C] 错误参数: BadParametersError:参数不正确。我们想要“W3C 协议 期望设置任何脚本、pageLoad 或隐式”并且您发送 {"type":"implicit","ms":15000} [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/element [HTTP] {"using":"id","value":"amigo:id/amigo_icon0"} [W3C] 调用 AppiumDriver.findElement() 带参数: ["id","amigo:id/amigo_icon0","7118f268-78fb-4b3e-91fa-f46f119d6dba"] [BaseDriver] 此请求的有效定位器策略:xpath、id、 类名、可访问性 id、-android uiautomator [BaseDriver] 等待条件最多 0 毫秒 [AndroidBootstrap] 发送命令到 安卓: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"amigo:id/amigo_icon0","context":"","多个“:假}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"amigo:id/amigo_icon0","context":"","多个“:假}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:find [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 发现 'amigo:id/amigo_icon0' 使用 'ID' 和 contextId: '' 多个: false [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 使用: UiSelector[INSTANCE=0, RESOURCE_ID=amigo:id/amigo_icon0] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 返回结果: {"status":0,"value":{"ELEMENT":"1"}} [AndroidBootstrap] 收到 引导程序的命令结果 [W3C] 响应客户端 driver.findElement() 结果:{"ELEMENT":"1"} [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/timeouts [HTTP] {"type":"implicit","ms":3000} [W3C] 错误参数: BadParametersError:参数不正确。我们想要“W3C 协议 期望设置任何脚本、pageLoad 或隐式”并且您发送 {"type":"implicit","ms":3000} [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/element/1/click [HTTP] {"id":"1"} [W3C] 使用 args 调用 AppiumDriver.click(): ["1","7118f268-78fb-4b3e-91fa-f46f119d6dba"] [AndroidBootstrap] 向安卓发送命令: {"cmd":"action","action":"element:click","params":{"elementId":"1"}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"element:click","params":{"elementId":"1"}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:点击 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 返回结果: {"status":0,"value":true} [AndroidBootstrap] 收到命令结果 来自引导程序 [W3C] 使用 driver.click() 结果响应客户端: 真 [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/元素 [HTTP] {"using":"id","value":"com.android.deskclock:id/add_alarm_activity_hourNumber"} [W3C] 使用 args 调用 AppiumDriver.findElement(): ["id","com.android.deskclock:id/add_alarm_activity_hourNumber","7118f268-78fb-4b3e-91fa-f46f119d6dba"] [BaseDriver] 此请求的有效定位器策略:xpath、id、 类名、可访问性 id、-android uiautomator [BaseDriver] 等待条件最多 0 毫秒 [AndroidBootstrap] 发送命令到 安卓: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"com.android.deskclock:id/add_alarm_activity_hourNumber","context": "","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"com.android.deskclock:id/add_alarm_activity_hourNumber","context": "","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:find [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 发现 'com.android.deskclock:id/add_alarm_activity_hourNumber' 使用'ID' 带有 contextId: '' 多个:false [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 使用:UiSelector[INSTANCE=0, RESOURCE_ID=com.android.deskclock:id/add_alarm_activity_hourNumber] [AndroidBootstrap] 从引导 [W3C] 接收命令结果 使用 driver.findElement() 结果响应客户端:{"ELEMENT":"2"} [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/frame [HTTP] {"id":{"ELEMENT":"2","element-6066-11e4-a52e-4f735466cecf":"2"}} [W3C] 使用 args 调用 AppiumDriver.setFrame(): [{"ELEMENT":"2","element-6066-11e4-a52e-4f735466cecf":"2"},"7118f268-78fb-4b3e-91fa-f46f119d6dba"] [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/元素 [HTTP] {"using":"id","value":"com.android.deskclock:id/add_alarm_activity_hourNumber"} [W3C] 使用 args 调用 AppiumDriver.findElement(): ["id","com.android.deskclock:id/add_alarm_activity_hourNumber","7118f268-78fb-4b3e-91fa-f46f119d6dba"] [BaseDriver] 此请求的有效定位器策略:xpath、id、 类名、可访问性 id、-android uiautomator [BaseDriver] 等待条件最多 0 毫秒 [AndroidBootstrap] 发送命令到 安卓: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"com.android.deskclock:id/add_alarm_activity_hourNumber","context": "","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"com.android.deskclock:id/add_alarm_activity_hourNumber","context": "","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:find [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 发现 'com.android.deskclock:id/add_alarm_activity_hourNumber' 使用'ID' 带有 contextId: '' 多个:false [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 使用:UiSelector[INSTANCE=0, RESOURCE_ID=com.android.deskclock:id/add_alarm_activity_hourNumber] [AndroidBootstrap] 从引导 [W3C] 接收命令结果 使用 driver.findElement() 结果响应客户端:{"ELEMENT":"3"} [HTTP] GET /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/element/3/text [HTTP] {} [W3C] 使用 args 调用 AppiumDriver.getText(): ["3","7118f268-78fb-4b3e-91fa-f46f119d6dba"] [AndroidBootstrap] 向安卓发送命令: {"cmd":"action","action":"element:getText","params":{"elementId":"3"}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"element:getText","params":{"elementId":"3"}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:getText [AndroidBootstrap] 从引导 [W3C] 接收命令结果 使用 driver.getText() 结果响应客户端:"" [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/execute [HTTP] {“脚本”:“手机: 滚动","args":[{"duration":2,"endY":0.02,"endX":0.022,"startY":-183.8,"startX":3}]} [W3C] 使用 args 调用 AppiumDriver.execute(): ["mobile: 滚动",[{"duration":2,"endY":0.02,"endX":0.022,"startY":-183.8,"startX":3}],"7118f268-78fb-4b3e-91fa-f46f119d6dba"] [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/element [HTTP] {"using":"id","value":"com.android.deskclock:id/add_alarm_save"} [W3C] 使用 args 调用 AppiumDriver.findElement(): ["id","com.android.deskclock:id/add_alarm_save","7118f268-78fb-4b3e-91fa-f46f119d6dba"] [BaseDriver] 此请求的有效定位器策略:xpath、id、 类名、可访问性 id、-android uiautomator [BaseDriver] 等待条件最多 0 毫秒 [AndroidBootstrap] 发送命令到 安卓: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"com.android.deskclock:id/add_alarm_save","context": "","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"find","params":{"strategy":"id","selector":"com.android.deskclock:id/add_alarm_save","context": "","多个":false}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:find [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 发现 'com.android.deskclock:id/add_alarm_save' 使用 'ID' contextId: '' 多个: false [AndroidBootstrap] [BOOTSTRAP LOG] [调试] 使用:UiSelector[INSTANCE=0, RESOURCE_ID=com.android.deskclock:id/add_alarm_save] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 返回结果: {"status":0,"value":{"ELEMENT":"4"}} [AndroidBootstrap] 已收到 引导程序的命令结果 [W3C] 响应客户端 driver.findElement() 结果:{"ELEMENT":"4"} [HTTP] POST /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba/element/4/click [HTTP] {"id":"4"} [W3C] 使用 args 调用 AppiumDriver.click(): ["4","7118f268-78fb-4b3e-91fa-f46f119d6dba"] [AndroidBootstrap] 向安卓发送命令: {"cmd":"action","action":"element:click","params":{"elementId":"4"}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 从客户端获取数据: {"cmd":"action","action":"element:click","params":{"elementId":"4"}} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到 ACTION 类型的命令 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 得到命令动作:点击 [AndroidBootstrap] [BOOTSTRAP LOG] [debug] 返回结果: {"status":0,"value":true} [AndroidBootstrap] 收到命令结果 来自引导程序 [W3C] 使用 driver.click() 结果响应客户端: 真 [HTTP] 删除 /wd/hub/session/7118f268-78fb-4b3e-91fa-f46f119d6dba [HTTP] {} [W3C] 使用 args 调用 AppiumDriver.deleteSession(): [“7118f268-78fb-4b3e-91fa-f46f119d6dba”] [BaseDriver] 事件 'quitSessionRequested' 记录于 1528276671521 (14:47:51 GMT+0530 (印度标准时间)) [Appium] 删除会话 来自我们的主会话列表的 7118f268-78fb-4b3e-91fa-f46f119d6dba [AndroidDriver] 关闭 Android 驱动 [ADB] 建立连接 设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV 外壳是强制停止 com.android.deskclock' [ADB] 按下 HOME 按钮 [ADB] 正在连接设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell 输入键事件 3' [AndroidBootstrap] 向 android 发送命令:{"cmd":"shutdown"} [AndroidBootstrap] [引导日志] [调试] 从客户端获取数据:{"cmd":"shutdown"} [AndroidBootstrap] 从引导接收命令结果 [UiAutomator] 关闭 UiAutomator [UiAutomator] 进入状态 '停止' [UiAutomator] UiAutomator 正常关闭 [UiAutomator] 进入“停止”状态 [ADB] 试图杀死所有 uiautomator processes [ADB] 使用 uiautomator [ADB] 获取所有进程 连接的设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users\PAKALI\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell ps' [ADB] 找不到 uiautomator 进程 杀死,继续...... [UiAutomator] 进入“停止”状态 [Logcat] 停止 logcat 捕获 [ADB] 正在连接设备... [ADB] 1 个设备已连接 [ADB] 正在运行 'C:\Users{用户名![screenshot for app]1}\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s IFZDSCVCKJUWRSOV shell am force-stop io.appium.unlock' [AndroidDriver] 不清理生成的文件。加
clearSystemFiles如果需要的话。 [BaseDriver] 记录事件“quitSessionFinished” 在 1528276676716(14:47:56 GMT+0530(印度标准时间))[W3C] 收到的响应:null [W3C] 但是删除会话,所以不返回 [W3C] 使用 driver.deleteSession() 结果响应客户端:null [HTTP]200 5196 毫秒 - 76
【问题讨论】:
-
请原谅我的格式化技巧。
标签: android mobile automation appium