Odpowiedz

-1

W rzeczywistości Selenium nie ponosi odpowiedzialności za otwarcie strony w nowym oknie lub w tym samym oknie. Jest to całkowicie zależne od ustawień przeglądarki, które zostały użyte do wykonania.

Przez wzgląd wziąć przeglądarkę Firefox

Jeśli chcesz otworzyć wszystkie linki w nowym oknie. Czy te kroki

  1. Open narzędzia
  2. kliknij Opcje
  3. Tabs Kliknij menu
  4. Zaznacz pole Open new windows in a new tab instead.

Teraz kliknij link, który otwiera okno. Zostanie otwarty w nowej karcie w tym samym oknie.

+0

ten nie działa. Nadal dostaję nowe okno zamiast otwierać w tym samym oknie, kiedy uruchamiam WebDriver. Po ręcznym uruchomieniu tego samego testu otwiera się łącze w tym samym oknie, co powinno. – DarthOpto

0

Według Selium docs (https://code.google.com/p/selenium/wiki/FirefoxDriver) poniższa właściwość webdriver.firefox.profile kontroluje używany profil firefox.

W tym miejscu Firefox pobiera przeglądarkę.link.open_newwindow przy starcie. Aby utworzyć nowy profil dla testów, można wykonać szczegółową konfigurację profilu, edytując profil pref.js lub uruchamiając profil i edytując go poprzez about: config.

nadzieję, że to pomoże!

1

Znalazłem obejście problemu!

JavascriptExecutor js = (JavascriptExecutor) driver; 
String script = "document.getElementById('yourFormOrAnchorId').target=''"; 
js.executeScript(script); 

Następnie można wybrać kotwicę lub dowolny z elementów formularza i kliknąć lub przesłać. Strona docelowa otworzy się na tej samej karcie.

To zasadniczo zmienia bieżącą stronę HTML, aby zakotwiczenia i formularze nie zmuszały przeglądarki do otwierania nowych kart lub okien. Testowanie może być nieoptymalne, ale znacznie upraszcza pisanie testów.

1

Spróbuj tego ... FireFox Modyfikuj parametry profilu "browser.link.open_newwindow.restriction" i "browser.link.open_newwindow".

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("browser.link.open_newwindow.restriction", 0); 
profile.setPreference("browser.link.open_newwindow", 1); 

Jeśli używasz Google Chrome, a następnie po prostu zainstalować this rozszerzenie i będzie dbać o pozostałej części zadania. To rozszerzenie jest również przydatne do otwierania okien pop-up w nowych zakładkach, które zwykle otwierają się w nowych oknach. (Najpierw musisz pobrać plik rozszerzenia .crx z podanej lokalizacji.)

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 
0

Należy zmodyfikować parametry profilu Firefox:

profile = webdriver.FirefoxProfile()

profile.set_preference("browser.link.open_newwindow", 3)

profile.set_preference("browser.link.open_newwindow.restriction", 0)

driver = webdriver.Firefox(firefox_profile=profile)

jeśli to mnie thode nie działa, można ustawić za pomocą opcji perference Firefox:

from selenium.webdriver.firefox.options import Options

opts = Options()

opts.set_preference("browser.link.open_newwindow.restriction", 0)

opts.set_preference("browser.link.open_newwindow", 3)

driver = webdriver.Firefox(firefox_options=opts)


(A) browser.link.open_newwindow - dla łączy w zakładkach Firefox:

3: przekazywanie nowe okno do nowej karcie (domyślnie)

2: umożliwiają link, aby otworzyć w nowym oknie

1: wymusić nowe okno na samej karcie

(B) browser.link.open_newwindow.restriction - dla łączy w zakładkach Firefoksa

0: zastosować ustawienie mocy (A) do wszystkich nowych okien (nawet Windows Script)

2: zastosować ustawienie mocy (A) do normalnych oknach, ale nie do okna skryptów z funkcji (domyślne)

1: zastąpić ustawienie w punkcie (a) i zawsze stosować nowe okna

Powiązane problemy