Erhalte Fensterhandle (IntPtr) aus der aktuellen Fenster-GUID des Selenium-Webdrivers

8

Ich versuche, einen Screenshot des gesamten Browserbildschirms (z. B. mit beliebigen Symbolleisten, Panels usw.) nicht nur eine ganze Seite zu erfassen, daher habe ich diesen Code:

%Vor%     
kseen 17.07.2012, 15:50
quelle

3 Antworten

3

Sie könnten das Fenster-Handle mit Process.GetProcesses erhalten:

%Vor%

Dies setzt natürlich voraus, dass Sie eine einzelne Browserinstanz mit diesem bestimmten Titel haben.

    
Paolo Moretti 20.07.2012 09:20
quelle
2

Nur und Idee für Hack. Sie können Reflection-Methoden verwenden, um den Prozess der firefox-Instanz abzurufen. Deklarieren Sie zuerst die von FirefoxDriver geerbte FirefoxDriverEx-Klasse, um auf die geschützte Binary-Eigenschaft zuzugreifen, die die Process-Instanz enthält:

%Vor%

Dann erhalten Sie möglicherweise eine Prozessinstanz für den Zugriff auf die MainWindowHandle-Eigenschaft

%Vor%     
necrostaz 26.07.2012 10:10
quelle
0

Out of Box, Selen stellt keine Treiberprozess-ID oder Browser-hwnd zur Verfügung, aber es ist möglich. Unten ist die Logik, um hwnd

zu erhalten
  • Wenn der Treiber initialisiert ist, rufen Sie die URL für den Hub ab und extrahieren Sie die Portnummer
  • Finden Sie unter Port-Nummer die Prozess-ID, die diesen Port zum Abhören verwendet, dh. PID des Treibers
  • Nach der Navigation von allen Instanzen von iexplore findet die übergeordnete PID die pid des Treibers, d. h. Browser pid.
  • Holen Sie sich den Hwnd der Browser-PID Sobald Browser hwnd gefunden wurde, können Sie mit win32 api Selen in den Vordergrund bringen.

es ist nicht möglich, den vollständigen Code hier zu posten, die vollständige funktionierende Lösung (C #), um Browser in Front zu bringen, ist auf meinem Blog

Ссылка

    
Rajnish Noonia 09.09.2016 00:29
quelle

Tags und Links