元素不可点击(按钮被其他元素阻止)

时间:2018-03-06 01:17:51

标签: python html css selenium selenium-chromedriver

Trying to click this button id="btnSearch"

我正在尝试点击此按钮:browser.find_element_by_id('btnSearch')

但是此按钮被此div标签阻止:<div id="actionSearch" class="row pull-right">

如果在被actionSearch div阻止的情况下,如何点击此按钮并使用id ='btnSearch“?

我尝试了以下内容:

  • browser.find_element_by_id('btnSearch').click()

  • browser.implicitly_wait(10)
    el = browser.find_element_by_xpath('//*[@id="btnSearch"]')
    ActionChains(browser).move_to_element_with_offset(el, 1827, 270)
    ActionChains(browser).click()
    ActionChains(browser).perform()
    
  • element = browser.find_element_by_id('btnSearch')
    browser.execute_script("arguments[0].click();", element)
    
  • wait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, //*[@id="btnSearch"]'))).click()
    

这些都不起作用。

任何人都可以帮我吗?我花了两天时间试图点击这个按钮!请帮忙!

1 个答案:

答案 0 :(得分:0)

考虑提供HTML源代码的图像(提示:不要将其作为图像提供,而是作为文本提供)我可以假设所需的元素位于页面底部,您可能需要向下滚动页面才能处理它

尝试以下代码

link = browser.find_element_by_id("btnSearch")
browser.execute_script("arguments[0].scrollIntoView()", link)
link.click()

请注意,链接不是伪元素(不在::before / ::after伪元素内),因此它不能成为您的问题的原因

至于你的代码:

ActionChains(browser).move_to_element_with_offset(el, 1827, 270)
ActionChains(browser).click()
ActionChains(browser).perform()

在这里,您尝试滚动链接以获得巨大的偏移量,然后点击当前鼠标位置 - 不在链接

您可以尝试将其修改为

ActionChains(browser).move_to_element(el)
ActionChains(browser).click(el)  # Pass WebElement you want to click as argument to `click()`
ActionChains(browser).perform()