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>
我需要访问框架&#34; SOMMAIRE&#34;。 这个框架是框架集的子框架,框架集又是框架集的子框架。 我成功导航到框架&#34; TRAVAIL&#34;和&#34; ENTETE&#34;直接,但我无法成功导航框架&#34; SOMMAIRE&#34; ...
我试过了:
driver.switch_to_default_content()
driver.switch_to.frame("ENTETE")
driver.switch_to.frame("SOMMAIRE")
但我总是有以下例外:
selenium.common.exceptions.NoSuchFrameException: Message: no such frame
我也读了这些链接,但没有一个能帮我做我想做的事......
非常感谢。
答案 0 :(得分:2)
SOMMAIRE
框架不在ENTETE
框架内(并且,根据HTML片段 - 它实际上不在任何框架内)。这意味着您无需先切换到ENTETE
。只需直接切换到SOMMAIRE
:
driver.switch_to_default_content() # in case you were inside an iframe before
driver.switch_to.frame("SOMMAIRE")
答案 1 :(得分:0)
尝试使用XPATH导航到SOMMAIRE
driver.switchTo().frame(driver.findElement(By.xpath("xpath_of_SOMMARIE")));
答案 2 :(得分:0)
用户neha bedi似乎在正确的轨道上,但需要编辑回复:尝试
driver.switch_to.frame(driver.find_element_by_xpath('xpath_of_SOMMARIE'))
这对我有用。