如何在java中访问iframe中的元素?

时间:2013-11-08 08:04:09

标签: selenium automation selenium-webdriver

我希望通过Java获取iframe内部的元素id属性。如何在Java中访问iframe中的元素?

driver.findElement(By.xpath("//div[4]/div/div/div[3]/div[2]/div/div/iframe")).findElement(By.id("output-img")).getAttribute("src");

这是我用来获取iframe内部的image src属性的代码。当我执行此代码时,它会抛出一个异常

Unable to locate element: {"method":"id","selector":"output-img"}
Command duration or timeout: 5.06 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html

有谁知道可能是什么问题?

2 个答案:

答案 0 :(得分:2)

示例:

WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(id)); //iframe ID is String
WebElement iframe = driver.findElement(By.xpath("//div[4]/div/div/div[3]/div[2]/div/div/iframe"));
driver.switchTo().frame(iframe);
String attribute = driver.findElement(By.id("output-img")).getAttribute("src");
driver.switchTo().defaultContent();

<强> EDITED

答案 1 :(得分:0)

WebDriver中的任何其他元素一样,只需使用CSS选择器或XPath。

String id = driver.findElement(By.cssSelector("iframe[id=frame] body span")).getAttribute("id");

但是这个选择器取决于你框架中的实际元素,你没有提供太多关于此的信息。