我單擊代碼“Go”中的一個(gè)按鈕,打開一個(gè)新窗口。當(dāng)我檢查任務(wù)管理器時(shí),我可以看到 IE 的實(shí)例為 2,但getWindowHandles()無法獲取新打開的窗口的句柄,僅返回父窗口句柄。我用來執(zhí)行此操作的代碼是:SeleniumUtils.clickOnElement(webDriver, By.xpath("//input[@name='Go' and @value='Go']"), "Click on Go", reporter);SeleniumUtils.waitLoading(SeleniumUtils.WAIT_LONG);List<String> windowsList = new ArrayList<>();String parentWindow = webDriver.getWindowHandle();windowsList.add(parentWindow);String emailWindow = SeleniumUtils.changeDriverToTheNewWindow(webDriver, windowsList, windowsList.size()+1);windowsList.add(emailWindow);為了切換到新窗口,我編寫了一個(gè)函數(shù):public static String changeDriverToTheNewWindow(WebDriver webDriver, List<String> previousWindows, int numberOfWindows) { try { JavascriptExecutor jsExecuter = (JavascriptExecutor) webDriver; Set<String> windows = Collections.emptySet(); try { WebDriverWait wait = new WebDriverWait (webDriver, 5); wait.until(ExpectedConditions.numberOfWindowsToBe(numberOfWindows)); windows = webDriver.getWindowHandles(); }catch(Exception e) { lLogger.error("Error getting the window handles.", e); windows = webDriver.getWindowHandles(); } for (String windowId : windows) { if (!previousWindows.contains(windowId)) { webDriver.switchTo().window(windowId); jsExecuter.executeScript("window.focus"); //changeDriverToWindow(webDriver, windowId); return windowId; } } } catch (Exception e) { lLogger.error("Error changing driver to the new window!", e); } return null;}打開窗口的 HTML 和 JS 代碼是:<td class="xyz-column"><link href="../Content/css/XYZ.css" rel="stylesheet" type="text/css"><script type="text/javascript"> function onMouseOver(control) { control.src = '../Content/images/lookup.png'; } function onMouseOut(control) { control.src = '../Content/images/btn_lookup.png'; }</script>
1 回答

藍(lán)山帝景
TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
具體地說,就我而言,它是?...
InternetExplorerOptions options = new InternetExplorerOptions();
options.merge(cap);
WebDriver driver = new InternetExplorerDriver(options);
解決方案 1
ieCapabilities.setCapability("requireWindowFocus", false);
解決方案 2
添加這兩個(gè)之后,驅(qū)動(dòng)程序就能夠正確獲取窗口的句柄了。
添加回答
舉報(bào)
0/150
提交
取消