2012-05-18 4 views
7

Wenn das Browserfenster nicht im Fokus ist, schlagen alle Webdriver-Identifikationen auf der aktuellen Seite fehl.Stellen Sie sicher, dass der von Webdriver geöffnete Browser immer im Fokus ist

Wie kann der Browser mit webdriver in den Fokus gebracht werden?

+0

Welcher Browser? Firefox, IE, Chrome? –

+0

Warum hätte die Instanz keinen Fokus? Wenn Sie versuchen, normal auf dem Computer zu arbeiten, auf dem die Tests ausgeführt werden, dann wird das nicht gut funktionieren, da Selen OS native Tastatur- und Klickanweisungen verwendet, die Sie stören würden. Manchmal, ['driver.switchTo() .defaultContent()'] (http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html#defaultContent% 28% 29) (und/oder 'switchTo(). ActiveElement()') hilft - meistens auf IE. Was ist dein Anwendungsfall? –

Antwort

6

sollte den Trick tun!

+0

+1. So einfach. Erspart mir das Schreiben eines sehr komplizierten AHK-Skripts. – nagytech

+0

Ich benutze Internet Explorer 9. Funktioniert nicht für mich. – tanvi

3

executeScript("window.focus();")nicht für mich (zum Zeitpunkt dieses Eintrages v47) in der neuesten Chrome arbeiten

Jedoch habe ich einen Hack in another question gefunden, die tut Arbeit in dieser Version von Chrome.

Allgemein Schritte, da die Frage nicht die Selen api Sprache nicht angibt:

  1. anzeigen Nachricht per Skript in Browser
  2. Übernehmen Sie den Alarm

Implementierung in webdriverjs Ausführung, die ich verwende

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

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

Selen 3.0 ta kes dies:

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

Dies bedeutet nicht, dass das Browserfenster den tatsächlichen Fokus erhält, d. H. Es garantiert nicht, dass das Browserfenster auf OS-Ebene aktiv ist; Es gibt Fälle, in denen dies nur die Aufmerksamkeitsnachricht des Betriebssystems auslöst. – cprn

0

Das funktioniert für mich. Nach dem Code, der den Browser öffnet, dieses Snippet ausgeben:

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