Я пытаюсь создать автоматизированное тестирование E2E для SDK, который мы создаем.
Мы решили протестировать SDK с помощью тестового приложения, которое будет вызывать команды в таблице, которая будет проверять все возможности SDK.
Я застрял на некоторое время, не понимая, почему некоторые события щелчка работают, а некоторые нет.
Я понял это, потому что те, которые работают, видимы, а те, которые не работают, не видны (не существует на самом деле, пока не будет создана ячейка, когда это необходимо, чтобы быть видимым?). В любом случае это то, что я думаю или надеюсь, потому что если нет, то я действительно не понимаю, что происходит.
Пример работающего кода:
@Test
public void step2_resetToken() throws InterruptedException {
int count = 0;
String s;
do {
MobileElement mElement = (MobileElement) iosDriver.findElement(By.name("Reset Token"));
mElement.click();
Thread.sleep(500);
count++;
assert count < TIMEOUTTIME;
s = element.getText();
System.out.println(s);
} while(!(element.getText().contains("reset token performed:")));
}
Пример кода, который не работает:
@Test
public void step3_isAuthenticatedByPIN() throws InterruptedException {
WebElement tableView = (WebElement) iosDriver.findElementByClassName("XCUIElementTypeTable");
tableView.scrollTo("isAuthenticatedByPIN").click();
int count = 0;
String s;
do {
////XCUIElementTypeStaticText[@name="isAuthenticatedByPIN"]
MobileElement mElement = (MobileElement) iosDriver.findElementByClassName("XCUIElementTypeTable");
mElement.sendKeys("isAuthenticatedByPIN");
mElement.findElement(By.name("isAuthenticatedByPIN"));
mElement.click();
Thread.sleep(500);
count++;
assert count < TIMEOUTTIME;
s = element.getText();
System.out.println(s);
} while(!(element.getText().contains("isAuthenticatedByPIN: YES")));
}
Я пробовал также вызывать этот метод и раньше, поэтому будет прокрутка, но кажется, что он просто не может найти элементы, которые не были видны при запуске приложения:
public static void scrolltoXPath(RemoteWebDriver driver, String xPath) {
RemoteWebElement parent = (RemoteWebElement)driver.findElement(By.className("XCUIElementTypeTable"));
String parentID = parent.getId();
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("element", parentID);
scrollObject.put("name", "isConnected");
driver.executeScript("mobile:scroll", scrollObject);
}
Это тесты, которые нужно попробовать с scrollTo, но Java-клиент не распознает scrollTo (это метод Java или Javascript). Кроме того, я пробовал все другие методы, которые я нашел в Google, и не мог понять это.
- Кто-нибудь может сказать мне, если я прав, заключив, что я не могу щелкнуть по ячейке, которая не отображается?
- Если это так, пожалуйста, помогите с тем, как прокрутить до нужной ячейки.
Спасибо.