为了账号安全,请及时绑定邮箱和手机立即绑定

切换到任意新窗口

切换到任意新窗口

红颜莎娜 2023-08-09 14:58:12
我正在使用硒编写代码。在一次特定的点击中,有可能出现两个窗口之一。两个窗口大约需要 20-50 秒才会出现。所以我想切换到出现的任何窗口。我无法预测哪个窗口将出现 当前进程 - 我正在搜索主窗口几秒钟,如果找不到它,我将尝试搜索带有“确定”按钮的小弹出窗口。如果找到,请单击它。如果再次找不到,请尝试查找主窗口,这需要时间。如果我有办法切换到最新窗口并通过检查其标题是哪个窗口并执行适当的操作。编辑 - 主窗口不是原始窗口。图中一共有3个窗户。一个我必须点击的窗口。现在,单击主窗口后可以出现,或者可以使用“确定”按钮出现小弹出窗口。
查看完整描述

4 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

在执行任何操作之前,您应该保存主窗口的窗口句柄。

String mainWindow = driver.getWindowHandle();

现在单击并执行以下操作:

您最多可以轮询 30 秒,间隔为 5 秒,一旦获得多个窗口句柄,就中断轮询。

Set<String> windows = driver.getWindowHandles();

让我知道您使用哪种语言。

我可以帮你写代码。


查看完整回答
反对 回复 2023-08-09
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

你可以尝试这样的方法来解决你的问题


// 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);


查看完整回答
反对 回复 2023-08-09
?
繁花如伊

TA贡献2012条经验 获得超12个赞

您可以使用 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));


查看完整回答
反对 回复 2023-08-09
?
狐的传说

TA贡献1804条经验 获得超3个赞

要处理窗口大小,您可以使用.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));


查看完整回答
反对 回复 2023-08-09
  • 4 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信