我正在使用硒编写代码。
在特定的单击上,有机会进入两个窗口之一。而且两个窗口都需要大约20-50秒的时间才能显示。 所以我想切换到出现的任何窗口。
我无法预测哪个窗口将会出现 当前过程-我正在搜索主窗口几秒钟,如果找不到,我正在尝试搜索带有确定按钮的小型弹出窗口。如果找到,请单击它。如果再次找不到,请尝试查找主窗口,这需要花费时间。 如果我有办法切换到最新窗口,并通过检查其标题来确定是哪个窗口并执行适当的操作。
已编辑-主窗口不是原始窗口。图片中共有3个窗口。我必须单击的一个窗口。现在,单击主窗口后可能会出现,或者单击确定按钮会出现小的弹出窗口。
答案 0 :(得分:0)
在执行任何操作之前,应保存主窗口的窗口句柄。
String mainWindow = driver.getWindowHandle();
现在单击并执行以下操作:
您最多可以轮询30秒,间隔时间为5秒,一旦获得多个窗口句柄,就中断轮询。
Set<String> windows = driver.getWindowHandles();
让我知道您使用哪种语言。
我可以为您提供代码。
答案 1 :(得分:0)
您可以尝试使用类似的方法解决问题
// Store the current window handle
String mainWin = driver.getWindowHandle();
// Perform the click operation that opens new window
//Wait till driver.getWindowHandles() returns 2 windows
// Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
//Get current window to take decision on the next actions
String currentWin= driver.getWindowHandle();
// Perform the actions on new window
// Close the new window
driver.close();
// Switch back to original first window
driver.switchTo().window(mainWin);
答案 2 :(得分:0)
要处理窗口大小,可以使用.getWindowHandles()
,然后尝试使用while loop
等待新窗口出现,然后可以再次迭代所有当前窗口。
int sizeBefore = driver.getWindowHandles().size();
elemnt.click();//to bring up new windows
//until current windows size>before, please keep adding timeout
while(driver.getWindowHandles().size()==sizeBefore) {
//wait in milliseconds
Thread.sleep(500);
}
//handle current size windows
ArrayList<String> hnds = new ArrayList<String> (driver.getWindowHandles());
//iteration windows
for(String hnd: hnds) {
driver.switchTo().window(hnd);
System.out.println(driver.getTitle());
}
要切换到特定窗口,请使用:
driver.switchTo().window(hnds.get(index));
答案 3 :(得分:0)
您好,您可以使用Javascript切换窗口:以下是代码:
((JavascriptExecutor)LoginDriver).executeScript("window.open('about:blank', '-blank')");
// To switch to the new tab
ArrayList<String> tabs = new ArrayList<String>(LoginDriver.getWindowHandles());
LoginDriver.switchTo().window(tabs.get(1));