我正在尝试使用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')切换帧。一旦执行了此步骤,下面的其余解决方案便可以识别元素。谢谢
答案 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