Wie öffne ich mit Selenium WebDriver (auch bekannt als Selenium 2) einen neuen Tab im vorhandenen Firefox-Browser?
selenium
firefox
selenium-webdriver
browser-tab
Bhakti Shah
quelle
quelle
Antworten:
Der folgende Code öffnet den Link in der neuen Registerkarte.
Der folgende Code öffnet einen leeren neuen Tab.
quelle
window.open()
, können Sie davon ausgehen, dass sie auf vielen Plattformen / Browsern funktioniert.Nur für alle anderen, die nach einer Antwort in Ruby / Python / C # -Bindungen suchen (Selenium 2.33.0).
Beachten Sie, dass die tatsächlich zu sendenden Schlüssel von Ihrem Betriebssystem abhängen, z. B. von Mac
COMMAND + t
anstelle vonCONTROL + t
.Rubin
Python
C #
quelle
driver.switchTo().window(windowName);
auf eine Registerkarte oder ein Fenster zugreifen. Natürlich müssen Sie die Fensternamen wie gewohnt verfolgen, um zwischen ihnen wechseln zu können.ActionChains(driver).key_down(Keys.CONTROL).click(element_to_be_clicked).key_up(Keys.CONTROL).perform()
. Die ActionChains werden aus importiertselenium.webdriver.common.action_chains
.Warum nicht?
quelle
driver.ExecuteScript("window.open('about:blank','_blank');");
So öffnen Sie eine neue Registerkarte mit JavascriptExecutor:
Steuert auf der Registerkarte gemäß Index:
Treibersteuerung auf der Hauptregisterkarte:
quelle
driver.switchTo().window(tabs.get(1)); driver.get("https://www.stackoverflow.com"); Thread.sleep(2000); driver.switchTo().window(tabs.get(2)); driver.get("https://www.flipkart.com"); Thread.sleep(2000); driver.close(); driver.switchTo().window(tabs.get(1)); Thread.sleep(2000); driver.close(); driver.switchTo().window(tabs.get(0));
Ich habe dies versucht, aber das Array aus der gebundenen Ausnahme herausgeholt. Wenn Sie eine Lösung kennen, lassen Sie es mich bitte wissen.driver.switchTo().window(tabs.get(2));
funktioniert dies einwandfrei,((JavascriptExecutor) driver).executeScript("window.open('https://www.stackoverflow.com','_blank');"); Thread.sleep(3000); ((JavascriptExecutor) driver).executeScript("window.open('https://www.flipkart.com','_blank');");
aber ich habe keine Kontrolle, um zu Windows zu wechseln.So öffnen Sie ein neues Fenster in Chrome Driver.
Lesen Sie hier, um zwischen den Registerkarten zu wechseln
quelle
Sie können den folgenden Code mit Java mit Selenium WebDriver verwenden:
Mit JavaScript:
Nach dem Öffnen der neuen Registerkarte muss zu dieser Registerkarte gewechselt werden:
quelle
Versuchen Sie dies für den FireFox-Browser.
quelle
Der folgende Code öffnet den Link in einem neuen Fenster
quelle
Fast alle Antworten hier sind veraltet.
WebDriver unterstützt jetzt das Öffnen von Registerkarten:
Öffnet einen neuen Tab. Das Öffnen eines Fensters ist eigentlich zum Standard geworden:
Die Registerkarte oder das Fenster wird nicht automatisch fokussiert. Um dorthin zu wechseln:
quelle
Verwenden Sie diesen Code, um mit Selenium WebDriver einen neuen Tab im vorhandenen Chrome-Browser zu öffnen:
quelle
Ich hatte eine Weile Probleme, einen neuen Tab in Chrom zu öffnen. Auch
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
hat bei mir nicht funktioniert.Ich fand heraus, dass es nicht ausreicht, dass sich Selen auf den Treiber konzentriert, Windows muss auch das Fenster vorne haben.
Meine Lösung bestand darin, eine Warnung auf Chrome aufzurufen, die das Fenster nach vorne bringt und dann den Befehl ausführt. Beispielcode:
quelle
Ich verwende Selenium 2.52.0 in Java und Firefox 44.0.2. Leider hat keine der oben genannten Lösungen für mich funktioniert. Das Problem ist, wenn ich einen Treiber aufrufe. GetWindowHandles () bekomme ich immer 1 einzelnes Handle. Irgendwie macht das für mich Sinn, da Firefox ein einzelner Prozess ist und jede Registerkarte kein separater Prozess ist. Aber vielleicht irre ich mich. Jedenfalls versuche ich meine eigene Lösung zu schreiben:
Ich habe Strg + t-Kombination verwendet, um eine neue Registerkarte zu öffnen, Strg + w, um sie zu schließen, und um zur ursprünglichen Registerkarte zurückzukehren, habe ich Strg + 1 (die erste Registerkarte) verwendet. Mir ist bewusst, dass meine Lösung nicht perfekt oder sogar gut ist, und ich würde auch gerne mit dem Schalter switchTo des Fahrers wechseln, aber wie ich schrieb, war dies nicht möglich, da ich nur einen Griff hatte. Vielleicht ist dies für jemanden mit der gleichen Situation hilfreich.
quelle
quelle
Wie öffne ich einen neuen Tab mit Selenium WebDriver mit Java für Chrome?
Der obige Code deaktiviert die ersten Erweiterungen und die Verwendung der neuen Registerkarte "Roboterklasse" wird geöffnet.
quelle
Diese Codezeile öffnet eine neue Browser-Registerkarte mit dem Selenium-Webdriver
quelle
*JAVA
Ich empfehle zu verwenden
JavascriptExecutor
:Nach dem Import:
quelle
Gleiches Beispiel für nodejs:
quelle
Wie öffne ich eine neue, aber was noch wichtiger ist, wie machst du Sachen in dieser neuen Registerkarte? Webdriver fügt nicht für jede Registerkarte ein neues WindowHandle hinzu und hat nur die Kontrolle über die erste Registerkarte. Nachdem Sie eine neue Registerkarte (Strg + Tab-Nummer) ausgewählt haben, setzen Sie .DefaultContent () auf den Treiber, um die sichtbare Registerkarte als die zu definieren, an der Sie arbeiten werden.
Visual Basic
quelle
So öffnen Sie mit Selenium WebDriver eine neue Registerkarte im vorhandenen Firefox-Browser
quelle
quelle
quelle
In diesem vollständigen Beispiel erfahren Sie, wie Sie mehrere Registerkarten öffnen, zwischen den Registerkarten wechseln und am Ende alle Registerkarten schließen
Dieses Beispiel wird von dieser Webseite gegeben
quelle
Aufgrund eines Fehlers in https://bugs.chromium.org/p/chromedriver/issues/detail?id=1465 , obwohl webdriver.switchTo tatsächlich die Registerkarten wechselt, bleibt der Fokus auf der ersten Registerkarte. Sie können dies bestätigen, indem Sie nach dem switchWindow ein driver.get ausführen und feststellen, dass die zweite Registerkarte tatsächlich zur neuen URL und nicht zur ursprünglichen Registerkarte wechselt.
Im Moment herumarbeiten ist das, was @ yardening2 vorgeschlagen hat. Verwenden Sie js, um eine Warnung zu öffnen, und verwenden Sie dann den Webdriver, um sie zu akzeptieren.
quelle
Dieser Code funktioniert für mich (Selen 3.8.1, Chromedriver = 2.34.522940, Chrome = 63.0):
quelle
Frage : Wie öffne ich einen neuen Tab mit Selenium WebDriver mit Java?
Antwort : Nachdem Sie auf einen Link geklickt haben, öffnen Sie einen neuen Tab.
Wenn wir neu geöffnete Registerkarten verarbeiten möchten, müssen wir Registerkarten mit dem Befehl .switchTo (). Window () behandeln.
Wechseln Sie zu einer bestimmten Registerkarte, führen Sie dann den Vorgang aus und wechseln Sie zurück zur übergeordneten Registerkarte.
quelle
Selen unterstützt nicht das Öffnen neuer Registerkarten, sondern nur das Öffnen neuer Fenster. In jeder Hinsicht entspricht ein neues Fenster einer neuen Registerkarte.
Es gibt verschiedene Hacks, um das Problem zu umgehen, aber sie werden Ihnen auf lange Sicht andere Probleme bereiten.
quelle
Wenn Sie die neue Registerkarte öffnen möchten, können Sie diese verwenden
Wenn Sie den Link über die neue Registerkarte öffnen möchten, können Sie diese verwenden
mit JavascriptExecutor:
mit Aktionen:
quelle
quelle
Umgang mit dem Browserfenster mit Selenium Webdriver:
quelle