我正在将网页测试为黑盒子(硬盘要求)
页面有一个按钮,点击它会调用一个生成带有动态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();
还有其他建议吗?
答案 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");