2012-05-18 3 views
7

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

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

+0

Какой браузер? Firefox, IE, Chrome? –

+0

Почему бы не обратить внимание на экземпляр? Если вы пытаетесь нормально работать на компьютере, на котором выполняются тесты, то да, это не сработает, так как Selenium использует собственную клавиатуру ОС и нажимает инструкции, на которые вы будете вмешиваться. Иногда, ['driver.switchTo() .defaultContent()'] (http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html#defaultContent% 28% 29) (и/или 'switchTo(). ActiveElement()') помогает - в основном на IE. Каков ваш прецедент? –

ответ

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

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

+0

+1. Так просто. Сохраняет, что я пишу очень запутанный сценарий AHK. – nagytech

+0

Я использую Internet explorer 9. Не работает для меня. – tanvi

3

executeScript("window.focus();")не работает для меня в последней Chrome (V47 во время этого поста)

Однако я нашел хак в another question который делает работу в этой версии Chrome.

Общие шаги, так как этот вопрос не определяет язык селеном API:

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

Внедрение в webdriverjs, который я с использованием

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

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

Selenium 3.0 ta kes this:

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

Это не означает, что окно браузера будет получать фактический фокус, то есть не гарантирует, что окно браузера будет активным на уровне ОС; бывают случаи, когда это вызовет только сообщение «внимание» уровня ОС. – cprn

0

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

String window = driver.getWindowHandle(); 
((JavascriptExecutor) driver).executeScript("alert('Test')"); 
driver.switchTo().alert().accept(); 
driver.switchTo().window(window); 
Смежные вопросы