【发布时间】:2014-07-18 19:06:31
【问题描述】:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Iframe {
public static void main(String[] args) throws Exception{
WebDriver driver=new FirefoxDriver();
WebElement wb;
try{
driver.get("http://www.timesjobs.com/");
driver.manage().window().maximize();
System.out.println("Old window "+driver.getTitle());
String old=driver.getWindowHandle();
driver.findElement(By.xpath("//li[1][@class='bdr-left']/a")).click();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
for(String newi:driver.getWindowHandles()){
driver.switchTo().window(newi);}
System.out.println("New window "+driver.getTitle());
wb=driver.findElement(By.xpath(".//*[@id='GB_window']/div[2]/iframe"));
driver.switchTo().frame(wb);
wb=driver.findElement(By.xpath(".//*[@id='j_username']"));
wb.click();
wb.sendKeys("shantanunandan@gmail.com");
driver.switchTo().defaultContent();
driver.switchTo().window(old);
System.out.println("Old window "+driver.getTitle());
}//try
catch(Exception e){
e.printStackTrace();
driver.close();
//driver.quit();
}//catch
finally{
driver.close();
//driver.quit();
}//finally
}//main
}//class
在上面代码的帮助下,我试图以webelement 名称作为登录名发送一些数据。
在这里,我试图在登录 ID 字段中发送一些值,但是当我单击登录按钮时,会打开一个弹出窗口。当我右键单击弹出窗口时,我得到一个选项,上面写着 THIS FRAME 然后我才知道它是一个框架。我试图通过使用driver.switchTo().frame(wb); 切换到它,其中 wb 具有框架的路径。当我运行代码时,我得到了loginid fails 的NOSuchElement exception,这意味着webdriver 无法将控件传递给框架。
我该如何解决这个问题?
【问题讨论】:
-
你能用firebug识别这个框架吗?
-
@Imen 是的,我可以使用 fierbug 识别框架,但不能在同一个窗口中。问题是,一旦我单击登录按钮,就会弹出一个弹出窗口,并且框架位于该弹出窗口中。我可以使用 firebug 识别弹出窗口中的框架
-
您是否尝试像那样切换到您的框架 driver.switchTo().frame((driver.findElement(By.cssSelector("iframe[id='appli']"))));或 By.xpath(.....)。有 ”。”在“//”之前的 xpath 中尝试擦除它并再次执行脚本。 NoSuchElment 表示您的 xpath 标识有问题
标签: java selenium xpath selenium-webdriver frame