首页 > 解决方案 > 使用在 docker 容器中运行的 SeleniumWire 和网页设置标头 SeleniumWire

问题描述

我正在尝试访问使用标头身份验证的网页。由于 Selenium 不直接支持标头,因此我尝试使用 SeleniumWire。但是我遇到了问题。我使用 docker 容器内的浏览器运行我的 selenium 测试。以下是我的尝试:

def interceptor(request):
    request.headers['USERNAME'] = "test"
    request.headers['ID'] = "tester-dev"


sw_options = {
    'auto_config': False,
    'addr': '127.0.0.1',
    'port': 9666,
}

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(
    '--proxy-server=http://host.docker.internal:9666')
chrome_options.add_argument('--ignore-certificate-errors')

driver = webdriver.Remote(
    desired_capabilities=chrome_options.to_capabilities(),
    seleniumwire_options=sw_options
)
driver.request_interceptor = interceptor

driver.get(
    "http://host.docker.internal:9555/index/")
for request in driver.requests:
    if request.response:
        print(
            request.url,
            request.response.status_code
        )
driver.close()

当我尝试访问从与 selenium 测试相同的 docker-compose 启动的网页http://localhost:9555/index/时,我在127.0.0.1:9666上创建了一个代理,我得到502 bad gateway。真的很想知道为什么会这样。我不明白为什么上面的代码不起作用。

标签: pythondockerseleniumproxy

解决方案


推荐阅读