Selenium öffnet keine neue URL in einem neuen Tab (Python & Chrome)

7

Ich möchte einige URLs in verschiedenen Tabs mit Selenium WebDriver & amp; Python.

Ich bin nicht sicher, was falsch läuft:

%Vor%

Ich habe Tutorials angeschaut und es scheint mir, als ob dieser Code tun sollte, was ich will. Was wirklich passiert, ist, dass der Browser öffnet, url1 öffnet sich wie es sollte, ein neues Tab öffnet sich wie es sollte aber url2 lädt dann in den ursprünglichen Tab statt des neuen (obwohl der neue Tab erscheint der Aktive).

(Ich benutze Chrome, weil ich bei der Verwendung von Firefox keine URLs laden kann. Firefox öffnet sich, aber die URL wird nicht angefordert. Ich habe versucht, eine Lösung zu finden, aber ohne Erfolg.)

Kann ich irgendetwas in meinem Code ändern, um die neue URL in der neuen Registerkarte zu öffnen?

Danke für Ihre Hilfe!

    
SamH123 07.05.2016, 12:33
quelle

3 Antworten

8

Es gibt einen Fehler in ChromeDriver, der verhindert, dass ctrl / command + T funktioniert:

Was Sie als Workaround tun können, ist das Öffnen eines Links in einem neuen Tab und dann das Wechseln zu einem neuen Fenster mithilfe von switch_to.window() . Arbeitsprobe:

%Vor%

Jetzt wird die letzte driver.get() in einer neu geöffneten Registerkarte ausgeführt.

    
alecxe 07.05.2016, 12:45
quelle
9

Hier ist ein einfacher Weg, plattformunabhängig:

Code:

%Vor%

Zurück zum ursprünglichen Tab:

Code:

%Vor%

Überprüfen Sie den aktuellen Titel, um sicher zu gehen, dass Sie sich auf der richtigen Seite befinden:

Code:

%Vor%

Für alles andere, viel Spaß!

    
Mihai 06.09.2016 16:36
quelle
5

Eine andere Möglichkeit, ein neues Fenster zu öffnen, besteht darin, JavaScript und den Fensterhandler zu verwenden, um zwischen ihnen zu wechseln.

%Vor%

Wenn Sie Ihren Browser während der Ausführung betrachten, sieht es so aus, als ob das neue Fenster den Fokus hat, aber für den Webtreiber nicht. Lass dich nicht vom Visuellen täuschen. Denken Sie auch daran, einen neuen Fensterhandler auszuwählen, wenn Sie einen Tab schließen, da er driver.current_window_handle auf

setzt %Vor%

in .close() und es wird diesen Fehler auslösen, wenn Sie versuchen, in diesem Stadium Sachen mit dem Treiber zu tun.

    
Gemtastic 13.02.2017 13:35
quelle

Tags und Links