【问题标题】:Python/Selenium Access element inside of iframeiframe 内的 Python/Selenium 访问元素
【发布时间】:2021-11-01 00:40:05
【问题描述】:

我正在尝试访问 iframe 中的一些元素,但没有成功。基本上,我找到了 iframe,切换到它,但我可以得到它里面的元素。我尝试的所有元素,我总是收到一条消息说找不到 元素

你能帮忙吗?

HTML:

【问题讨论】:

  • @cruisepandey,抱歉,链接需要验证才能显示页面。我会在帖子中更新代码。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python-3.x selenium xpath iframe css-selectors


【解决方案1】:

由于元素位于 <iframe> 内,因此您必须:

  • 诱导WebDriverWait 使所需的帧可用并切换到它

  • 诱导WebDriverWait 使所需的元素可点击

  • 您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"frame-router[activeclient='analyticsUi'] > iframe[sandbox]")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "css_clickable_element"))).click()
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame-router[@activeclient='analyticsUi']/iframe[@sandbox]")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "xpath_clickable_element"))).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】:

    您可以使用以下代码切换到框架,然后与所需的元素进行交互:-

    wait = WebDriverWait(driver, 20)
    wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[contains(@sandbox,'allow-popups-to-escape-sandbox')]")))
    ele = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.analytics-ui-application")))
    #ele is a web element so you can trigger .click, .text or any other web element methods on it. 
    

    进口:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-05
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2020-08-15
      • 2020-05-24
      • 2020-09-08
      相关资源
      最近更新 更多