Доступ к внутренним страницам Chrome с помощью веб-браузера Python - PullRequest
1 голос
/ 10 июня 2019

У меня есть программа, в которой я использую модуль Python webbrowser, чтобы открыть браузер и автоматически перейти на страницу. Мой код по сути выглядит следующим образом:

import webbrowser

chrome_path = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s"
url = "stackoverflow.com"

webbrowser.get(chrome_path).open(url)

При работе с обычным сайтом он работает точно так, как ожидалось. Однако, когда я вместо этого заменяю URL-адрес на внутреннем сайте Chrome в формате chrome://<page> (например, chrome://dino или chrome://version), Chrome открывается, как и ожидалось, но нигде не перемещается, а вместо этого остается на моей новой вкладке стр.

Почему нормальные URL-адреса (и даже строки, такие как "hello world") работают должным образом, а не только страницы, относящиеся к Chrome? Есть ли способ обойти это?

(Кстати, для Windows 10 и Python 3.6.8).

1 Ответ

1 голос
/ 10 июня 2019

Это действительно не работает, но это не ошибка webbrowser.

Небольшое погружение в код показывает, что в конце дня webbrowser просто звонит subprocess.Popen(args), где args в конечном итоге становится

'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe <url>'.

Если вы просто откроете окно терминала и выполните

"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" chrome://dino

вы получите точно такое же поведение: Chrome открывается и остается на домашней странице, поэтому проблема кроется где-то в коде Chrome (либо ошибка, либо выбор дизайна).

Он работает с selenium, так как я предполагаю, что он использует магию чёрной ОС (то есть межпроцессное взаимодействие), поэтому он не полагается на код Chrome. Это просто имитирует пользователя.

...