【问题标题】:How to click icon within pop-up in Selenium webdriver using Python如何使用 Python 在 Selenium webdriver 的弹出窗口中单击图标
【发布时间】:2020-02-11 05:56:58
【问题描述】:

我正在尝试通过单击弹出窗口右上角的“X”图标来关闭信用卡 3DS 验证,如下所示。

以上弹窗的CSS代码在这里:

<div id="three-ds-container" style="">
        <i id="close-3ds" style="position: absolute;right: 10px;top: 10px;cursor:pointer;" class="fa fa-close"></i>
        <iframe height="450" width="550" id="sample-inline-frame" name="sample-inline-frame"></iframe>
    </div>

我尝试使用点击图标

driver.find_element_by_css_selector('div#three-ds-container i#close-3ds.fa.fa-close').click()

但弹出窗口不会关闭。

我注意到当我将鼠标悬停在图标上时,光标会提示图标可以点击,这与我的问题有关吗?

感谢您的回答。

【问题讨论】:

  • 可以分享要抓取的url吗?
  • @anon_143 很抱歉,我现在不能这样做,因为这与我的软件公司的付款流程有关
  • 手动点击它会关闭吗?请检查按钮是否在 iframe 内,单击它时是否出现异常?等待一段时间后再点击。
  • 没关系,如果 css 选择器不工作或者你知道的任何其他随机站点有这样的弹出窗口,我建议你使用 xpath ?

标签: python selenium selenium-webdriver xpath css-selectors


【解决方案1】:

要点击元素,您必须为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下任一解决方案:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#three-ds-container > i.fa-close#close-3ds"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='three-ds-container']/i[@class='fa fa-close' and @id='close-3ds']"))).click()
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    【解决方案2】:

    弹出窗口与您所在的框架不同,所以我相信您的问题是您需要切换到该框架(iframe height="450" width="550" id="sample-inline-frame" name ="sample-inline-frame") 以单击关闭按钮。

    执行此操作的代码如下所示:

    iframe = driver.find_element_by_id("sample-inline-frame")
    driver.switch_to.frame(iframe)
    

    那么你应该可以做到:

    driver.find_element_by_css_selector('div#three-ds-container i#close-3ds.fa.fa-close').click()
    

    我之前遇到过同样的问题,所以我知道这很沮丧,希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多