如何在硒中单击角度下拉菜单

时间:2018-10-16 05:45:50

标签: python angularjs selenium-webdriver

我正在尝试使用python selenium来自动化网站上生成的某些报告,但是由于JavaScript的原因,我正在努力确定需要单击页面的元素。当我检查元素时,在firefox中有一个DOM事件图标。我尝试了很多变体,包括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 :(得分:0)

您可以使用以下代码从下拉菜单中进行选择。

from selenium.webdriver.support.ui import Select

select = Select(driver.find_element_by_id('*****'))
select.select_by_visible_text('****')

答案 1 :(得分:0)

根据您共享的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