При запуске браузера, настройки успешно устанавливаются.
FirefoxOptions options = new FirefoxOptions();
options.SetPreference("network.proxy.http", proxy);
options.SetPreference("network.proxy.http_port", port);
options.SetPreference("network.proxy.ftp", proxy);
options.SetPreference("network.proxy.ftp_port", port);
options.SetPreference("network.proxy.ssl", proxy);
options.SetPreference("network.proxy.ssl_port", port);
options.SetPreference("network.proxy.socks", proxy);
options.SetPreference("network.proxy.socks_port", port);
options.SetPreference("network.proxy.type", 1);
IWebDriver driver = new OpenQA.Selenium.Firefox.FirefoxDriver(options);
Но мне нужно иметь возможность менять их в процессе выполнения, без перезапуска браузера. Шастая по интернету я ничего такого не нашел. Интересуют любые способы решения проблемы, не только средствами Selenium
Мне удалось написать функцию которая может менять параметры со строковым типом в about:config вот она
void SetPreference(string preferenceName, string value, IWebDriver driver)
{
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript($"document.getElementById(\"textbox\").value = '{preferenceName}'");
js.ExecuteScript("FilterPrefs()");
js.ExecuteScript("view.selection.currentIndex = 0");
js.ExecuteScript("ModifySelected();");
IAlert alert = driver.SwitchTo().Alert();
alert.SendKeys(value);
alert.Accept();
}
Так же можно менять параметры с булевыми значениями на противоположные. Но я не могу считать значение дабы знать стоит ли его менять или нет, вот пример функции для булевых типов
void ChangeBoolValue(string preferenceName, IWebDriver driver)
{
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript($"document.getElementById(\"textbox\").value = '{preferenceName}'");
js.ExecuteScript("FilterPrefs()");
js.ExecuteScript("view.selection.currentIndex = 0");
js.ExecuteScript("ModifySelected();");
}
По идее через view можно достучаться, мне удалось достать оттуда Generic object, string или string, object не помню, но там ничего не было. Пользовался этим примером: https://stackoverflow.com/questions/46470473/change-browser-preferences-in-runtime/46478341#46478341
У меня есть предположение, что достаточно просто поменять этот уже созданный options уже после запуска драйвера.
Если не сработает, то ты найдешь Options внутри инстанса driver. Не уверен как он будет называтся, но поищи.
Если же и это не сработает, то предполагаю что поможет создание профиля
FirefoxProfile ffprofile= new FirefoxProfile();
driver = new FirefoxDriver(ffprofile);
и изменение в рантайме профиля нужных настроек:
profile.setPreference("browser.startup.homepage","http://www.google.com");
Что скорее всего подействует, но так же гарантий не даю.
Все вышеперечисленное я не проверял т.к. не имею сейчас доступа к нужному энваерменту. Проверить прийдется тебе.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости