如何使用Selenium

时间:2016-07-06 15:38:21

标签: java iframe selenium-webdriver frames

我正在使用硒进行自动化测试,并且在框架和iframe上行走时遇到了一些问题。

我有这个设置

<iframe id="1">
    <iframe id="2">
        <frame id="3">
           <a id="4">

我希望用硒走这条路,直到我达到id =&#34; 4&#34;。

我的测试是:

new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("1"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("2"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("3"));

driver.switchTo().frame("1");
driver.switchTo().frame("2");
driver.switchTo().frame("3");

问题是,它没有传递到第2帧(在两种情况下),它进入第一帧但是找不到第2帧。

有没有办法不同地做到这一点? iframe似乎不同于框架到硒,但我如何使用它们?

谢谢你的时间!

编辑:找到更多信息,请查看。仍然需要访问相同的div,1,2,3和4,但我需要访问的iframe(2)在div内。

<iframe id="1">
    <iframe id="anotherframe"></iframe>
    <iframe id="anotherframe1"></iframe>
    <div id="outside>
        <iframe id="2">
             <frame id="3">
                <a id="4">
             </frame>
       </iframe>
    </div>
    <iframe id="anotherframe2"></iframe>
</iframe>

我很抱歉,它的代码太多了哈哈

谢谢!

修改

经过90次测试后,我得到了它的工作,主要问题不是Selenium命令,而是页面本身,它动态加载,并且它具有随机ID。

我只需要使用一个thread.sleep(30000);等待这个漫长的时间让它出现,之后就像一个魅力一样走了。

非常感谢您的帮助,您的评论给了我关于如何使用它的新想法=)

1 个答案:

答案 0 :(得分:0)

经过90次测试后,我得到了它的工作,主要的问题不是Selenium命令,而是页面本身,它动态加载,并且它有随机id。

我只需要使用一个thread.sleep(30000);等待这个漫长的时间让它出现,之后就像一个魅力一样走了。

最佳选择:

new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("1"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("2"));
new WebDriverWait(driver, 30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("3"));

非常感谢您的帮助,您的评论给了我关于如何使用它的新想法=)