【问题标题】:Selenium Python: 'Close' button on pop-up window not interactableSelenium Python:弹出窗口上的“关闭”按钮不可交互
【发布时间】:2021-01-09 06:03:31
【问题描述】:

似乎无法单击“关闭”按钮来关闭我之前打开的小窗口以抓取它显示的数据。 该按钮具有以下 html 脚本:

<div class="closebutton" onclick="return hs.close(this)" title="Schließen"></div>

我正在尝试以下方法:

driver.find_element_by_xpath("//div[@class='closebutton']").click()

但我得到了错误:

Message: element not interactable

有人知道如何使元素可交互吗?

【问题讨论】:

    标签: python selenium xpath css-selectors webdriverwait


    【解决方案1】:

    要点击元素,您可以使用以下任一Locator Strategies

    • 使用css_selector

      driver.find_element_by_css_selector("button.closebutton[title='Schließen']").click()
      
    • 使用xpath

      driver.find_element_by_xpath("//div[@class='closebutton' and @title='Schließen']").click()
      

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

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.closebutton[title='Schließen']"))).click()
      
    • 使用XPATH:

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='closebutton' and @title='Schließen']"))).click()
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

    • 感谢您的回复,我已经尝试过 webdriver wait 和 Css 选择器。我认为问题在于弹出窗口。有趣的是,虽然我可以在弹出窗口中抓取数据,但无论出于何种原因我都无法激活关闭按钮。
    • @davvpo 您是否尝试过答案中的任何选项?你看到了什么错误?
    • 是的,我试过了,我首先用 XPATH 尝试了这两种方法。 CSS 选择器有同样的问题。使用 Webdriver.wait 时出现超时错误:TimeoutException: Message:
    • 当使用普通选项时:'Message: element not interactable' for XPATH and 'Message: element not found' for CSS Selector
    • @davvpo 从一般的角度看,&lt;div&gt; 标签不可点击,&lt;div&gt; 有没有孩子,也许是&lt;span&gt;
    猜你喜欢
    • 2020-08-19
    • 2021-03-11
    • 1970-01-01
    • 2020-06-29
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多