在Python中使用代理运行Selenium Webdriver

我正在尝试在Python中运行Selenium Webdriver脚本来执行一些基本任务。通过Selenium IDE接口运行机器人时,我可以使它运行正常(即:仅使GUI重复我的操作时)。但是,当我将代码导出为Python脚本并尝试从命令行执行时,Firefox浏览器将打开,但无法访问起始URL(错误返回到命令行,程序停止)。无论我尝试访问哪个网站,都在发生这种情况。

我在此处包括了一个非常基本的代码以进行演示。我认为我没有正确包含代码的代理部分,因为返回的错误似乎是由代理生成的。


慕斯王
浏览 323回答 4
4回答

慕容森

这样的事情怎么样PROXY = "149.215.113.110:70"webdriver.DesiredCapabilities.FIREFOX['proxy'] = {    "httpProxy":PROXY,    "ftpProxy":PROXY,    "sslProxy":PROXY,    "noProxy":None,    "proxyType":"MANUAL",    "class":"org.openqa.selenium.Proxy",    "autodetect":False}# you have to use remote, otherwise you'll have to code it yourself in python to driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.FIREFOX)

青春有我

我的解决方案:def my_proxy(PROXY_HOST,PROXY_PORT):        fp = webdriver.FirefoxProfile()        # Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5        print PROXY_PORT        print PROXY_HOST        fp.set_preference("network.proxy.type", 1)        fp.set_preference("network.proxy.http",PROXY_HOST)        fp.set_preference("network.proxy.http_port",int(PROXY_PORT))        fp.set_preference("general.useragent.override","whater_useragent")        fp.update_preferences()        return webdriver.Firefox(firefox_profile=fp)然后调用您的代码:my_proxy(PROXY_HOST,PROXY_PORT)我在此代码中遇到了问题,因为我将字符串作为端口#传递了: PROXY_PORT="31280"这个很重要:int("31280")您必须传递一个整数而不是一个字符串,否则您的Firefox配置文件将不会被设置为正确的端口,并且通过代理的连接将不起作用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python