Для предотвращения браузерных запросов и отслеживания трафика в тестах на Selenium Python с использованием browsermobproxy вы можете использовать следующие шаги:
1. Установите Python-биндинги для browsermobproxy, если еще не сделали это. Можно установить их с помощью pip:
```python
pip install browsermob-proxy
```
2. Запустите browsermobproxy и настройте прокси-сервер:
```python
from browsermobproxy import Server
server = Server(path_to_browsermobproxy_executable)
server.start()
proxy = server.create_proxy()
```
3. Создайте экземпляр webdriver и настройте его для использования прокси:
```python
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy))
driver = webdriver.Chrome(executable_path=path_to_chromedriver, chrome_options=chrome_options)
```
4. Запустите сеанс и выполните необходимые действия в браузере. browsermobproxy будет захватывать трафик.
5. Если вы хотите блокировать определенные запросы, вы можете добавить фильтр в прокси:
```python
proxy.new_har("test", options={'captureHeaders': True, 'captureContent': True})
proxy.blacklist(".*example.com.*", 404)
```
В этом примере все запросы, в которых встречается "example.com", будут заблокированы и возвращены с кодом ошибки 404.
6. После выполнения теста можно извлечь данные из записанного трафика:
```python
result = proxy.har # Получить записанный HAR
for entry in result['log']['entries']:
print(entry['request']['url']) # Вывести URL каждого запроса
```
Ответ на второй вопрос о том, почему browsermobproxy не распознает зависшие запросы через инструменты разработчика: browsermobproxy захватывает трафик между браузером и сервером, но не может контролировать процесс отправки запроса и получения ответа между браузером и прокси. Если запрос зависает и не достигает прокси, browsermobproxy не сможет его распознать или повлиять на него.