0

我想更新 Selenium C# 中的 Chrome 配置文件首选项,通过添加以下行作为 Chrome 选项的一部分来使弹出窗口消失。

string url = "https://google.com";
string envName = "xyz.qa";

ChromeOptions.AddUserProfilePreference("protocol_handler.allowed_origin_protocol_pairs." + url + "." + envName, true);

但是,上面的行导致以错误的格式更新 chrome 配置文件首选项文件,即,当它在首选项名称中遇到 .(dot) 时,它不会被抑制。

预期:“protocol_handler”:{“allowed_origin_protocol_pairs”:{“https://google.com”:{“xyz.qa”:true}}}

实际:"protocol_handler":{"allowed_origin_protocol_pairs":{"https://google" {"com":{"xyz" {"qa":true}}}}}

第二种方法:

string jsonValue = "{ " + url + ":{ " + envName + ":true} }";
var obj = JObject.Parse(jsonValue);
ChromeOptions.AddUserProfilePreference("protocol_handler.allowed_origin_protocol_pairs", obj);

预期:“protocol_handler”:{“allowed_origin_protocol_pairs”:{“https://google.com”:{“xyz.qa”:true}}}

实际:"protocol_handler":{"allowed_origin_protocol_pairs":{"https://google.com" :{"xyz.qa":[] }}}

一切看起来都不错,除了值 true,它被替换为 []。

我尝试了不同的方法来纠正格式,但无法纠正。请建议我如何以预期的格式更新首选项文件。

4

1 回答 1

1

最后,能够弄清楚当 url 或应用名称包含时如何更新 ChromeProfile 首选项。(点)。希望这可以帮助某人通过代码处理 Chrome 安全弹出窗口。

var first = new Dictionary<string, object> { };
var second = new Dictionary<string, object> { };
options.prefs = new Dictionary<string, object> { };

first.Add("<<ApplicationName>>." + "<<Environment>>", false);
second.Add("<<ApplicationURL>>", first);
options.AddUserProfilePreference("protocol_handler.allowed_origin_protocol_pairs", second);
于 2020-10-19T15:47:16.743 回答