Как создать и добавить элемент на текущий вид мобильной веб-страницы / виджета - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь настроить метод прокрутки вверх или вниз по мобильным веб-страницам / виджетам для поиска целевого элемента.Когда он достигает границы и определяет, что вид не изменился, направление свайпов меняется на противоположное и продолжает поиск цели или, если количество попыток истекло.Поскольку для Android пока нет простого способа определить, достигла ли она границы, я предпринял попытки решить это решение, найдя активные элементы в поле зрения, и после каждого пролистывания проводил сравнение между активными элементами в текущем представлении иэлемент, который был просмотрен ранее с помощью switchTo (). activeElement ().Я сделал сравнения с помощью Element.toString (), toJson (), hashCode () и getLocation ().Конечно, текущая проблема с использованием switchTo (). ActiveElement () заключается в том, что если он не может сфокусироваться на каком-либо элементе View, ему назначается элемент Body веб-страницы / виджета, что делает его сравнение самим собой.

Мне интересно, были ли попытки во время тестирования создать и вставить MobileElement в веб-страницу / виджет или создали какую-то "липкую точку", чтобы указать, изменился ли вид на экране или нет на основеТочка расположения точки.Очевидно, что это не рекомендуемый подход для создания и добавления элемента и присоединения его к самой веб-странице / виджету, но в настоящий момент я не могу придумать альтернатив для сравнения, если activeElement () будетэлемент, который занимает весь экран мобильного устройства.

Я не уверен, пытался ли кто-нибудь сделать это или использовал ли этот предмет другую терминологию, поскольку из моих исследований очень мало или ничего не выходит, но я готов привестидо этого случая, если был поднят раньше.

Текущий используется для моего поискаSwipe:

void swipeUntilFound(By method, int attempts, MobileElement targetElement) {
   int limitCount = 0;
   double startScrollPoint = 0.8;
   double endScrollPoint = 0.25;

MobileElement lastViewPoint = null;
MobileElement currentViewPoint;

int lastViewPointPosition = 0;

while (limitCount < attempts || driver.findElements(method).isEmpty()) {
    if(lastViewPoint != null) {
        lastViewPointPosition = lastViewPoint.getLocation().getY();
    }
    swipeVertical(startScrollPoint, endScrollPoint, 3000);
    currentViewPoint = (MobileElement) driver.switchTo().activeElement();
    try {
    System.out.println("last Element in View:  " + lastViewPoint.hashCode() + "Location: " + lastViewPoint.getLocation());
    System.out.println("Current Element in View: " + currentViewPoint.hashCode() + "Location: " + currentViewPoint.getLocation());
    }
    catch (NullPointerException e) {

    }


    if(lastViewPoint == null || lastViewPoint.hashCode() != currentViewPoint.hashCode()) {
        System.out.println("Last and Current don't match.");
        lastViewPoint = currentViewPoint;
    }
    else if( lastViewPointPosition == lastViewPoint.getLocation().getY() ||
            lastViewPoint.hashCode() == currentViewPoint.hashCode()) {
        System.out.println("Last and Current match");
        double temp = startScrollPoint; 
        startScrollPoint = endScrollPoint;
        endScrollPoint = temp;
    }

    limitCount++;
}
if(limitCount == attempts) {
    System.out.println("Unable to find Specified Element.");
}else {
    targetElement = driver.findElement(method);
    System.out.println("Element " + method.toString() + " was found.");
}

}

...