C# Selenium WebDriver FireFox профиль - использование прокси с аутентификацией
когда вы устанавливаете параметр прокси-сервера в коде ниже, если ваш прокси-сервер требует аутентификации, то FireFox принесет диалог аутентификации, и в основном вы не можете заполнить его автоматически. Так есть в любом случае, чтобы установить имя пользователя и пароль ?
FirefoxProfile profile = new FirefoxProfile();
String PROXY = "192.168.1.100:8080";
OpenQA.Selenium.Proxy proxy = new OpenQA.Selenium.Proxy();
proxy.HttpProxy=PROXY;
proxy.FtpProxy=PROXY;
proxy.SslProxy=PROXY;
profile.SetProxyPreferences(proxy);
FirefoxDriver driver = new FirefoxDriver(profile);
Если вы попытаетесь отформатировать строку прокси-сервера на что-то вроде этого http://username:pass@192.168.1.1:8080
Вы получаете ошибку, что строка недопустима. Поэтому я удивляюсь, что должен быть способ достичь этого.
любой помощь будет оценена по достоинству.
3 ответов
что вы можете сделать, это создать профиль и сохранить данные авторизации в ней. Если ваш профиль называется "webdriver", вы можете выбрать его из своего кода в инициализации:
ProfilesIni allProfiles = new ProfilesIni();
FirefoxProfile profile = allProfiles.getProfile("WebDriver");
profile.setPreferences("foo.bar",23);
WebDriver driver = new FirefoxDriver(profile);
String PROXY = "http://login:pass@proxy:port";
ChromeOptions options = new ChromeOptions();
options.AddArguments("user-data-dir=path/in/your/system");
Proxy proxy = new Proxy();
proxy.HttpProxy = PROXY;
proxy.SslProxy = PROXY;
proxy.FtpProxy = PROXY;
options.Proxy = proxy;
// Initialize the Chrome Driver
using (var driver = new ChromeDriver(options))
сделал это с MS UI Automation без AutoIt:
public void AuthInProxyWindow (string login, string pass)
{
var proxyWindow = AutomationElement.RootElement
.FindFirst(TreeScope.Subtree,
new PropertyCondition(AutomationElement.ClassNameProperty, "MozillaDialogClass"));
var edits = proxyWindow.FindAll(TreeScope.Subtree,
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit));
var unamePoint = edits[1].GetClickablePoint();
Mouse.MoveTo(new Point((int) unamePoint.X, (int) unamePoint.Y));
Mouse.Click(MouseButton.Left);
SendKeys.SendWait(login);
var pwdPoint = edits[2].GetClickablePoint();
Mouse.MoveTo(new Point((int) pwdPoint.X, (int) pwdPoint.Y));
Mouse.Click(MouseButton.Left);
SendKeys.SendWait(pass);
Keyboard.Press(Key.Return);
Logger.Debug("Authefication in Firefox completed succesfully");
}
мышь движется по Microsoft.Внесением ошибок на базе testapi