Jak otworzyć nową kartę w istniejącej przeglądarce Firefox za pomocą Selenium WebDriver (aka Selenium 2)?
selenium
firefox
selenium-webdriver
browser-tab
Bhakti Shah
źródło
źródło
Odpowiedzi:
Poniższy kod otworzy łącze w nowej karcie.
Poniższy kod otworzy pustą nową kartę.
źródło
window.open()
, możesz oczekiwać, że będzie działać na wielu platformach / przeglądarkach.Tylko dla każdego, kto szuka odpowiedzi w powiązaniach Ruby / Python / C # (Selenium 2.33.0).
Zwróć uwagę, że faktyczne klucze do wysłania zależą od systemu operacyjnego, na przykład Mac używa
COMMAND + t
zamiastCONTROL + t
.Rubin
Pyton
DO#
źródło
driver.switchTo().window(windowName);
uzyskać dostęp do dowolnej karty lub okna. Oczywiście musiałbyś normalnie śledzić nazwy okien, aby umożliwić przełączanie się między nimi.Dlaczego tego nie zrobisz
źródło
driver.ExecuteScript("window.open('about:blank','_blank');");
Aby otworzyć nową kartę za pomocą JavascriptExecutor,
Będzie kontrolować na karcie zgodnie z indeksem:
Kontrola kierowcy na karcie głównej:
źródło
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));
, Próbowałem tego, ale otrzymuję tablicę poza granicami wyjątku. Jeśli znasz jakieś rozwiązanie, daj mi znać.driver.switchTo().window(tabs.get(2));
to działa dobrze,((JavascriptExecutor) driver).executeScript("window.open('https://www.stackoverflow.com','_blank');"); Thread.sleep(3000); ((JavascriptExecutor) driver).executeScript("window.open('https://www.flipkart.com','_blank');");
ale nie będę miał żadnej kontroli, aby przełączyć się na Windows.Aby otworzyć nowe okno w sterowniku Chrome.
Aby przełączać się między kartami, przeczytaj tutaj
źródło
Możesz użyć następującego kodu używając Java z Selenium WebDriver:
Używając JavaScript:
Po otwarciu nowej karty musi przejść do tej karty:
źródło
Wypróbuj to w przeglądarce FireFox.
źródło
Poniższy kod otworzy link w nowym oknie
źródło
Prawie wszystkie odpowiedzi tutaj są nieaktualne.
WebDriver obsługuje teraz otwieranie kart:
Otworzy się nowa karta. Otwarcie okna stało się właściwie przypadkiem niestandardowym:
Karta lub okno nie zostaną automatycznie zogniskowane. Aby się na to przełączyć:
źródło
Aby otworzyć nową kartę w istniejącej przeglądarce Chrome za pomocą Selenium WebDriver, możesz użyć tego kodu:
źródło
Przez jakiś czas miałem problem z otwarciem nowej karty w chrome. Nawet
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
nie działał dla mnie.Okazało się, że nie wystarczy, że selen skupia się na sterowniku, Windows też musi mieć szybę z przodu.
Moim rozwiązaniem było wywołanie alertu w chrome, który wyprowadziłby okno na wierzch, a następnie wykonał polecenie. przykładowy kod:
źródło
Używam Selenium 2.52.0 w Javie i Firefox 44.0.2. Niestety żadne z powyższych rozwiązań nie zadziałało. Problem polega na tym, że jeśli wywołuję driver.getWindowHandles (), zawsze otrzymuję 1 pojedynczy uchwyt. W jakiś sposób ma to dla mnie sens, ponieważ Firefox to pojedynczy proces, a każda karta nie jest oddzielnym procesem. Ale może się mylę. W każdym razie próbuję napisać własne rozwiązanie:
Użyłem kombinacji Ctrl + t, aby otworzyć nową kartę, Ctrl + w, aby ją zamknąć, a aby wrócić do oryginalnej karty, użyłem Ctrl + 1 (pierwsza karta). Zdaję sobie sprawę, że moje rozwiązanie nie jest idealne ani nawet dobre i chciałbym też przełączyć się ze sterownika switchTo call, ale jak pisałem nie było to możliwe, bo miałem tylko jedną rączkę. Może będzie to pomocne dla kogoś w takiej samej sytuacji.
źródło
źródło
Jak otworzyć nową kartę za pomocą Selenium WebDriver z Javą dla Chrome?
Powyższy kod wyłączy pierwsze rozszerzenia i po użyciu klasy robota otworzy się nowa zakładka.
źródło
Ta linia kodu otworzy nową kartę przeglądarki przy użyciu selenium webdriver
źródło
*JAWA
Polecam użycie
JavascriptExecutor
:Następujący import:
źródło
Ten sam przykład dla nodejs:
źródło
Jak otworzyć nową, ale co ważniejsze, jak robisz rzeczy w tej nowej karcie? Webdriver nie dodaje nowego WindowHandle dla każdej karty i kontroluje tylko pierwszą kartę. Tak więc po wybraniu nowej zakładki (Control + Tab Number) ustaw .DefaultContent () na sterowniku, aby zdefiniować widoczną kartę jako tę, nad którą będziesz pracować.
Visual Basic
źródło
Aby otworzyć nową kartę w istniejącej przeglądarce Firefox przy użyciu Selenium WebDriver
źródło
źródło
źródło
sprawdź ten pełny przykład, aby zrozumieć, jak otwierać wiele kart i przełączać się między nimi, a na koniec zamknąć wszystkie karty
Ten przykład jest podany na tej stronie internetowej
źródło
Z powodu błędu w https://bugs.chromium.org/p/chromedriver/issues/detail?id=1465 mimo że webdriver.switch W rzeczywistości przełącza karty, fokus jest pozostawiony na pierwszej karcie. Możesz to potwierdzić, wykonując plik driver.get za przełącznikiemWindow i zobaczyć, że druga karta faktycznie przechodzi do nowego adresu URL, a nie do oryginalnej karty.
Na razie obejrzyj to, co sugeruje @ yardening2. Użyj js, aby otworzyć alert, a następnie użyj webdriver, aby go zaakceptować.
źródło
Ten kod działa u mnie (selen 3.8.1, chromedriver = 2,34,522940, chrome = 63,0):
źródło
Pytanie : Jak otworzyć nową kartę za pomocą Selenium WebDriver z Javą?
Odpowiedź : Po kliknięciu dowolnego linku otwórz nową kartę.
Jeśli chcemy obsłużyć nowo otwartą kartę, musimy obsłużyć kartę za pomocą polecenia .switchTo (). Window ().
Przełącz się na wybraną kartę, a następnie wykonaj operację i wróć do karty nadrzędnej.
źródło
Selenium nie obsługuje otwierania nowych kart, obsługuje tylko otwieranie nowych okien. W każdym razie nowe okno jest funkcjonalnie równoważne nowej karcie.
Istnieje wiele sposobów na obejście tego problemu, ale na dłuższą metę spowodują one inne problemy.
źródło
Jeśli chcesz otworzyć nową kartę, możesz tego użyć
Jeśli chcesz otworzyć link z nowej karty, możesz użyć tego
z JavascriptExecutor:
z akcjami:
źródło
źródło
Obsługa okna przeglądarki za pomocą Selenium Webdriver:
źródło