Я нажимаю на кнопку в моем коде «Go», которая открывает новое окно. Когда я проверяю диспетчер задач, я вижу экземпляры IE как 2, но getWindowHandles()
не может получить дескриптор вновь открытого окна и просто возвращает дескриптор родительского окна.
Код, который я использую для этого:
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);
Чтобы перейти в новое окно, я написал функцию:
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>
<span class="xyz-link" id="body_XYZSelector_XYZLookup_LookupName" style="width: 175px; height: 18px; display: inline-block;" onclick="OpenXYZ(GetCurrentLookupId(this),'42e7a262-36ef-e911-80f1-005056aea4ce','10001'); return false;"> SHARANA </span>
<img class="xyz-lookup" id="body_XYZSelector_XYZLookup_LookupImage" onmouseover="onMouseOver(this);" onmouseout="onMouseOut(this);" onclick="OpenLookUp(this);" alt="Browse" src="../Content/images/btn_lookup.png" entitytype="xyz">
<input name="ctl00$body$XYZSelector$XYZLookup$LookupHiddenId" id="body_XYZSelector_XYZLookup_LookupHiddenId" type="hidden" value="56765">
<input name="ctl00$body$XYZSelector$XYZLookup$LookupHiddenName" id="body_XYZSelector_XYZLookup_LookupHiddenName" type="hidden" value="SHARANA">
<input name="ctl00$body$XYZSelector$XYZLookup$LookupHiddenId" id="body_XYZSelector_XYZLookup_LookupHiddenId" type="hidden" value="fd878f2b-90a2-4bf0-8a00-daa007b64b7d">
</td>