2016-06-12 641 views
7

我使用Python和Selenium库编写测试套件。使用chromedriver,我设置代理使用:使用Python设置使用Selenium的chromedriver proxy auth使用Python

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument('--proxy-server=%s' % hostname + ":" + port) 
global driver 
driver = webdriver.Chrome(chrome_options=chrome_options) 

这适用于代理没有身份验证。但是,如果代理要求您使用用户名和密码登录,它将不起作用。使用add_argument或其他方法将代理身份验证信息传递给chromedriver的正确方法是什么?

这是不一样的:How to set Proxy setting for Chrome in Selenium Java

眼见为:

  1. 我TS不同的语言
  2. 它的火狐,而不是浏览器。
  3. --proxy-server = http://user:[email protected]:8080不起作用。
+0

http://stackoverflow.com/questions/30451190/how-to-use-authenticated-proxy-in-selenium-chromedriver –

+0

@KirilS。根据该主题中的内容,我需要在Chrome中使用某种扩展来实现此目的? – Jorge

+0

它说的主要事情是,与Firefox不同,Chrome使用OS代理(不是它自己的),所以你的选择是1 - 在测试之前用适当的代理设置设置操作系统(对于Windows你可以设置一个特殊用户硒测试); 2 - 从测试中设置OS代理设置(可能太复杂); 3 - 使用一个特殊的附件,可以让您即时更改代理设置。 –

回答

1

使用DesiredCapabilities。我已经成功地使用代理认证有以下:

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

proxy = {'address': '123.123.123.123:2345', 
     'usernmae': 'johnsmith123', 
     'password': 'iliketurtles'} 


capabilities = dict(DesiredCapabilities.CHROME) 
capabilities['proxy'] = {'proxyType': 'MANUAL', 
         'httpProxy': proxy['address'], 
         'ftpProxy': proxy['address'], 
         'sslProxy': proxy['address'], 
         'noProxy': '', 
         'class': "org.openqa.selenium.Proxy", 
         'autodetect': False} 

capabilities['proxy']['socksUsername'] = proxy['username'] 
capabilities['proxy']['socksPassword'] = proxy['password'] 

driver = webdriver.Chrome(executable_path=[path to your chromedriver], desired_capabilities=capabilities) 

编辑:不幸的是,似乎自从这个帖子的更新,无论是硒或Chrome的一个这种方法不再有效。截至目前,我不知道另一种解决方案,但如果我发现任何问题,我会试验并更新。

+0

它不适合我,我不得不使用动态生成的扩展。我会在一会儿再试一次。我正在使用Selenium .NET,可能是这个原因 – Toolkit

+1

有一个输入错误的第5行'用户名'被写为'usernmae' – Stack

+1

这种方法不适用于需要验证的chromedriver和代理。 – Stack

相关问题