Не удалось найти элемент в Appium By.name в раскрывающемся списке со списком поиска

Я совершенно новичок в Appium, хочу найти элемент By.name, при этом я ищу в списке, поэтому получаю результат совпадения текста поиска, но не щелкаю элемент точного совпадения имени, даже если он не щелкает какой-либо элемент из списка, может будь то попытка щелкнуть набранный текст. Не знаю, как применить несколько условий, чтобы найти элемент. Итак, как мы можем это сделать? прикрепленное изображение, связанное с этим:

1) Изображение: 1 введите здесь описание изображения

2) Изображение: 2

введите здесь описание изображения driver.findElement(By.name("Biscuit")).click();


person Shreekant N    schedule 15.08.2016    source источник
comment
biscuit указан как не кликабельный в деталях элемента, возможно, если какой-то элемент выше иерархии, вы можете написать, чтобы щелкнуть этот элемент с дочерним элементом с текстом Biscuit   -  person juhlila    schedule 15.08.2016
comment
@juhlia Я обновил скриншот, я совершенно новичок в appium, мы не можем искать элемент с несколькими условиями?   -  person Shreekant N    schedule 16.08.2016


Ответы (2)


мы можем использовать xpath, чтобы применить дополнительные условия для поиска элемента даже в appium, для приведенного выше случая использовалось 2-е изображение и применено условие как driver.findElement(By.xpath("//android.widget.TextView[@text='Biscuit']")).click();

поэтому мы достигаем этого с двумя условиями

1.className="android.widget.TextView" и text='Печенье'

обратите внимание, что clickable=false по-прежнему не имеет значения, это clickable Parent

дополнительные сведения: http://www.software-testing-tutorials-automation.com/2015/10/ui-automator-viewer-get-android-app.html

person Shreekant N    schedule 16.08.2016

Похоже, что все элементы в списке продуктов имеют одинаковый идентификатор. Итак, вы можете найти все элементы в списке продуктов, а затем с помощью цикла for перебрать каждый элемент.

List<WebElement> productList = driver.findElements(By.id("producttext"));

    for(WebElement product : productList) {
        String productText = product.getText();

        if(productText.equalsIgnoreCase("Biscuit")) {
            product.click();
        }
    }

Приведенный выше код сохранит все элементы с идентификатором «producttext», присутствующие на текущем экране. И цикл for будет перебирать каждый элемент. Я добавил проверку, что когда он находит элемент с текстом «Печенье», он щелкает этот элемент. Вы можете добавить дополнительную проверку в зависимости от вашего теста.

person Suman    schedule 17.08.2016