Skip to main content
 首页 » 编程设计

python之如何使用带有 Python 的 Selenium WebDriver 在框架集中导航子框架

2024年10月25日31softidea

hmtl 页面的布局如下:

<frameset framespacing="0" border="false" frameborder="0" rows="11%,8%,*"> 
    <frame name="ENTETE" src="fr_entete.htm" scrolling="no" noresize="" marginwidth="0" marginheight="0">Some elements...</frame> 
    <frameset framespacing="0" border="false" frameborder="0" cols="35%,7%,*"> 
        <frame name="SOMMAIRE" src="fr_sommaire.htm" scrolling="no" noresize="" marginwidth="0" marginheight="0">Some elements...</frame> 
        <frame name="OUTIL" src="fr_outil.htm" scrolling="no" noresize="" marginwidth="2" marginheight="0">Some elements...</frame> 
        <frame name="LIBRE" src="fr_libre.asp" scrolling="no" noresize="" marginwidth="2" marginheight="0">Some elements...</frame> 
    </frameset> 
    <frame name="TRAVAIL" src="cdc_rechgen.asp" scrolling="yes" noresize="" marginwidth="5" marginheight="0" frameborder="0">Some elements...</frame> 
</frameset> 

我需要访问框架“SOMMAIRE”。 该框架是框架集的子框架,框架集又是框架集的子框架。 我成功地直接导航到框架“TRAVAIL”和“ENTETE”,但我无法成功导航到框架“SOMMAIRE”...

我试过了:

driver.switch_to_default_content() 
driver.switch_to.frame("ENTETE") 
driver.switch_to.frame("SOMMAIRE") 

但我总是有以下异常:

selenium.common.exceptions.NoSuchFrameException: Message: no such frame 

我也阅读了这些链接,但没有一个能帮助我做我想做的事......

Link1 Link2 Link3

非常感谢。

请您参考如下方法:

SOMMAIRE 框架不在 ENTETE 框架内(而且,根据 HTML 片段 - 它实际上不在任何框架内)。这意味着您不需要先切换到 ENTETE。直接切换到SOMMAIRE:

driver.switch_to_default_content()  # in case you were inside an iframe before 
driver.switch_to.frame("SOMMAIRE")