Java PhantomJSDriver:无法切换到新打开的浏览器窗口
我一直在尝试使用Java PhantomJSDriver:无法切换到新打开的浏览器窗口,java,selenium-webdriver,phantomjs,ghostdriver,Java,Selenium Webdriver,Phantomjs,Ghostdriver,我一直在尝试使用PhantomJSWebDriverframework来自动化使用Headless浏览器的应用程序。主要的问题是,我们可以在firefox或IE窗口中成功切换窗口,在这里,我无法基于句柄在窗口之间切换。请帮帮我 下面是我迄今为止尝试过的代码 System.setProperty("phantomjs.binary.path", file.getAbsolutePath()); driver = new PhantomJSDriver();
PhantomJSWebDriver
framework来自动化使用Headless浏览器的应用程序。主要的问题是,我们可以在firefox或IE窗口中成功切换窗口,在这里,我无法基于句柄在窗口之间切换。请帮帮我
下面是我迄今为止尝试过的代码
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
driver = new PhantomJSDriver();
driver.get(application url);
driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
WebElement txtUsername = driver.findElement(By.id("it_C_C5"));
txtUsername.sendKeys("sreenis");
WebElement txtPassword = driver.findElement(By.id("it_C_C7"));
txtPassword.sendKeys("sreeni");
WebElement btnLogin = driver.findElement(By.id("ic_C_C8"));
btnLogin.click();
Thread.sleep(10000);
String winTitle = "Role profile selection";
boolean bool = switchWindow(winTitle);
if (bool){
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
}
else {
System.out.println("Switch to window '" + winTitle + "' failed!");
driver.quit();
}
public static boolean switchWindow(String windowtitle){
String mainWindowsHandle = driver.getWindowHandle();
Set<String> handles = driver.getWindowHandles();
System.out.println(handles.size());
for(String winHandle : handles){
driver.switchTo().window(winHandle);
System.out.println(driver.getTitle());
if(driver.getTitle().toLowerCase().equals(windowtitle)){
return true;
}
}
driver.switchTo().window(mainWindowsHandle);
return false;
}
System.setProperty(“phantomjs.binary.path”,file.getAbsolutePath());
driver=新的PhantomJSDriver();
get(应用程序url);
driver.manage().timeouts().implicitlyWait(100,TimeUnit.SECONDS);
WebElement txtUsername=driver.findElement(By.id(“it_C_C5”);
txtUsername.sendKeys(“sreenis”);
WebElement txtPassword=driver.findElement(By.id(“it_C_C7”);
txtPassword.sendKeys(“sreeni”);
WebElement btnLogin=driver.findElement(By.id(“ic_C_C8”);
btnLogin.click();
睡眠(10000);
字符串winTitle=“角色配置文件选择”;
布尔布尔布尔=开关窗口(winTitle);
如果(bool){
System.out.println(“页面标题为:“+driver.getTitle());
driver.quit();
}
否则{
System.out.println(“切换到窗口”’+winTitle+“‘失败’”);
driver.quit();
}
公共静态布尔开关窗口(字符串窗口标题){
字符串mainWindowsHandle=driver.getWindowHandle();
Set handles=driver.getWindowHandles();
System.out.println(handles.size());
对于(字符串winHandle:handles){
driver.switchTo()窗口(winHandle);
System.out.println(driver.getTitle());
if(driver.getTitle().toLowerCase().equals(windowtitle)){
返回true;
}
}
driver.switchTo().window(mainWindowsHandle);
返回false;
}
当我试图打印集合中的窗口标题时,它只打印父窗口,而不打印其他窗口。我无法猜测发生了什么,因为什么都看不见,这是无头测试。请告诉我是否有其他方法可以使用多个浏览器窗口测试应用程序。Actions act=new Actions(d);
Actions act = new Actions(d);
act.contextClick(elements).sendKeys("W").perform();
Set<String> win = d.getWindowHandles();
Iterator <String> itrwin = win.iterator();
String parent = itrwin.next();
String child = itrwin.next();
d.switchTo().window(child);
act.contextClick(元素).sendKeys(“W”).perform();
设置win=d.getWindowHandles();
迭代器itrwin=win.Iterator();
字符串parent=itrwin.next();
String child=itrwin.next();
d、 切换到()窗口(子窗口);
首先使用findElement()识别web元素并将其存储在元素中。控制台上出现了什么错误?您可能希望提供堆栈跟踪。没有错误,但无法在窗口句柄集合中找到要切换的窗口。你试过这个吗?如果是,请告诉我我犯了什么错误。我甚至添加了线程。睡眠(10000):(您正在使用哪个浏览器。是IE吗???@AkhilK:它是PhantomJS没有浏览器可见,它是无头浏览器测试。@harsha.cs,您怎么知道,它找不到窗口,它一定抛出了一个错误,对不对?我能得到日志的跟踪吗?Pankaj:不,它不工作。它显示的是同一个旧窗口处理程序:(