Selenium - 如何获取运行时生成的iframe id

时间:2014-01-31 11:39:36

标签: java firefox iframe selenium selenium-webdriver

我正在将网页测试为黑盒子(硬盘要求)

页面有一个按钮,点击它会调用一个生成带有动态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(); 

还有其他建议吗?

3 个答案:

答案 0 :(得分:1)

请在下面试试。

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

答案 1 :(得分:0)

请尝试以下代码:

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,切换到iframe,使用iframe并切换回默认内容。

答案 2 :(得分:0)

尝试

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