当前位置: 首页 > 面试题库 >

Python Selenium切换到iframe中的iframe

孟德曜
2023-03-14
问题内容

我正在尝试使用Selenium,Python和BS4在iframe中访问iframe

from bs4 import BeautifulSoup
from selenium import webdriver
import time
import html5lib

driver = webdriver.Firefox()
driver.implicitly_wait(10)

driver.get('http://myurl.com')
try:
    time.sleep(4)
    iframe = driver.find_elements_by_tag_name('iframe')[0]
    driver.switch_to_default_content()

    driver.switch_to_frame(iframe)
    driver.switch_to_default_content()
    driver.find_elements_by_tag_name('iframe')[0]

    output = driver.page_source

    print output

finally:
    driver.quit();

在返回的文本中,似乎还有两个iframe。我将如何访问那些?我尝试上面的代码没有成功。


问题答案:

switch_to_default_content()将返回到文档顶部。发生的事情是您切换到第一个iframe,然后又切换回文档的顶部,然后尝试查找第二个iframe。硒找不到第二个iframe,因为它在第一个之内iframe

如果删除第二个switch_to_default_content(),则应该没问题:

iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to.default_content()

driver.switch_to.frame(iframe)
driver.find_elements_by_tag_name('iframe')[0]


 类似资料:
  • 问题内容: 我正在尝试使用Selenium,Python和BS4在iframe中访问iframe 在返回的文本中,似乎还有两个iframe。我将如何访问这些?我尝试上面的代码没有成功。 问题答案: 将返回到文档顶部。发生的事情是,您切换到第一个,切换回文档的顶部,然后尝试查找第二个。硒找不到第二个,因为它在第一个之内。 如果删除第二个,则应该没问题:

  • 请回答如何从现有网页窗口切换到新的弹出窗口

  • 我需要一个有2个IFRAME的布局,在屏幕上可以通过javascript切换而不刷新内容(它们只是改变位置),并且可以调整列的大小。在移动设备上,它们应该是100%宽度堆叠的。 此处绘制示例 [请参阅此处的codepen:][2][2]:https://codepen.io/az3l10/pen/vygvmep 我的问题是,由于DIV位置是绝对的,我不能调整列的大小,如果我改变了位置,我不能切换。

  • 我正试图在Selenium和python中构建一个bot,它可以登录到SoundCloud并从它们的服务器执行一些其他任务。我已经让selenium点击了登录按钮,但是从那里我很难让selenium点击输入字段并在随后的Iframe中输入文本以发送电子邮件,有人能给我一些建议吗?:)