При запуске браузера, настройки успешно устанавливаются.
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");
Что скорее всего подействует, но так же гарантий не даю.
Все вышеперечисленное я не проверял т.к. не имею сейчас доступа к нужному энваерменту. Проверить прийдется тебе.
Как сделать, так, чтобы при переключении на альбомную ориаентацию в игре, отключалась одна Panel, и запустилась другая? Можно ли со скрипта как...
Я повесил на кнопку <button type="submit" class="btn btn-primary btn-group-justified" id="save" onclick="confirm('Вы уверены что хотите сохранить?')">Сохранить</button>
Только начал изучение шаблона MVC и сразу столкнулся с проблемой его понятияПеречитал достаточно статей, но так и не нашел единого подхода