0

我正在尝试让 selenium 找到一个元素并单击它。

元素如下:

<button class="btn btn-link">search criteria: on support work 'took place on' (grouped by author), from: 2020-10-01, to: 2020-12-31</button>

单击此按钮时,将在同一 URL 中打开一个表单,允许我输入时间上限和下限。目标是让 Selenium 填写表格并单击“更新”。

我尝试了几种不同的方法('find_element_by_xpath'、'...by_class_name'、'WebDriverWait'等,但 selenium 无法识别按钮元素。我都尝试跳过这一步并尝试直接填写表格(因为它都在同一个 URL 下,但没有运气。

我是一个初学者,所以解决方案可能非常基本。我只是不知道它是什么。

4

4 回答 4

0

检查元素是否在带有标签 iframe 的父元素内:

如果是,那么您必须首先切换到该 iframe:

使用 xpath 找到 iframe webelement,然后切换到它,然后单击按钮

iframe = driver.find_element_by_xpath("//iframe[@id='something']")
driver.switch_to.frame(iframe)

//do your code
// then switch back to main frame
driver.switch_to.default_content()
于 2020-12-02T16:52:00.830 回答
0

试试:driver.findElement(By.cssSelector('btn.btn-link'))

于 2020-12-02T13:30:53.173 回答
0

如果您无法找到它,也不是通过显式等待,您可能需要使用 pyautogui 选择按钮的位置,然后将鼠标移到那里并单击。如果您需要向下滚动以使其可见,请确保实现滚动脚本

于 2020-12-02T13:54:22.147 回答
0

要单击以文本为搜索条件的元素:支持工作“发生于”(按作者分组),从:2020-10-01 到:2020-12-31,您可以使用以下任一定位器策略

  • 使用partial_link_text

    driver.find_element_by_partial_link_text("search criteria: on support work").click()
    
  • 使用xpath

    driver.find_element_by_xpath("//button[@class='btn btn-link' and starts-with(., 'search criteria: on support work')]").click()
    

理想情况下,要单击需要诱导WebDriverWait的元素element_to_be_clickable(),您可以使用以下任一Locator Strategies

  • 使用PARTIAL_LINK_TEXT

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "search criteria: on support work"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-link' and starts-with(., 'search criteria: on support work')]"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
于 2020-12-02T15:36:31.923 回答