【问题标题】:Selenium - how to get runtime generated iframe idSelenium - 如何获取运行时生成的 iframe id
【发布时间】:2014-01-31 11:39:36
【问题描述】:

我正在将网页作为黑盒进行测试(硬性要求)

页面有一个按钮,点击它会调用一个函数,该函数会生成一个带有动态 id 的 iframe,即点击同一个按钮将创建相同的框架内容,但每次都有不同的

<input type="button" value="some txt" onclick="return displayIframe(if_42222440278);">

这会创建一个像这样的 iframe

<iframe id="6356469882593" class="someClass" scrolling="no" frameborder="0" src="/Pages/somePage.aspx', '', 'width=740px,height=629&rand=6356469882593" allowtransparency="true">

如何获取 iframe id??

这些是我目前的尝试:

尝试 1:导致 10 个对象的数组全部为空

List<WebElement> iframes = webDriver.findElements(By.id("iframe")); 

尝试2:导致元素不存在的异常

webDriver.switchTo().frame(0)
WebElement editable = webDriver.switchTo().activeElement(); 

还有其他建议吗?

【问题讨论】:

  • Html 将有助于理解您的问题。
  • @Husam 我已经添加了 html

标签: java firefox iframe selenium selenium-webdriver


【解决方案1】:

请在下面尝试。

List<WebElement> elements = driver.findElements(By.tagname("iframe"))
driver.switchTo().frame(elements.get(0));
//do your stuff
driver.switchTo().defaultContent();

【讨论】:

    【解决方案2】:

    试试

    iframeID = driver.findElement(By.cssSelector("iframe[src*='somePage.aspx']")).getAttribute("id");
    

    【讨论】:

      【解决方案3】:

      试试下面的代码:

      List<WebElement> we = driver.findElements(By.xpath("//iframe[@class='someClass']"));
      driver.switchTo().frame(we.get(0)); //Switch to iframe.
      WebElement activeElement = driver.switchTo().activeElement();
      /*Do anything here.
       activeElement.findElement(b).click();*/
      driver.switchTo().defaultContent(); //Switch to original frame.
      

      您可以识别 iframe、切换到它、在其中工作并切换回您的默认内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-09
        • 2018-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        • 1970-01-01
        相关资源
        最近更新 更多