Как заставить Firefox открывать все ссылки, открытые через WebDriver в том же окне?

Я хочу открыть все ссылки в том же окне, а не в новом окне. Я попробовал

profile.setPreference("browser.link.open_newwindow", 1)

но результат:

WARNING: traffic.loop 0 error: Preference browser.link.open_external may not be overridden: frozen value=2, requested value=1

Есть ли другой способ открыть ссылки в одном окне?

Ответ 1

Я нашел обходное решение!

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

После этого вы можете выбрать свой якорь или любой элемент формы и нажать или отправить его. Целевая страница откроется на той же вкладке.

Это в основном изменяет текущую HTML-страницу, так что привязки и формы не заставляют браузер открывать новые вкладки или окна. Для тестирования это может быть неоптимальным, но это упрощает написание тестов.

Ответ 2

Попробуйте это...  Измените параметры профиля FireFox "browser.link.open_newwindow.restriction" и "browser.link.open_newwindow".

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

Если вы используете Google Chrome, просто установите это расширение, и оно позаботится о остальной части задачи. Это расширение также удобно открывать всплывающие окна в новых вкладках, которые обычно открываются в новых окнах. (Сначала вам нужно загрузить файл расширения .crx из заданного местоположения.)

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);

Ответ 3

Вы должны изменить параметры профиля 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)

Если этот метод не работает, вы можете установить его с помощью firefox Options:

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 - для ссылок на вкладках Firefox:

3: переадресовать новое окно на новую вкладку (по умолчанию)

2: разрешить ссылку для открытия нового окна

1: запустите новое окно на ту же вкладку

(B) browser.link.open_newwindow.restriction - для ссылок на вкладках Firefox

0: примените параметр под (A) ко всем новым окнам (даже script окна)

2: примените параметр под (A) к обычным окнам, но НЕ к окнам script с функциями (по умолчанию)

1: переопределить параметр под (A) и всегда использовать новые окна

Ответ 4

В соответствии с документами Selium (https://code.google.com/p/selenium/wiki/FirefoxDriver) следующее свойство webdriver.firefox.profile управляет профилем firefox.

В этом случае Firefox запускает browser.link.open_newwindow при запуске. Чтобы создать новый профиль для своих тестов, вы можете следовать инструкциям здесь https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles подробную конфигурацию профиля можно сделать либо путем редактирования профиля pref.js или запуск профиля и редактирование его через about: config.

надеюсь, что это поможет!

Ответ 5

В файле конфигурации селен:

C:\python27\Lib\сайт-пакеты\селен\WebDriver\светлячок\webdriver_prefs.json

измените следующую строку с:

"browser.link.open_newwindow": 2,

чтобы:

"browser.link.open_newwindow": 3,

Я проверяю это, и это сработало

Ответ 6

Собственно, Selenium не несет ответственности за открытие страницы в новом окне или в одном окне. Он полностью зависит от настроек браузера, которые вы использовали для выполнения.

Ради браузера Firefox

Если вы хотите открыть все ссылки в новом окне. Сделайте эти шаги

  • Откройте Инструменты
  • Нажмите "Параметры"
  • Нажмите вкладку меню
  • Установите флажок Open new windows in a new tab instead.

Теперь щелкните ссылку, которая откроет окно. Он откроется на новой вкладке того же окна.