Можем ли мы найти элемент по ID в appium

В следующей ссылке упоминается, что мы можем найти элемент, указав id … но я не могу его найти.

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/finding-elements.md

Найти по «имени» (т. Е. Текст, ярлык или созданный разработчиком идентификатор aka 'accessibilityIdentifier' элемента)

Я пробовал следующий код:

WebElement el = driver.findElement(By.name("txtLogin")); 

Где txtLogin является id для кнопки входа в систему

Это дает следующее исключение:

 org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information) 

Может понравиться, кто-нибудь объяснит, каковы все способы найти элементы в appium

Solutions Collecting From Web of "Можем ли мы найти элемент по ID в appium"

Вы можете использовать идентификатор элемента следующим образом:

Имя пакета: com.example.testap

Элемент ID: txtLogin

Напишите следующий код –

  driver.findElement(By.id("com.example.testapp:id/txtLogin")).sendKeys("abc"); 

Вы также можете найти идентификатор с помощью Xpath , например Введите описание изображения здесь Здесь элемент имеет class = "android.widget.Button" и id = "digit5", чтобы вы могли найти

xpath("//android.widget.Button[contains(@resource-id,'digit5')]")

Xpath наиболее полезен, если вы хотите применить множественное условие, такое как xpath("//android.widget.Button[contains(@resource-id,'digit5') and @text='5']") для получения дополнительной информации, которую вы можете увидеть на http://www.software-testing-tutorials-automation.com/2015/10/ui-automator-viewer-get-android-app.html

Получение элемента по идентификатору невозможно для уровня API Android менее 18. Возможно, вы проверяете uiautomatorviewer, если присутствует идентификатор. Если нет, вы можете получить все элементы типа EditView и перебрать его, чтобы найти правильное поле для отправки текста.

Используйте его таким образом –

 public List<WebElement> getWebElementList(By by) { return driver.findElements(by); } public void details() throws InterruptedException{ List<WebElement> weList = null; weList = getWebElementList(By.tagName("android.widget.EditView")); for (WebElement we : weList) { if(we.getText().toLowerCase().contains("login")){ we.sendkeys("Hello"); } } } 

Надеюсь это поможет.

В версии Appium 1.0 и далее findElementByTagName устарел.

Вы должны использовать findElementByClassName вместо этого с квалифицированным именем класса. Код для EditTextField и кнопки в android, как показано ниже:

findElements (By.className ( "android.widget.EditText"));

findElements (By.className ( "android.widget.Button"));

Вы можете найти идентификатор элемента, используя андроид uiautomatorviewer . Просто перейдите в папку инструментов SDK D: \ Android \ android-sdk \ tools, здесь вы можете найти uiautomatorviewer. Откройте его и сделайте скриншоты своей деятельности и найдите id, class, package любого элемента.

Введите описание изображения здесь

Вот код jave с наиболее распространенными способами поиска элементов с помощью Appium

 //Find element by id and enter Hello in Text box. driver.findElementById("edit_name").sendKeys("Hello"); //Find element by class name and enter Hello in Text box. driver.findElementByClassName("com.android.EditText").sendKeys("Hello"); //Find element by xpath and enter Hello in Text box. driver.findElementByXPath("//cass[@value='Enter Name']").sendKeys("Hello"); //Find element by link text and enter Hello in Text box. driver.findElementByLinkText("Enter Name").sendKeys("Hello"); 

Если вы хотите узнать больше способов найти элементы в appium для родных и веб-просмотров, ПОСМОТРЕТЬ ЗДЕСЬ