Убедитесь, что браузер открыт webdriver всегда в фокусе

Если окно браузера не находится в фокусе, все идентификаторы webdriver на текущей странице не работают.

Как браузер может быть сфокусирован, используя webdriver?

Ответ 1

((JavascriptExecutor) webDriver).executeScript("window.focus();");

должен сделать трюк!

Ответ 2

executeScript("window.focus();") не работал для меня в последней версии Chrome (v47 на момент публикации)

Однако я нашел взлом в другом вопросе, который работает в этой версии Chrome.

Вот общие шаги, поскольку в вопросе не указан язык API Selenium:

  1. Показать предупреждение, выполнив скрипт в браузере
  2. Принять оповещение

Реализация в webdriverjs, которую я использую

const chrome = setupChromeWebdriver(); // get your webdriver here

chrome.executeScript('alert("Focus window")'))
  .then(() => chrome.switchTo().alert().accept());

Ответ 3

Это работает для меня. После кода, который открывает браузер, введите этот фрагмент:

String window = driver.getWindowHandle();
((JavascriptExecutor) driver).executeScript("alert('Test')");
driver.switchTo().alert().accept();
driver.switchTo().window(window);

Ответ 4

Selenium 3.0 принимает это:

((IJavaScriptExecutor)po.WebDriver).ExecuteScript("window.focus();");

Ответ 5

Установка фокуса на "параметры драйвера" должна работать:

InternetExplorerOptions options = new InternetExplorerOptions();
options.setCapability("requireWindowFocus", true);