2012-05-18 2 views
7

Se la finestra del browser non è a fuoco, tutte le identificazioni del webdriver sulla pagina corrente non riescono.Assicurarsi che il browser aperto da Webdriver sia sempre a fuoco

Come si può mettere a fuoco il browser utilizzando il webdriver?

+0

Che browser? Firefox, IE, Chrome? –

+0

Perché l'istanza non ha l'attenzione? Se stai cercando di operare normalmente sul computer che esegue i test, allora sì, non funzionerà bene dal momento che Selenium utilizza la tastiera nativa OS e le istruzioni di clic con cui interferiresti. A volte, ['driver.switchTo() .defaultContent()'] (http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html#defaultContent% 28% 29) (e/o 'switchTo(). ActiveElement()') aiuta - principalmente su IE. Qual è il tuo caso d'uso? –

risposta

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

dovrebbe fare il trucco!

+0

+1. Cosi 'semplice. Mi consente di scrivere uno script AHK molto complesso. – nagytech

+0

Sto usando Internet Explorer 9. Non funziona per me. – tanvi

3

executeScript("window.focus();")non ha funzionato per me nel più recente Chrome (V47, al momento di questo post)

Tuttavia ho trovato un hack in another question che fa lavoro in questa versione di Chrome.

passi generici, in quanto la questione non specifica la lingua selenio api:

  1. Visualizza avviso eseguendo uno script nel browser
  2. Accettare l'avviso

Attuazione in webdriverjs, che ho Sto usando

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

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

Selenio 3.0 ta kes this:

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

Ciò non significa che la finestra del browser otterrà il focus effettivo, cioè non garantisce che la finestra del browser sia attiva a livello di SO; ci sono casi in cui questo attiverà solo il messaggio "attenzione" a livello di OS. – cprn

0

Questo funziona per me. Dopo il codice che apre il browser, emettere questo snippet:

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