如何使用python配置远程Selenium WebDrive的特殊代理设置?

问题描述 投票:2回答:1

我要在此先感谢大家的耐心帮助我,我为成为新手致歉。如果我发布的任何内容有误或缺少此文章,请告诉我,这样我可以附加它,而不是投反对票。

我将从描述正在使用的基础结构开始。它包含多个代理服务器,这些代理服务器使用负载平衡器将用户身份验证转发到直接绑定到活动目录的适当代理。身份验证使用用于登录请求所来自的计算机的凭据和源IP。服务器将IP和凭据缓存60分钟。我正在为此目的专门使用一个测试帐户,并且仅在单元测试服务器上使用。

我正在使用docker容器在远程服务器上使用Selenium Webdriver进行一些自动化。我正在使用python作为脚本语言。我正在尝试在内部和外部网页/应用程序上运行测试。我可以使用以下脚本在内部网站上进行基本测试:

注意:10.1.54.118是托管带有selenium Web驱动程序的docker容器的服务器

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

browser = webdriver.Remote(command_executor='http://10.1.54.118:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME)
browser.get("http://10.0.0.2")

print (browser.find_element_by_tag_name('body').text)

bodyText = browser.find_element_by_tag_name('body').text

print (bodyText)

if 'Hello' in bodyText:
    print ('Found hello in body')
else:
    print ('Hello not found in body')

browser.quit()

该脚本能够访问内部网页并在其上打印所有文本。

但是,尝试在外部网站上运行测试脚本时遇到问题。

我尝试了以下文章和教程,但似乎对我不起作用。

我尝试过的文章和教程:

我已经尝试创建4个版本的脚本来访问外部网站(例如google.com,并仅打印其中的文字)。每个脚本都返回超时错误。对于发布大量代码,我深表歉意,但也许社区能够看到我在编码方面出了什么问题。

代码1:

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

PROXY = "10.32.51.169:3128" # IP:PORT or HOST:PORT
desired_capabilities = webdriver.DesiredCapabilities.CHROME.copy()

desired_capabilities['proxy'] = {
    "httpProxy":PROXY,
    "ftpProxy":PROXY,
    "sslProxy":PROXY,
    "socksUsername":"myusername",
    "socksPassword":"mypassword",
    "noProxy":None,
    "proxyType":"MANUAL",
    "class":"org.openqa.selenium.Proxy",
    "autodetect":False
    }
browser = webdriver.Remote('http://10.1.54.118:4444/wd/hub', desired_capabilities)
browser.get("https://www.google.com/")

print (browser.find_element_by_tag_name('body').text)

bodyText = browser.find_element_by_tag_name('body').text

print (bodyText)

if 'Hello' in bodyText:
    print ('Found hello in body')
else:
    print ('Hello not found in body')

browser.quit()

我的代码在任何方面都不正确吗?我是否可以将配置参数传递给docker chrome selenium webdriver,还是需要在构建容器之前使用预先配置的代理设置来构建它?我期待您的答复和任何可以帮助我指出正确方向的帮助。

真诚地,

谦虚的学生

python docker selenium-webdriver http-proxy remotewebdriver
1个回答
0
投票

我面临着同样的问题。您知道解决方案了吗?我想使用代理爬网一些数据并在docker中运行我的应用程序,但不确定在哪里更改代理(对于驱动程序或docker设置)?谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.