2016-06-12 14 views
7

Tôi đang mã hóa một bộ thử nghiệm bằng cách sử dụng Python và thư viện Selenium. Sử dụng chromedriver, tôi đang thiết lập proxy bằng cách sử dụng:Thiết lập auth proxy của chromedriver với Selenium bằng cách sử dụng Python

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

Điều này hoạt động tốt khi proxy không có xác thực. Tuy nhiên, nếu proxy yêu cầu bạn đăng nhập bằng tên người dùng và mật khẩu, nó sẽ không hoạt động. Cách chính xác và thích hợp để truyền thông tin xác thực proxy cho chromedriver bằng cách sử dụng add_argument hoặc các phương thức khác là gì?

Nó không phải là giống như: How to set Proxy setting for Chrome in Selenium Java

Thấy như:

  1. Tôi ts một ngôn ngữ khác nhau
  2. firefox của nó, chứ không phải chrome.
  3. --proxy-server = http://user:[email protected]:8080 không hoạt động.
+0

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

+0

@KirilS. Dựa trên những gì đã được nói trong chủ đề đó, tôi sẽ cần một số phần mở rộng trong chrome để thực hiện điều này? – Jorge

+0

điều chính là không giống như Firefox, Chrome sử dụng proxy hệ điều hành (không phải của chính nó), vì vậy các tùy chọn của bạn là 1 - cài đặt hệ điều hành với cài đặt proxy thích hợp trước khi kiểm tra (giải pháp tốt cho Windows, nơi bạn có thể thiết lập một người dùng đặc biệt cho thử nghiệm selen); 2 - thiết lập cài đặt proxy OS từ thử nghiệm (có thể quá phức tạp); 3 - sử dụng một phần bổ sung đặc biệt cho phép bạn thay đổi cài đặt proxy khi đang di chuyển. –

Trả lời

1

Sử dụng DesiredCapabilities. Tôi đã được sử dụng thành công xác thực proxy như sau:

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) 

EDIT: nó không may dường như phương pháp này không còn hoạt động kể từ khi một trong những cập nhật cho một trong hai Selenium hoặc Chrome kể từ khi bài đăng này. như bây giờ, tôi không biết một giải pháp khác, nhưng tôi sẽ thử nghiệm và cập nhật này nếu tôi tìm thấy bất cứ điều gì.

+0

nó không hoạt động cho tôi, tôi phải sử dụng phần mở rộng được tạo động. Tôi sẽ thử lại sau một thời gian. Tôi đang sử dụng Selenium .NET, có thể đó là lý do – Toolkit

+1

có một dòng chữ thứ 5 'tên người dùng' được viết là 'usernmae' – Stack

+1

Phương thức này không hoạt động với chromedriver và proxy yêu cầu xác thực. – Stack

Các vấn đề liên quan