Я хотел бы определить, когда некоторые javascript хотят открыть новую вкладку, чтобы я мог заставить ее открыть ее в текущей вкладке или, по крайней мере, получить URL-адрес для загрузки ее в моей текущей вкладке.
Я НЕ говорю об удалении атрибута target="_blank"
, поскольку у меня нет проблем с обработкой этого случая.
контекст: причина, по которой я хочу это сделать, заключается в том, что в некоторых случаях, когда Я запускаю селен в безголовом режиме на своем сервере Ubuntu, переключая вкладку с помощью driver.switch_to, запускается неограниченное время, в конечном итоге ничего не получая (что, по-видимому, хорошо известная ошибка).
по этой причине было бы фантастически c, если бы я мог сделать одну из следующих двух вещей:
- перехватить URL-адрес вкладки, из которой открывается мое главное окно javascript
или альтернативно:
- получить URL-адрес вкладки, с которой я не работаю в Selenium, но без вызова метода switch_to.
Кто-нибудь когда-нибудь находил решение этой проблемы либо при разработке расширения для браузера, либо при использовании инфраструктуры автоматизации?
EDIT , так как некоторые комментарии приводят к настройке моего веб-драйвера Selenium, вот он:
chrome_options = OptionsChrome()
chrome_options.add_experimental_option("prefs", {
"download.default_directory": download_directory,
})
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(
executable_path=path_to_driver,
chrome_options=chrome_options
)
params = {'behavior': 'allow', 'downloadPath': download_directory}
driver.execute_cdp_cmd('Page.setDownloadBehavior', params)
Я использую ChromeDriver 79.0.3945.16, Google Chrome 79.0.3945.130, Selenium 3.141.0 на Ubuntu 18.04. Возможно, стоит отметить, что он прекрасно работает для загрузки pdf при нажатии на ссылку со ссылкой на pdf (но не в том случае, если .pdf вызывается некоторыми javascript).