Как нажать на угловое выпадающее меню в Selenium - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь использовать python selenium для автоматизации создания отчетов на веб-сайте, однако я изо всех сил пытаюсь определить элемент, который мне нужно щелкнуть на странице из-за JavaScript.В Firefox есть значок DOM Event, когда я проверяю элемент.Я пробовал множество вариантов, включая xpath и т. Д., Но не повезло.

<account-groups ng-if="EventsList.ToggleService.accountGroup();">
<button class="btn-default" ng-disabled="AccountGroupsCtrl.isDisabled()" ng-click="AccountGroupsCtrl.toggleFlyout()">
</button>
</account-groups>

РЕДАКТИРОВАТЬ Для всех, кто просматривал эту проблему, проблема заключалась в том, что я не переключал кадры с помощью driver.switch_to.frame ('frame_name ').После выполнения этого шага остальные решения, приведенные ниже, работали над определением элементов.Спасибо

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Что касается HTML, которым вы поделились, неясно, является ли WebElement Dropdown .Однако, поскольку требуемый элемент является элементом Angular для вызова click() на элементе, который необходимо вызвать WebDriverWait , и вы можете использовать любое из следующих решений:

  • CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn-default[ng-click^='AccountGroupsCtrl']"))).click()
    
  • XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn-default' and starts-with(@ng-click,'AccountGroupsCtrl')]"))).click()
    

Примечание : Вы должны добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 16 октября 2018

Вы можете использовать следующий код для выбора из выпадающего списка.

from selenium.webdriver.support.ui import Select

select = Select(driver.find_element_by_id('*****'))
select.select_by_visible_text('****')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...