【问题标题】:How to click on an element within an iframe with Selenium and Python [duplicate]如何使用 Selenium 和 Python 单击 iframe 中的元素 [重复]
【发布时间】:2026-01-28 09:20:04
【问题描述】:

我在 iframe 中有以下元素。此标签显示一个“>”图标,并在用户单击它时翻转到 URL 上的下一个图形。你可以在下面的 URL 中看到它说的地方

https://msdh.ms.gov/msdhsite/_static/14,21995,420,873.html

<a>
<i class="glyphicon glyph-small pbi-glyph-chevronrightmedium middleIcon active pbi-focus-outline" focus-element="" tabindex="0" title="Next Page">
</i>
</a>

如何使用 Selenium 向该元素发送点击操作以翻转到下一个图表?

url='https://msdh.ms.gov/msdhsite/_static/14,21995,420,873.html'
p='my/path/to/chromedriver'
driver=webdriver.Chrome(p)
driver.get(url)
myframe=driver.find_element_by_class_name("flexibleFrame")
driver.switch_to.frame(myframe)
i = driver.find_element_by_class_name("glyphicon")

【问题讨论】:

  • 你试过什么?你试过i.click()吗?我不明白问题是什么。
  • 感谢您的确认。我的班级选择器选择了左边的雪佛龙,所以点击没有做任何事情,因为没有什么可以翻转的。我修复了选择器,现在它按预期工作了!

标签: selenium xpath iframe css-selectors webdriverwait


【解决方案1】:

&gt; 图标位于&lt;iframe&gt; 内,因此要使用SeleniumWebElement 交互,您必须:

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

  • 为所需的 visibility_of_element_located() 引入 WebDriverWait

  • scrollIntoView()WebElement

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

  • 使用CSS_SELECTOR

    driver.get('https://msdh.ms.gov/msdhsite/_static/14,21995,420,873.html')
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.flexibleFrame")))
    elem = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "i.glyphicon.glyph-small.pbi-glyph-chevronrightmedium.middleIcon.active.pbi-focus-outline[title='Next Page']")))
    driver.execute_script("arguments[0].scrollIntoView(true);", elem)
    elem.click()
    
  • 使用XPATH

    driver.get('https://msdh.ms.gov/msdhsite/_static/14,21995,420,873.html')
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='flexibleFrame']")))
    elem = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//i[@class='glyphicon glyph-small pbi-glyph-chevronrightmedium middleIcon active pbi-focus-outline' and @title='Next Page']")))
    driver.execute_script("arguments[0].scrollIntoView(true);", elem)
    elem.click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:


参考

您可以在以下位置找到相关讨论:

【讨论】:

    最近更新 更多