Я пытаюсь создать автоматизированное 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, и не смог понять это.
- Кто-нибудь может сказать мне, прав ли я в выводе, что я не могу щелкнуть ячейку, которая не отображается?
- Если это так, пожалуйста, помогите с тем, как перейти к ячейке, на которую мне нужно нажать.
Спасибо.