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")

关于python - 如何使用Selenium WebDriver和Python在框架集中导航子帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30437278/

10-16 22:46