2013-03-11 91 views

回答

0

我想点击登录你会被带到一个帧后,即登记表。

你正在尝试的是先切换到窗口(GB_Window)。

尝试删除切换到窗口电话,只需切换到框架,并尝试操作

编辑代码后,使用此

driver.findElement(By.linkText("Sign In")).click(); 
    driver.switchTo().frame(0); 
    driver.findElement(By.id("username")).sendKeys("[email protected]"); 

}

+0

没有运气,它只是停留在光标在电子邮件地址的框架..它不sendkeys..I已尝试许多许多解决方案,迄今.. – Selenio 2013-03-11 14:13:59

+0

org.openqa.selenium.remote.UnreachableBrowserException:Error与远程浏览器进行通信。它可能已经死亡。 构建信息:版本:'2.30.0',修订:'dc1ef9c',时间:'2013-02-19 00:15:57' 系统信息:os.name:'Windows 7',os.arch:' x86',os.version:'6.1',java.version:'1.6.0_17' 驱动程序信息:driver.version:RemoteWebDriver – Selenio 2013-03-11 14:22:52

0

尝试下面的代码。它为我工作。有两个框架,您可以找到用户名元素。第一帧是GB_frame,第二帧没有html源文件中给出的任何名称。所以我用第二个索引(frame(0))。

@Test 

public void fail() throws InterruptedException {  

     driver.findElement(By.linkText("Sign In")).click(); 
     //switch to frames inside the webpage 
     driver.switchTo().frame("GB_frame"); //1st frame 
      driver.switchTo().frame(0); //2nd frame    
       driver.findElement(By.id("username")).sendKeys("[email protected]"); 
} 
+0

非常感谢,不得不将thread.sleeps放入其中,因为它移动得太快 – Selenio 2013-03-12 21:17:54

+0

@Gabriel Alexander Upvote我的答案或接受它作为一个很好的答案,如果它已经帮助你或给你确切的解决方案。 – Hemanth 2013-03-13 03:46:30

0

你可以试试这个,告诉我它是否有效吗?我怀疑你所遇到的只是一个Firefox的怪异,JavaScriptExecutor会绕过它。

public void setEmailAddrOnFieldInSubFrame() { 
    driver.findElement(By.linkText("Sign In")).click(); 
    driver.switchTo().window("GB_window"); 
    driver.switchTo().frame(0); 
    WebElement element = driver.findElement(By.id("username")); 
    JavascriptExecutor executor = (JavascriptExecutor)driver; 
    executor.executeScript("arguments[0].value='[email protected]';", element); 

    //cleanup frame position by switching back to previous window 
    driver.switchTo().defaultContent(); // always do this cleanup just in case 
} 
0

那么,如果应用程序在Firefox上工作,那么只需右键单击。在上下文菜单中,您将首先通过查看选项“此帧”来查明元素是否在框架下。一旦你确认了这一点,然后检查元素。在萤火虫中缓慢滚动顶部,您会发现该元素所在的iframe标签。用这种方式你会知道这个名字。如果您想知道所有iframe及其名称的数量,请使用 driver.findElements(By.tag(“iframe”))。这将返回具有标签的webelements列表,然后您可以逐个迭代并使用getAttribute(“name”)。请注意,仅当iframe实际上具有其他名称的名称时才会返回空名称。