Узнайте как настроить резидентные и мобильные прокси для автоматизации тестирования в Selenium.
-
Перед началом работы, вы должны знать, что Selenium поддерживает 5 языков программирования: Java, C#, Python, Ruby, Javascript (Node). В зависимости от выбранного вами языка, способ настройки прокси будет отличаться
-
Далее, вам необходимо выбрать WebDriver, который вы планируете использовать. Selenium предлагает веб-драйверы для все популярных браузеров (список всех поддерживаемых веб-драйверов здесь). В этой инструкции мы покажем настройку прокси на примере Google Chrome Driver
-
Ниже указаны примеры кода на разных языках для Google Chrome Driver
- Java
package chromeScripts;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
public class Example {
public static void main(String[] args) {
String ProxyServer = "proxy.froxy.com";
int ProxyPort = 9000;
String sHttpProxy = ProxyServer + ":" + ProxyPort;
Proxy proxy = new Proxy();
proxy.setHttpProxy(sHttpProxy);
ChromeDriverService service = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("PATH TO WEBDRIVER"))
.usingAnyFreePort()
.build();
ChromeOptions options = new ChromeOptions();
options.setCapability("proxy", proxy);
options.merge(options);
WebDriver driver=new ChromeDriver(service, options);
driver.get("http://froxy.com/api/detect-ip/");
WebElement body = driver.findElement(By.tagName("body"));
String bodyText = body.getText();
System.out.println(bodyText);
}
}- C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
class Program
{
static void Main(string[] args)
{
ChromeOptions options = new ChromeOptions();
var proxy = new Proxy
{
Kind = ProxyKind.Manual,
IsAutoDetect = false,
HttpProxy = "http://proxy.froxy.com:9000"
};
options.Proxy = proxy;
IWebDriver driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("http://froxy.com/api/detect-ip/");
var getBody = driver.FindElement(By.TagName("body"));
var getBodyText = getBody.Text;
Console.WriteLine(getBodyText);
Console.WriteLine("Click any key to exit..");
Console.ReadKey();
driver.Quit();
}
}
- Python
HOSTNAME = ''
PORT = ''
### DRIVER
"""
Define the driver as follows:
Firefox:
DRIVER = 'FIREFOX'
Chrome:
DRIVER = 'CHROME'
"""
DRIVER = ''
### DRIVER PATH
"""
Make sure that this exact part is configured with exact location of your webdriver/webdrivers.
The location should link to either geckodriver.exe or chromedriver.exe on Windows.
On MacOS/Linux Systems it should link to chromedriver/geckodriver.
Make sure that DRIVER_PATH is linking to the according Webdriver that you specify below. Example:
DRIVER_PATH = "C:/bin/geckodriver.exe"
"""
DRIVER_PATH = ''
"""
Make sure to not edit settings beyond this point unless you know what you are doing!
"""
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
def get_driver_settings():
DRIVER_SETTINGS = {}
DRIVER_SETTINGS['DRIVER'] = DRIVER
DRIVER_SETTINGS['DRIVER_PATH'] = DRIVER_PATH
return DRIVER_SETTINGS
def froxy():
prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = '{hostname}:{port}'.format(hostname = HOSTNAME, port = PORT)
prox.ssl_proxy = '{hostname}:{port}'.format(hostname = HOSTNAME, port = PORT)
if DRIVER == 'FIREFOX':
capabilities = webdriver.DesiredCapabilities.FIREFOX
elif DRIVER == 'CHROME':
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
return capabilities
- Ruby
require 'rubygems'
require 'selenium-webdriver'
proxy = Selenium::WebDriver::Proxy.new(:http => "proxy.froxy.com:9000")
driver = Selenium::WebDriver.for :chrome, :proxy => proxy
driver.navigate.to "http://froxy.com/api/detect-ip/"
element = driver.find_element(:css, 'body')
puts element.text
driver.quit
- Javascript
require('chromedriver');
var webdriver = require('selenium-webdriver'), By = webdriver.By,
until = webdriver.until, chrome = require("selenium-webdriver/chrome");
let addr = 'proxy.froxy.com:9000'
let opt = new chrome.Options().addArguments(`--proxy-server=http://${addr}`)
var driver = new webdriver.Builder()
.forBrowser('chrome')
.setChromeOptions(opt)
.build();
driver.get('http://froxy.com/api/detect-ip/')
var textPromise = driver.findElement(webdriver.By.css('body')).getText();
textPromise.then((text) => {
console.log(text);
}); - Java
-
Вы можете запустить все эти команды в консоли
-
Для настройки прокси-соединения используйте proxy.froxy.com:9000 с нужной пунктуацией (''). В зависимости от выбранного вами языка, пунктуация может отличаться
- Java:
String ProxyServer = "proxy.froxy.com";
int ProxyPort = 9000; - C#:
HttpProxy = "proxy.froxy.com:9000"
- Python:
HOSTNAME = 'proxy.froxy.com'
PORT = '9000' - Ruby:
proxy = Selenium::WebDriver::Proxy.new(http: "proxy.froxy.com:9000")
- Javascript (Node):
let addr = 'proxy.froxy.com:9000'
Вся необходимая информация о сервере, порте, логине и пароле доступна в личном кабинете Froxy
- Java: