не удается найти элемент Android AutoCompleteTextView - PullRequest
0 голосов
/ 15 февраля 2019

Я не могу получить доступ к отмеченному элементу X.

Уже поговорил с разработчиками, и они сказали, что невозможно добавить на него идентификатор или тег доступности, они говорят, что это тип элемента https://developer.android.com/reference/android/widget/AutoCompleteTextView.

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

Как я могу найти этот элемент более эффективно?

Я использую appium для автоматизации тестирования, но это должно быть проблемой для любой инфраструктуры автоматизации тестирования.

Инструмент, используемый в образе, - это uiautomatorviewer.

enter image description here

Ответы [ 3 ]

0 голосов
/ 16 февраля 2019

Вы можете сделать с позицией X & Y без жесткого кодирования значения, и оно будет работать и на других устройствах, так как кнопка «X» не имеет локатора, его встроенная функциональность с edittext, так что у Android uiautomator не будет доступа к этому элементу

  1. Получить длину EditText
  2. Получить X & Y
  3. Проходное значение в действии Touch с помощью (3/4 из X, Y / 2)

Это щелкнет по этой позиции, здесь вам нужно изменить 3/4 в соответствии с вашей позицией

0 голосов
/ 17 февраля 2019

Вы можете использовать класс Touchaction, чтобы коснуться опции Cross в поле editText.

Попробуйте использовать приведенный ниже код

// Identify the x and y co-ordinate for EditText field
    Point elementLoc = driver.findElement(By.xpath("xpath of edittext field")).getLocation();
    int eleX = elementLoc.getX();
    int eleY = elementLoc.getY();

// Identify the width and height of the editText field
    Dimension elementDimen = driver.findElement(By.xpath("xpath of edittext field")).getSize();
    int eleH = elementDimen.getHeight();
    int eleW = elementDimen.getWidth();


// Determine the x and y co-ordinates of cross option    
    int touchX = (int)(eleX + eleW * 0.75D); // 75% from the x co-ordinate of editText field ( x axis position for cross option)
    int touchY = (int)(eleY + eleH * 0.5D);  // 50 % from the y co-ordinate of editText field (y axis position for cross option)

// Tap on the cross option
    TouchAction<?> action = new TouchAction(driver);
    action.tap(PointOption.point(touchX, touchY)).release().perform();

Поэкспериментируйте со значением смещения для переменных touchX и touchY, прежде чем найти точную опцию положения креста.

0 голосов
/ 15 февраля 2019

Вы должны попробовать с классом элемента.driver.findElement(By.className("android.widget.EditText"));

если появляется более 1-го элемента, вы можете попробовать List<WebElement> e=driver.findElements(By.className("GLButton")); e.get(≤Position>).click();

...