【问题标题】:Selenium : How to know current frame number or value?Selenium:如何知道当前的帧数或值?
【发布时间】:2014-09-30 09:49:05
【问题描述】:

我正在处理一个有一些弹出窗口的页面。我想在所有弹出窗口上测试所有 HTML 元素的可用性。所以要知道当前帧号。是否有任何可用的方法,如Selenium.getFrameNumber() 或其他方法,以便我可以使用

切换到所需的帧
Selenium.switchTo().frame(0);   or Selenium.switchTo().defaultContent();

【问题讨论】:

    标签: java testing selenium selenium-webdriver frame


    【解决方案1】:

    没有可用的默认选项,但您可以通过不同的方式获得它,

    在页面中存储 iframe 列表,

    List<WebElement> myIframes= driver.findElements(By.tagName("iframe"));
    

    您可以通过其 id 迭代以到达所需的帧。

    你可以得到总数。帧数,

    myIframes.size();
    

    【讨论】:

      【解决方案2】:

      在我做的一个项目中,我使用了一个 ArrayList 来跟踪窗口。

      List<String> windowList = new ArrayList<String>();
      windowList.add( driver.getWindowHandle() );
      

      初始窗口总是填充列表中的第一个条目并且永远不会改变。

      随后的窗口被添加到列表的 END 中,如下所示:

      driver.clickButtonToOpenPopup();
      windowList.add( driver.getWindowHandle() );
      

      然后,当弹出窗口(或多个窗口)或选项卡关闭时,我会按照打开窗口的顺序递减列表。

        pos = windowList.size();
        if ( pos > 1 && driver.closeCurrentWindow() && windowList.remove() ) {
              log.info( "Closed window at position #" + pos );
        } else {
           log.info("There was a problem closing the window.");
        }
      

      很多不同的方法可以做到这一点。

      如果我再做一次,我可能会使用ArrayDeque class

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-11
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多