【问题标题】:How to walk on Frames/IFrames and Subframes with Selenium如何使用 Selenium 在 Frames/IFrames 和 Subframes 上行走
【发布时间】:2016-07-06 15:38:20
【问题描述】:

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

我有这个设置

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

我希望用 selenium 走这条路,直到我到达 id="4"。

我的测试是:

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 帧(在这两种情况下),它进入了第 1 帧但找不到第 2 帧。

有什么不同的方法吗? iframe 似乎从框架到 selenium 不同,但我如何使用两者?

感谢您的宝贵时间!

编辑:找到更多信息,请查看。仍然需要访问相同的 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);等待这漫长的时间让它出现,然后它像魅力一样行走。

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

【问题讨论】:

  • 可能是这样的:pastebin.com/hhQqAeJ4?
  • 它不起作用,仍然没有找到第二个ID,我认为那是因为它是另一个iFrame。感谢朋友的尝试!
  • 他们可能处于同一水平吗?或者您之前可能有另一个 iframe 标记。
  • 请检查我的编辑,现在是整个代码。如果它在 div 中,我如何获得参考?非常感谢!
  • 它在DIV 中并不重要,应该仍然可以找到它。您确定它在另一个 IFRAME 中可见吗?

标签: java iframe selenium-webdriver frames


【解决方案1】:

经过 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"));

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

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 2011-02-05
    • 2017-10-16
    • 1970-01-01
    • 2011-11-03
    • 2011-06-03
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    相关资源
    最近更新 更多