访问框架内元素的Selenium问题

时间:2011-05-19 14:51:09

标签: selenium

我在验证由框架集和框架组成的页面中的元素时遇到了问题。

我正在使用代码:

    selenium.selectFrame("relative=up");
    selenium.selectFrame("topFrame");

但它失败并显示错误“Element topFrame not found”。尝试导航到任何帧时,我都会遇到类似的错误。

我也尝试过指定DOM路径,并使用索引,但似乎没有任何效果。

HTML看起来像这样:

<frameset framespacing="0" border="0" frameborder="NO" rows="80,*">
    <frame scrolling="NO" frameborder="NO" src="header.html" noresize="" name="topFrame">
    <frameset framespacing="0" border="0" frameborder="NO" cols="210,*">
        <frame scrolling="NO" frameborder="NO" src="menu.html" name="leftFrame">
        <frame scrolling="YES" bordercolor="#78B0D5" frameborder="YES" src="content.html"     name="mainFrame">
        </frame>
    </frameset>
</frameset>

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

根据我的经验,当设置帧上下文时,硒是“气质的”。我发现定义显式帧标识符而不仅仅依赖于上下文很有用。所以在你的情况下,我会使用:

selenium.selectFrame("relative=top");
selenium.selectFrame("css=frame[class=...]");

答案 1 :(得分:1)

在上面提到的命令中,而不是写name =&#34; topFrame&#34;尝试使用id =&#34; topFrame&#34;。 selenium使用id来标识对象。

答案 2 :(得分:0)

使用相对帧导航时,显然一切都取决于你从哪里开始。为了确保这一点,我们始终使用selenium.selectFrame("relative=top");开始我们的框架导航,这使您处于<FRAMESET>外部,selenium.selectFrame("topFrame");将有意义。