Python Selenium Webdriver提供NoSuchFrameException

Python Selenium Webdriver提供NoSuchFrameException,python,python-2.7,selenium,selenium-webdriver,Python,Python 2.7,Selenium,Selenium Webdriver,我想在网页中选择框架,但在Selenium IDE中选择框架失败。当我使用Webdriver时,会出现NoSuchFrameException: driver.find_element_by_name("GO").click() driver.find_element_by_id("EO_PE_SRCH_INP_EO_PE_URLTEXT$5").click() driver.switch_to.frame("contentFrame") driver.switch_到.frame(“cont

我想在网页中选择框架,但在Selenium IDE中选择框架失败。当我使用Webdriver时,会出现
NoSuchFrameException

driver.find_element_by_name("GO").click()
driver.find_element_by_id("EO_PE_SRCH_INP_EO_PE_URLTEXT$5").click()
driver.switch_to.frame("contentFrame")
driver.switch_到.frame(“contentFrame”)文件 “/Library/Python/2.7/site packages/selenium-2.44.0-py2.7.egg/selenium/webdriver/remote/switch_to.py”, 第64行,在帧中 self._driver.execute(Command.SWITCH_TO_FRAME,{'id':FRAME_reference})文件 “/Library/Python/2.7/site packages/selenium-2.44.0-py2.7.egg/selenium/webdriver/remote/webdriver.py”, 执行中的第173行 self.error\u handler.check\u响应(响应)文件“/Library/Python/2.7/site packages/selenium-2.44.0-py2.7.egg/selenium/webdriver/remote/errorhandler.py”, 第166行,在check_响应中 引发异常\u类(消息、屏幕、堆栈跟踪)NoSuchFrameException:消息:无法找到帧:contentFrame 堆栈跟踪: 在FirefoxDriver.prototype.switchToFrame(file:///var/folders/nk/l6lw3w5917l99dl9vs0g6z_m0000gn/T/tmp4NI1ne/extensions/fxdriver@googlecode.com/components/driver component.js:9710:11) 在DelayedCommand.prototype.executeInternal\uh处(file:///var/folders/nk/l6lw3w5917l99dl9vs0g6z_m0000gn/T/tmp4NI1ne/extensions/fxdriver@googlecode.com/components/command processor.js:11635:16)
在fxdriver.Timer.prototype.setTimeout/这是一个您正在处理的
框架集
,分两步完成:

frame = driver.find_element_by_id("fm2")
driver.switch_to.frame(frame)

driver.switch_to.frame("contentFrame")
您还可以:


更新(使用评论中提供的真实示例):

似乎需要切换到“按索引帧”:


仍然找不到contentFrame。实际上,我可以执行selectframe命令来分别选择IDE中的contentFrame,但当我在IDE中从头开始运行案例时,它将无法运行该命令。@Chunying第二个包含等待的选项如何?你有例外吗?Thank.frame=WebDriverWait(driver,10).until(EC.presence_of_element_位于((By.XPATH,//frame[@name='contentFrame']))文件“/Library/Python/2.7/site packages/selenium-2.44.0-py2.7.egg/selenium/webdriver/support/wait.py”,第71行,在until raise TimeoutException(消息)中TimeoutException:Message:I面临相同的错误帧=WebDriverWait(driver,10)。直到(EC.presence_of_element_located((By.ID,“fm2”))文件“/Library/Python/2.7/site packages/selenium-2.44.0-py2.7.egg/selenium/webdriver/support/wait.py”,第71行,直到引发TimeoutException(Message)TimeoutException:Message:@ChunYinNg那么我不知道发生了什么,如果不自己复制,很难猜到。是否可以共享到网站的链接?您是尝试从顶部窗口切换到contentFrame还是从另一个框架切换到contentFrame?如果是另一个框架切换到默认内容,然后执行切换到内容框架…实际上,当我单击“EO_PE_SRCH_INP_EO_PE_URLTEXT$5”时,会弹出一个新窗口,如果单击“EO_PE_SRCH_INP_EO_PE_URLTEXT$5”,我想在新窗口中选择内容框架打开一个新窗口,您需要先切换到该窗口,然后切换到框架。U r直接切换到帧而不切换到窗口。这肯定会给你错误,因为contentFrame在主窗口中不可用,它在弹出的子窗口中。。。
frame = driver.find_element_by_id("fm2")
driver.switch_to.frame(frame)

driver.switch_to.frame("contentFrame")
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

frame = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "fm2")))
driver.switch_to.frame(frame)

driver.switch_to.frame("contentFrame")
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')

driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.ihp.hku.hk/sfb.html')

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "frameset")))
driver.switch_to.frame(1)

driver.find_element_by_link_text('Badminton: max 4 persons per court').click()