Мета: -
- эмулятор iOS v10.3
- Appium java-client v5.0.0 BETA8
- Selenium v3.4.0
На самом деле я пытаюсь установить GeoLocation
в iOS
с помощью Appium
XCUITest
автоматизации. Я пробовал использовать код ниже, который отлично работает на устройстве Android
, а исключение throw на iOS
:
import org.openqa.selenium.html5.Location;
AppiumServiceBuilder builder = new AppiumServiceBuilder().usingAnyFreePort().withAppiumJS("path/to/appium/main.js");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("automationName", "XCUITest");
IOSDriver driver= new IOSDriver(builder, capabilities);
//Here this code working fine with AndroidDriver
Location location = new Location(latitude, longitude, altitude);
driver.setLocation(location);
Исключение:
org.openqa.selenium.WebDriverException: метод еще не реализован (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о стеке)
И когда я пытаюсь использовать JavascriptExecutor как:
Map<String, String> args = new HashMap<String, String>();
args.put("address", "Address");
((JavascriptExecutor)webDriver).executeScript("mobile:setLocation", args);
Исключение:
org.openqa.selenium.UnsupportedCommandException: Неизвестная мобильная команда "setLocation". Только прокрутка, прокрутка, щепотка, doubleTap, twoFingerTap, touchAndHold, tap, dragFromToForDuration, selectPickerWheelValue, поддерживаются команды предупреждений. (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о стеке)
И когда я пытаюсь как:
import org.openqa.selenium.remote.DriverCommand;
Map<String, String> args = new HashMap<String, String>();
args.put("location", "Address");
driver.execute(DriverCommand.SET_LOCATION, args);
Исключение:
org.openqa.selenium.WebDriverException: метод еще не реализован (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о стеке)
Есть ли способ установить GeoLocation
на iOS
с помощью appium?
Журнал Appium:
[debug] [JSONWP Proxy] Получил ответ со статусом 200: "{\n \" value\ ": {\n \" state\ ": \" success\ ",\n \" os\ ": {\n\" name \ ":\" iOS \ ",\n\" version \ ":\" 10.3.1 \ "\n},\n\" ios \ ": {\n\" simulatorVersion \ ":\" 10.3.1 \ ",\n\" ip \ ":\" 192.168.1.17 \ "\n},\n\" build \ ": {\n\" time \ ":\" 29 августа 2017 15: 40: 09\ "\n}\n},\n \" sessionId\ ": \" 10A97A93-D13A-4888-A536-0D62E0674A2B\ ",\n \" status\ ": 0\n}"
[debug] [XCUITest] WebDriverAgent работает на ip '192.168.1.17' [debug] [XCUITest] WebDriverAgent успешно запущен после 16121ms [debug] [BaseDriver] Событие "wdaSessionAttempted" зарегистрировано в 1504013035278 (18:53:55 GMT + 0530 (IST)) [debug] [XCUITest] Отправка createSession команда WDA [debug] [Прокси-сервер JSONWP] Проксирование [POST/session] для [POST http://localhost:8100/session] с телом: { "desiredCapabilities": { "BundleID": "com.example.apple-samplecode.UICatalog", "аргументы": [], "окружающая среда": {}, "shouldWaitForQuiescence": правда, "shouldUseTestManagerForVisibilityDetection" ложь "maxTypingFrequency": 120, "shouldUseSingletonTestManager": правда}} [debug] [JSONWP Proxy] Получил ответ со статусом 200: { "Значение": { "SESSIONID" : "43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C" , "возможность": { "устройство": "айфон", "browserName": "UICatalog", "sdkVersion": "10.3. 1", "CFBundleIdentifier": "com.example.apple-samplecode.UICatalog" }}, "SESSIONID" : "43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C" , "статус": 0} [debug] [BaseDriver] Событие 'wdaSessionStarted' зарегистрировано в 1504013038184 (18:53:58 GMT + 0530 (IST)) [debug] [XCUITest] Найдено данные WDA папка: '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-dikkwtrisltbeobjmfvpthwwekvs' [XCUITest] Настройка разрешений "555" для '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-dikkwtrisltbeobjmfvpthwwekvs/Logs/Test/Attachments' папка [debug] [XCUITest] Найденная папка данных WDA: '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-folfazwwukpzfkegdblpnfuwlvfn' [XCUITest] Настройка разрешений "555" для '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-folfazwwukpzfkegdblpnfuwlvfn/Logs/Test/Attachments' папка [debug] [BaseDriver] Событие "wdaPermsAdjusted" зарегистрировано в 1504013038192 (18:53:58 GMT + 0530 (IST)) [debug] [BaseDriver] Событие 'wdaStarted' зарегистрирован в 1504013038193 (18:53:58 GMT + 0530 (IST)) [debug] [XCUITest] Настройка начальной ориентации на "ПОРТРЕТ" [отладка] [JSONWP Прокси] Проксирование [POST/ориентация] на [POST http://localhost:8100/session/43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C/orientation]с телом: { "ориентация": "ПОРТРЕТ" } [debug] [JSONWP Proxy] Got ответ со статусом 200: { "Значение": {}, "SESSIONID" : "43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C" , "Статус": 0} [debug] [BaseDriver] Событие 'orientationSet' зарегистрировано в 1504013038453 (18:53:58 GMT + 0530 (IST)) [Appium] Создана новая сессия XCUITestDriver успешно, сеанс 6909c363-12a5-4a21-9298-c7f750ba7e09 добавлен в Список основных сессий [debug] [BaseDriver] Событие 'newSessionStarted' зарегистрирован в 1504013038456 (18:53:58 GMT + 0530 (IST)) [debug] [MJSONWP] Ответ на клиент с результатом driver.createSession(): { "WebStorageEnabled" ложь "locationContextEnabled" ложь "browserName": "," платформа ":" MAC "," javascriptEnabled ": правда," databaseEnabled "ложь" takesScreenshot ": правда," networkConnectionEnabled ": ложь," приложение ":" SRC/тест/ресурсы/исполнитель/UICatalog.app "," maxTypingFrequency ":" 120 "," newCommandTimeout ": 0," platformVersion ":" 10,3 "," automationName ":" XCUITest "," platformName ":" IOS "," UDID ":" 0A41ECE4-6D03-4FEA-A82A-858FDBA6620E "," DEVICENAME ":" iPhone 6 "} [HTTP] < - POST/wd/hub/session 200 46915 мс - 512 [HTTP] → GET /wd/hub/session/ 6909c363-12a5-4a21-9298-c7f750ba7e09 {} [debug] [MJSONWP] Вызов AppiumDriver.getSession() с помощью args: [" 6909c363-12a5-4a21-9298-c7f750ba7e09 "] [debug] [XCUITest] Выполнение команда 'getSession' [debug] [Прокси JSONWP] Проксирование [GET/] на [GET http://localhost:8100/session/43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C]без тела [debug] [JSONWP Proxy] Получил ответ со статусом 200: "{\n \ "value \ ": {\n\" sessionId \": \ "43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C \ ",\n\" возможности \": {\n \ "device \ ":\" iphone \ ",\n\" browserName \ ":\" UICatalog \",\n
\ "sdkVersion \ ":\" 10.3.1 \ ",\n\" CFBundleIdentifier \": \ "com.example.apple-samplecode.UICatalog \" \n}\n},\n \ "sessionId \ ":\" 43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C \",\n \ "status \" : 0\n} "[XCUITest] Объединение WDA с крышками Appium для ответ отклика на сеанс [debug] [MJSONWP] Отвечая на запрос клиента Результат driver.getSession(): {" UDID": "," приложение ":" SRC/тест/ресурсы/исполнитель/UICatalog.app "," maxTypingFrequency ": 120," newCommandTimeout ": 0," platformVersion ":" 10,3 "," automationName ":" XCUITest "," platformName ":" IOS "," DEVICENAME ":" iPhone 6 "," device ":" iphone "," browserName ":" UICatalog "," sdkVersion ":" 10.3.1 "," CFBundleIdentifier ":" com.example.apple-samplecode.UICatalog "} [HTTP] < - GET/wd/hub/session/6909c363-12a5-4a21-9298-c7f750ba7e09 200 110 мс - 406 [HTTP] → GET /wd/hub/session/ 6909c363-12a5-4a21-9298-c7f750ba7e09 {} [debug] [MJSONWP] Вызов AppiumDriver.getSession() с помощью args: [" 6909c363-12a5-4a21-9298-c7f750ba7e09 "] [debug] [XCUITest] Выполнение команда 'getSession' [debug] [Прокси JSONWP] Проксирование [GET/] на [GET http://localhost:8100/session/43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C]без тела [debug] [JSONWP Proxy] Получил ответ со статусом 200: "{\n \ "value \ ": {\n\" sessionId \": \ "43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C \ ",\n\" возможности \": {\n \ "device \ ":\" iphone \ ",\n\" browserName \ ":\" UICatalog \",\n
\ "sdkVersion \ ":\" 10.3.1 \ ",\n\" CFBundleIdentifier \": \ "com.example.apple-samplecode.UICatalog \" \n}\n},\n \ "sessionId \ ":\" 43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C \",\n \ "status \" : 0\n} "[XCUITest] Объединение WDA с крышками Appium для ответ отклика на сеанс [debug] [MJSONWP] Отвечая на запрос клиента Результат driver.getSession(): {" UDID": "," приложение ":" SRC/тест/ресурсы/исполнитель/UICatalog.app "," maxTypingFrequency ": 120," newCommandTimeout ": 0," platformVersion ":" 10,3 "," automationName ":" XCUITest "," platformName ":" IOS "," DEVICENAME ":" iPhone 6 "," device ":" iphone "," browserName ":" UICatalog "," sdkVersion ":" 10.3.1 "," CFBundleIdentifier ":" com.example.apple-samplecode.UICatalog "} [HTTP] < - GET/wd/hub/session/6909c363-12a5-4a21-9298-c7f750ba7e09 200 103 мс - 406 [HTTP] → POST /WD/ концентратор/сессия/6909c363-12a5-4a21-9298-c7f750ba7e09/место {" Место ": {" высота ": 0," широта ": 20,672267," hCode ": 1751403001," класс ":" org.openqa.selenium.html5.Location "," долгота ": 83,1649}} [debug] [MJSONWP] Вызов AppiumDriver.setGeoLocation() с помощью args: [{" Высота ": 0," широта ": 20,672267," hCode ": 1751403001," класс ":" org.openqa.selenium.html5.Location "," долгота ": 83,1649}," 6909c363-12a5-4a21- 9298-c7f750ba7e09 "] [debug] [XCUITest] Выполнение команды 'setGeoLocation' [HTTP] < - POST /wd/hub/session/ 6909c363-12a5-4a21-9298-c7f750ba7e09/location 501 30 ms - 122 org.openqa.selenium.WebDriverException: метод пока не установлен (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил ни одной stacktrace информация) Продолжительность или таймаут команды: 58 миллисекунд. Информация о сборке: версия: '3.4.0', версия: 'unknown', время: 'unknown' Системная информация: host: 'Abhays-MacBook-Air.local', ip: 'fe80: 0: 0: 0: 4fc: aa3c: d673: 369e% en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.5 ', java.version:' 1.8.0_131 'Драйвер информация: Возможности io.appium.java_client.ios.IOSDriver [{Приложение = SRC/тест/ресурсы/исполнитель/UICatalog.app, networkConnectionEnabled = false, databaseEnabled = false, deviceName = iPhone 6, платформа = MAC, maxTypingFrequency = 120, newCommandTimeout = 0, platformVersion = 10.3, webStorageEnabled = false, locationContextEnabled = false, automationName = XCUITest, browserName =, принимаетScreenshot = true, javascriptEnabled = true, platformName = iOS, udid = 0A41ECE4-6D03-4FEA-A82A-858FDBA6620E}] Идентификатор сессии: 6909c363-12a5-4a21-9298-c7f750ba7e09 при sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance(Constructor.java:423) в org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215) в org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167) в org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:671) в io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) в io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) в io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1) в io.appium.java_client.AppiumExecutionMethod.execute(AppiumExecutionMethod.java:46) в org.openqa.selenium.remote.html5.RemoteLocationContext.setLocation(RemoteLocationContext.java:50) в io.appium.java_client.AppiumDriver.setLocation(AppiumDriver.java:400) at org.openqa.selenium.html5.LocationContext $setLocation.call(Неизвестно Источник) в org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) в org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110) в org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122) в executor.com.bqurious.keyword.mobile.ios.BqIosSetLocationTest.setLocation(BqIosSetLocationTest.groovy: 72) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java: 43) в java.lang.reflect.Method.invoke(Method.java:498) в org.junit.runners.model.FrameworkMethod $1.runReflectiveCall(FrameworkMethod.java:50) в org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) в org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) в org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) на org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) в org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) в org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) на org.junit.runners.ParentRunner $3.run(ParentRunner.java:290) в org.junit.runners.ParentRunner $1.schedule(ParentRunner.java:71) в org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) в org.junit.runners.ParentRunner.access $000 (ParentRunner.java:58) в org.junit.runners.ParentRunner $2.оценка (ParentRunner.java:268) в org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) в org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) на org.junit.runners.ParentRunner.run(ParentRunner.java:363) в org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) в org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) [HTTP] → DELETE/wd/hub/session/6909c363-12a5-4a21-9298-c7f750ba7e09 {} [debug] [MJSONWP] Вызов AppiumDriver.deleteSession() с помощью args: [" 6909c363-12a5-4a21-9298-c7f750ba7e09 "] [debug] [BaseDriver] Событие 'quitSessionRequested' зарегистрирован в 1504013038955 (18:53:58 GMT + 0530 (IST)) [debug] [Прокси JSONWP] Проксирование [DELETE /session/ 6909c363-12a5-4a21-9298-c7f750ba7e09] на [УДАЛИТЬ http://localhost:8100/session/43710C7E-2FDE-4A35-A2E0-4D309EE2CE9C]без тела [debug] [JSONWP Proxy] Получил ответ со статусом 200: "{\n \ "value \" : {\n\n},\n\ "sessionId \" : \ "28E97E0B-DF47-4325-8991-A28B77134EDB \ ",\n\" status \": 0\n} "[XCUITest] Выключение подпроцессов [XCUITest] Выключение Процесс xcodebuild (pid 37304) [XCUITest] xcodebuild завершен с кодом 'null' и сигнал 'SIGTERM' [debug] [XCUITest] Найдено данные, полученные WDA папка: '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-dikkwtrisltbeobjmfvpthwwekvs' [XCUITest] Установка разрешений" 755 "для '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-dikkwtrisltbeobjmfvpthwwekvs/Logs/Test/Attachments' папка [debug] [XCUITest] Найденная папка данных WDA: '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-folfazwwukpzfkegdblpnfuwlvfn' [XCUITest] Установка разрешений" 755" для '/Users/omprakash.mishra/Library/Developer/Xcode/DerivedData/WebDriverAgent-folfazwwukpzfkegdblpnfuwlvfn/Logs/Test/Attachments' folder [debug] [XCUITest] Не очистка файлов журнала. использованиеclearSystemFiles
возможность включения. [debug] [iOSLog] Остановка iOS log capture [Appium] Удаление сеанса 6909c363-12a5-4a21-9298-c7f750ba7e09 из нашего списка мастер-сессий [debug] [BaseDriver] Событие 'quitSessionFinished', зарегистрированное в 1504013039408 (18:53:59 GMT + 0530 (IST)) [debug] [MJSONWP] Получено response: null [debug] [MJSONWP] Но удаление сеанса, поэтому не return [debug] [MJSONWP] Отвечая на вопрос клиента с driver.deleteSession() result: null [HTTP] < - DELETE /wd/hub/session/ 6909c363-12a5-4a21-9298-c7f750ba7e09 200 461 мс - 76