2015-11-18 26 views
0
    w.switchTo().defaultContent(); 
     String parwind = w.getWindowHandle(); 
     Set<String> windows = w.getWindowHandles(); 
     System.out.println(windows.size()); 
     for(String handle : windows) 
     { 
      w.switchTo().window(handle); 
      System.out.println(handle); 
     } 
     String mainwind = w.getWindowHandle(); 
     System.out.println(mainwind); 
     System.out.println(w.getTitle()); 
     w.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS); 
     w.switchTo().defaultContent(); 
     w.switchTo().frame("menucontent"); 
     w.findElement(By.xpath("//img[@id='toggleTreeExpand']")).click(); 
     w.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); 
     w.switchTo().frame(w.findElement(By.name("menuFr"))); 
     w.findElement(By.xpath("//a[@title='RegisterAttend']")).click(); 
     w.switchTo().defaultContent(); 
     w.switchTo().frame("content"); 
     w.switchTo().frame("commontoolbarFrame"); 
     w.findElement(By.name("create")).click(); 
     w.switchTo().defaultContent(); 
     w.switchTo().frame("content"); 
     w.switchTo().frame("f_query_add_mod"); 
     w.switchTo().frame("query_sub"); 
     w.findElement(By.name("first_name")).sendKeys("selenium"); 
     w.findElement(By.xpath("//option[@value='M']")).click(); 
     w.findElement(By.xpath("//input[@name='b_age']")).sendKeys("44"); 
     w.switchTo().defaultContent(); 
     w.switchTo().frame("content"); 
     w.switchTo().frame("f_query_add_mod"); 
     w.switchTo().frame("main"); 
     w.findElement(By.xpath("//span[@id='findtl_tabspan']")).click(); 
     w.switchTo().defaultContent(); 
     Thread.sleep(5000); 
     Set<String> windows1 = w.getWindowHandles(); 
     System.out.println(windows1.size()); 
     for(String handles1 : windows1) 
     { 
      w.switchTo().window(handles1); 
     } 
     Thread.sleep(5000); 
     //w.switchTo().defaultContent(); 
     w.switchTo().frame("MainFrame1"); 
     w.findElement(By.name("blnggrpbut")).click(); 
     w.switchTo().defaultContent(); 
     Thread.sleep(5000); 
     Set<String> windows2 = w.getWindowHandles(); 
     for(String handles2 : windows2) 
     { 
      w.switchTo().window(handles2); 
     } 
     Thread.sleep(5000); 
     System.out.println(windows2.size()); 
     w.switchTo().defaultContent(); 
     w.switchTo().frame("code_desc"); 
     w.findElement(By.xpath("//a[@name='resulted_row']")).click(); 
     w.switchTo().defaultContent(); 
     Set<String> windows3 = w.getWindowHandles(); 
     for(String handles3 : windows3) 
     { 
      w.switchTo().window(handles3); 
      System.out.println(w.getTitle()); 
     } 
     w.switchTo().frame("MainFrame1"); 
     w.findElement(By.name("close_button")).click(); 
     w.switchTo().defaultContent(); 
     w.switchTo().window(mainwind); 
     w.switchTo().frame("content"); 
     w.switchTo().frame("commontoolbarFrame"); 
     w.findElement(By.name("apply")).click(); 
     w.switchTo().defaultContent(); 
     Thread.sleep(5000); 
     Set<String> cancel = w.getWindowHandles(); 
     for(String can : cancel) 
     { 
      w.switchTo().window(can); 
     } 
     w.switchTo().defaultContent(); 

错误:异常在线程“主” org.openqa.selenium.NoSuchElementException:无法找到的xpath == //帧[@name元件='MainFrame1']硒未能识别随机框架元件[2 5次]

如果我运行此代码5次而不更改任何代码,则其执行2次成功,其他3次失败。

月1日试 - 通 第二次尝试 - 失败 第三尝试 - 失败 4RD尝试 - 通过 第五尝试 - 失败

+0

@ Mk08你可以给这个解决方案吗? –

回答

0

有时硒迷糊。我会推荐使用

driver.SwitchTo()。Window(driver.WindowHandles.Last());

上面将在新打开的窗口之间进行切换。您也可以使用.First()来回交换。

+0

嗨,谢谢你的建议,如果我5次执行代码只有3次它的成功,另外两次它抛出一个错误,如“线程中的异常”主要“org.openqa.selenium.NoSuchElementException:无法找到元素(警告:服务器没有提供任何堆栈跟踪信息) 命令持续时间或超时:3.45秒“ –

+0

有没有方法叫做driver.windowhandles.last –

+0

你好像使用“w”而不是驱动程序。尝试w.windowhandles – agleno