Appium-uiAutomator отлично работает для Android, но не для iOS

Я пытаюсь перейти к элементу, используя следующий код:

@AndroidFindBy (uiAutomator = "new UiScrollable (new UiSelector ()). ScrollIntoView (" + "new UiSelector (). Text (\" Контакты \ "));") @iOSFindBy (uiAutomator = "new UiScrollable (new UiSelector () ) .scrollIntoView ("+" новый UiSelector (). text (\ "Контакты \")); ") общедоступный MobileElement orgContact;

Это отлично работает в Android, но на iOS я получаю следующую ошибку: org.openqa.selenium.NoSuchElementException: не удается найти элемент с помощью этой стратегии: Карта локатора: - собственный контент: «By.IosUIAutomation: новый UiScrollable (новый UiSelector ( )). scrollIntoView (новый UiSelector (). text ("Контакты")); "

Я также пробовал прокручивать, используя: public void verticalScroll (драйвер AppiumDriver) {

this.driver=driver;
dimensions = driver.manage().window().getSize();
Double screenHeightStart = dimensions.getHeight() * 0.5;
int scrollStart = screenHeightStart.intValue();
System.out.println("s="+scrollStart);
Double screenHeightEnd = dimensions.getHeight() * 0.2;
int scrollEnd = screenHeightEnd.intValue();
driver.swipe(0,scrollStart,0,scrollEnd,5000);

} Но это тоже не работает. Может ли кто-нибудь предложить, что я здесь делаю не так?


person Ronit Joardar    schedule 27.03.2017    source источник


Ответы (1)


Шалом Ронит.

Причина того, что ваш код не работает, заключается в том, что вы используете стратегию локатора Android для себя @iOSFindBy, что неправильно, очень неправильно.

В зависимости от вашей версии Xcode вы не сможете использовать UiAutomator на iOS (в Xcode 8 Apple удалила эту опцию)

Вы должны использовать ID / Accessibility ID или даже Xpath. Пожалуйста, найдите время и изучите стратегии локатора, поищите примеры и как правильно находить элементы для iOS.

Я не могу оказать больше помощи, так как я не знаком с приложением, которое вы пытаетесь автоматизировать. Есть ли у этого элемента идентификатор? отображается или вы должны прокрутить, чтобы найти его? Ты хоть умеешь пользоваться driver.findBy()?

person David Ep    schedule 27.03.2017