如何使用Selenium通过“datangclick”属性单击元素

2024-04-25 08:11:22 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用Selenium向以下元素发送单击

注意:它们放在同一页上,并且它们都具有相同的类“btn btn primary”

<button class="btn btn-primary" data-ng-click="ctrl.findInstrumentsBySearch(ctrl.filterInstrument);" data-ng-disabled="ctrl.disableButtonSearchInstrument();"> <span class="fa fa-search"></span> Pesquisar </button>

<button class="btn btn-primary" data-ng-click="ctrl.downloadLimitInstrumentCsv(ctrl.filterInstrument,{ filename: &quot;export.csv&quot; });"> <span class="fa fa-file-excel-o"></span> Exportar </button>

当我尝试使用以下命令时,我收到错误“IndexError:list index out range”:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser = webdriver.Chrome()
browser.get(("https://line.bvmfnet.com.br/#/limits/1"))
python_button = browser.find_elements_by_xpath("//button[@class='btn btn-primary' and @data-ng-click='ctrl.findInstrumentsBySearch(ctrl.filterInstrument)']")[0]
python_button.click()

Tags: fromimportdataseleniumbuttonngclassfa
1条回答
网友
1楼 · 发布于 2024-04-25 08:11:22

要单击文本为“保存”的元素,可以使用以下任一Locator Strategies

  • 佩斯奎萨尔

    • 使用css_selector

      driver.find_element_by_css_selector("button.btn.btn-primary[data-ng-click*='findInstrumentsBySearch'][data-ng-disabled*='disableButtonSearchInstrument']").click()
      
    • 使用xpath

      driver.find_element_by_xpath("//button[@class='btn btn-primary' and contains(@data-ng-click, 'findInstrumentsBySearch')][contains(., 'Pesquisar')]").click()
      

理想情况下,要单击元素,需要为element_to_be_clickable()诱导WebDriverWait,并且可以使用以下Locator Strategies之一:

  • Exportar

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-primary[data-ng-click*='downloadLimitInstrumentCsv']"))).click()
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-primary' and contains(@data-ng-click, 'downloadLimitInstrumentCsv')][contains(., 'Exportar')]"))).click()
      
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

相关问题 更多 >