我想登录http://www.timesjobs.com/。登录后出现弹出窗口(这是css灯箱)。无法在此登录框中找到用户名的确切xpath。我迭代了每一帧,并尝试使用firefox生成的xpath作为用户名文本框。我得到例外:
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//html/body//input[@name='j_username']"}.
尝试下面的代码,但没有运气:
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS);
driver.get("http://www.timesjobs.com");
driver.findElement(By.linkText("Sign In")).click();
Thread.sleep(10000L);
List<WebElement> frames = driver.findElements(By.tagName("iframe"));
System.out.println("Total Frames: " + frames.size());
int k =0;
while(k<=frames.size()){
try{driver.switchTo().defaultContent();
driver.switchTo().frame(k);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement we1 = driver.findElement(By.xpath("//html/body//input[@name='j_username']"));
we1.sendKeys("xyzusername@xyzcompany.com");
System.out.println("in try BLOCK:"+k);
}catch(Exception e){
e.printStackTrace();
System.out.println("in catch: "+k);
}finally{
k++;}
}
System.out.println("end of the program");
}
答案 0 :(得分:0)
尝试以下代码。有用。
您的用户名字段包含在GB_Frame中,该字体包含在GB_Frame1中。所以我们必须切换到GB_Frame1然后切换到GB_Frame。用户名字段的格式为name
,因此最好使用xpath
。
public static void main(String[] args) throws InterruptedException {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.timesjobs.com");
driver.findElement(By.linkText("Sign In")).click();
Thread.sleep(10000);
driver.switchTo().frame("GB_frame1");
driver.switchTo().frame("GB_frame");
WebElement we1 = driver.findElement(By.name("j_username"));
we1.sendKeys("xyzusername@xyzcompany.com");
}
我不明白你在识别帧时遇到了什么困难。页面来源非常清楚。如果这有助于你,请告诉我。