Как указать конкретный элемент на веб-странице с помощью Selenium? - PullRequest
0 голосов
/ 05 июня 2019

Мне нужны некоторые элементы на веб-странице, чтобы я не мог видеть их идентификатор в инструментах разработчика:

<input type="text" ng-if="!editing" ng-model="item.Price" ng-click="inputFocus()" ts="" required="" placeholder="Price :" class="ng-pristine ng-untouched ng-scope ng-empty ng-invalid ng-invalid-required">

Я также хотел использовать xpath, но я видел, что есть несколько похожих элементов с одинаковыми xpath s на странице. Так как же я могу указать нужный элемент из приведенного выше кода?

1 Ответ

1 голос
/ 06 июня 2019

Существуют и другие стратегии определения местоположения, вы можете найти элементы не только по ID , но и по другим параметрам:

  • по Имя - значение name атрибут HTML

    not applicable because your element doesn't have name attribute 
    
  • от XPath - вы можете использовать произвольное выражение XPath чтобы найти свой элемент, например:

    driver.find_element_by_xpath("//input[@type='text']")
    driver.find_element_by_xpath("//input[contains(@placeholder, 'Price')]")
    
  • по Текст ссылки <a href="http://example.com">Example Domain</a> здесь текст Example Domain

    not applicable because your element is not a hyperlink
    
  • по Имя тега - ваш HTML-тег, в вашем случае это input

    driver.find_element_by_tag_name("input")
    
  • по Имя класса - значение атрибута HTML class

    driver.find_element_by_class_name("ng-pristine ng-untouched ng-scope ng-empty ng-invalid ng-invalid-required")
    
  • от CSS Selector - с помощью CSS Selector

    driver.find_element_by_css_selector("input[ng-model=item.Price]")
    

Самый простой и быстрый способ, позволяющий однозначно идентифицировать элемент, - лучший.

Самый мощный из вышеупомянутых подходов к локации - это XPath, но он самый медленный и самый ресурсоемкий.

...