Ответ 1
((JavascriptExecutor) webDriver).executeScript("window.focus();");
должен сделать трюк!
Если окно браузера не находится в фокусе, все идентификаторы webdriver на текущей странице не работают.
Как браузер может быть сфокусирован, используя webdriver?
((JavascriptExecutor) webDriver).executeScript("window.focus();");
должен сделать трюк!
executeScript("window.focus();")
не работал для меня в последней версии Chrome (v47 на момент публикации)
Однако я нашел взлом в другом вопросе, который работает в этой версии Chrome.
Вот общие шаги, поскольку в вопросе не указан язык API Selenium:
Реализация в webdriverjs
, которую я использую
const chrome = setupChromeWebdriver(); // get your webdriver here
chrome.executeScript('alert("Focus window")'))
.then(() => chrome.switchTo().alert().accept());
Это работает для меня. После кода, который открывает браузер, введите этот фрагмент:
String window = driver.getWindowHandle();
((JavascriptExecutor) driver).executeScript("alert('Test')");
driver.switchTo().alert().accept();
driver.switchTo().window(window);
Selenium 3.0 принимает это:
((IJavaScriptExecutor)po.WebDriver).ExecuteScript("window.focus();");
Установка фокуса на "параметры драйвера" должна работать:
InternetExplorerOptions options = new InternetExplorerOptions();
options.setCapability("requireWindowFocus", true);