切换到任意新窗口

我正在使用硒编写代码。

在一次特定的点击中,有可能出现两个窗口之一。两个窗口大约需要 20-50 秒才会出现。所以我想切换到出现的任何窗口。

我无法预测哪个窗口将出现 当前进程 - 我正在搜索主窗口几秒钟,如果找不到它,我将尝试搜索带有“确定”按钮的小弹出窗口。如果找到,请单击它。如果再次找不到,请尝试查找主窗口,这需要时间。如果我有办法切换到最新窗口并通过检查其标题是哪个窗口并执行适当的操作。

编辑 - 主窗口不是原始窗口。图中一共有3个窗户。一个我必须点击的窗口。现在,单击主窗口后可以出现,或者可以使用“确定”按钮出现小弹出窗口。


红颜莎娜
浏览 139回答 4
4回答

忽然笑

在执行任何操作之前,您应该保存主窗口的窗口句柄。String&nbsp;mainWindow&nbsp;=&nbsp;driver.getWindowHandle();现在单击并执行以下操作:您最多可以轮询 30 秒,间隔为 5 秒,一旦获得多个窗口句柄,就中断轮询。Set<String>&nbsp;windows&nbsp;=&nbsp;driver.getWindowHandles();让我知道您使用哪种语言。我可以帮你写代码。

慕娘9325324

你可以尝试这样的方法来解决你的问题// Store the current window handleString mainWin = driver.getWindowHandle();// Perform the click operation that opens new window//Wait till driver.getWindowHandles() returns 2 windows// Switch to new window openedfor(String winHandle : driver.getWindowHandles()){&nbsp; &nbsp; driver.switchTo().window(winHandle);}//Get current window to take decision on the next actionsString currentWin= driver.getWindowHandle();// Perform the actions on new window// Close the new windowdriver.close();// Switch back to original first windowdriver.switchTo().window(mainWin);

繁花如伊

您可以使用 Javascript 来切换窗口:下面是代码:((JavascriptExecutor)LoginDriver).executeScript("window.open('about:blank', '-blank')");&nbsp; &nbsp; // To switch to the new tab&nbsp; ArrayList<String> tabs = new ArrayList<String>(LoginDriver.getWindowHandles());&nbsp; LoginDriver.switchTo().window(tabs.get(1));

狐的传说

要处理窗口大小,您可以使用.getWindowHandles(),并尝试使用while loop等待新窗口出现,然后您可以再次迭代所有当前窗口。int sizeBefore = driver.getWindowHandles().size();elemnt.click();//to bring up new windows//until current windows size>before, please keep adding timeoutwhile(driver.getWindowHandles().size()==sizeBefore) {&nbsp; &nbsp; //wait in milliseconds&nbsp; &nbsp; Thread.sleep(500);}//handle current size windowsArrayList<String> hnds = new ArrayList<String> (driver.getWindowHandles());//iteration windowsfor(String hnd: hnds) {&nbsp; &nbsp; driver.switchTo().window(hnd);&nbsp; &nbsp; System.out.println(driver.getTitle());}要切换到特定窗口,请使用:driver.switchTo().window(hnds.get(index));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java