栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Selenium 3启动特定的Firefox配置文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Selenium 3启动特定的Firefox配置文件

此异常是由于.Net库中的错误所致。生成配置文件的Zip的代码无法提供适当的Zip。

解决此问题的一种方法是重载

FirefoxOptions
并使用.Net框架(System.IO.Compression.ZipArchive)中的存档器,而不是出现故障
ZipStorer

var options = new FirefoxOptionsEx();options.Profile = @"C:Users...AppDataRoamingMozillaFirefoxProfilesez3krw80.Selenium";options.SetPreference("network.proxy.type", 0);var service = FirefoxDriverService.CreateDefaultService(@"C:downloads", "geckodriver.exe");var driver = new FirefoxDriver(service, options, TimeSpan.FromMinutes(1));class FirefoxOptionsEx : FirefoxOptions {    public new string Profile { get; set; }    public override ICapabilities ToCapabilities() {        var capabilities = (DesiredCapabilities)base.ToCapabilities();        var options = (IDictionary)capabilities.GetCapability("moz:firefoxOptions");        var mstream = new MemoryStream();        using (var archive = new ZipArchive(mstream, ZipArchiveMode.Create, true)) { foreach (string file in Directory.EnumerateFiles(Profile, "*", SearchOption.AllDirectories)) {     string name = file.Substring(Profile.Length + 1).Replace('\', '/');     if (name != "parent.lock") {         using (Stream src = File.OpenRead(file), dest = archive.CreateEntry(name).Open())  src.CopyTo(dest);     } }        }        options["profile"] = Convert.Tobase64String(mstream.GetBuffer(), 0, (int)mstream.Length);        return capabilities;    }}

并通过名称获取配置文件的目录:

var manager = new FirefoxProfileManager();var profiles = (Dictionary<string, string>)manager.GetType()    .GetField("profiles", BindingFlags.Instance | BindingFlags.NonPublic)    .GetValue(manager);string directory;if (profiles.TryGetValue("Selenium", out directory))    options.Profile = directory;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号