Как заставить 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.
Теперь щелкните ссылку, которая откроет окно. Он откроется на новой вкладке того же окна.