首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Selenium Webdriver中合并DesiredCapabilities和FirefoxOptions

在Selenium Webdriver中合并DesiredCapabilities和FirefoxOptions
EN

Stack Overflow用户
提问于 2019-03-20 13:18:22
回答 3查看 958关注 0票数 0

我在C#中使用Selenium webdriver时使用了一个代理,以及一些如下所示的附加属性

代码语言:javascript
复制
FirefoxOptions options = new FirefoxOptions();
options.AddArguments("disable-infobars");

String proxyServer= "192.168.1.8:808";
Proxy proxy = new Proxy();

proxy.HttpProxy = proxyServer;
proxy.FtpProxy = proxyServer;
proxy.SslProxy = proxyServer;

DesiredCapabilities cap = new DesiredCapabilities();
cap.SetCapability(CapabilityType.Proxy, proxy);

var firefoxDriverService = FirefoxDriverService.CreateDefaultService();
firefoxDriverService.HideCommandPromptWindow = true;

Webdriver实例初始化为

代码语言:javascript
复制
IWebDriver driver = new FirefoxDriver(firefoxDriverService, options, TimeSpan.FromSeconds(600));

我唯一不能做的事情就是将DesiredCapabilities和FirefoxOptions合并,以便使用proxy。所以我想做这样的事情

代码语言:javascript
复制
options.SetCapability(cap);

有没有附近的路?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-20 14:30:40

您可以像这样将Proxy添加到FirefoxOptiions中,而不是添加DesiredCapabilities

代码语言:javascript
复制
FirefoxOptions options = new FirefoxOptions();
options.AddArguments("disable-infobars");

String proxyServer= "192.168.1.8:808";
Proxy proxy = new Proxy();

proxy.HttpProxy = proxyServer;
proxy.FtpProxy = proxyServer;
proxy.SslProxy = proxyServer;

options.Profile.SetProxyPreferences(proxy); //this line is crucial
票数 0
EN

Stack Overflow用户

发布于 2019-03-20 13:30:32

你有没有试过options.AddAdditionalCapability(CapabilityType.Proxy, proxy);

source

代码语言:javascript
复制
public class FirefoxOptions : DriverOptions
...
        /// <summary>
        /// Provides a means to add additional capabilities not yet added as type safe options
        /// for the Firefox driver.
        /// </summary>
        /// <param name="optionName">The name of the capability to add.</param>
        /// <param name="optionValue">The value of the capability to add.</param>
        /// <exception cref="ArgumentException">
        /// thrown when attempting to add a capability for which there is already a type safe option, or
        /// when <paramref name="optionName"/> is <see langword="null"/> or the empty string.
        /// </exception>
        /// <remarks>Calling <see cref="AddAdditionalFirefoxOption(string, object)"/>
        /// where <paramref name="optionName"/> has already been added will overwrite the
        /// existing value with the new value in <paramref name="optionValue"/>.
        /// Calling this method adds capabilities to the Firefox-specific options object passed to
        /// geckodriver.exe (property name 'moz:firefoxOptions').</remarks>
        public void AddAdditionalFirefoxOption(string optionName, object optionValue)
        {
            this.ValidateCapabilityName(optionName);
            this.additionalFirefoxOptions[optionName] = optionValue;
        }
...
票数 0
EN

Stack Overflow用户

发布于 2019-03-21 04:32:15

如果您所做的只是使用标准的Proxy类型来设置已实例化的Firefox实例的代理设置,则.NET绑定的现代版本提供了一个FirefoxOptions.Proxy属性,该属性将按如下方式集成到您的代码中:

代码语言:javascript
复制
FirefoxOptions options = new FirefoxOptions();
options.AddArguments("disable-infobars");

String proxyServer= "192.168.1.8:808";
Proxy proxy = new Proxy();

proxy.HttpProxy = proxyServer;
proxy.FtpProxy = proxyServer;
proxy.SslProxy = proxyServer;

options.Proxy = proxy;

var firefoxDriverService = FirefoxDriverService.CreateDefaultService();
firefoxDriverService.HideCommandPromptWindow = true;

WebDriver driver = new FirefoxDriver(firefoxDriverService, options, TimeSpan.FromSeconds(600));

应该不需要在用户配置文件中设置代理属性,就像在接受的答案中一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55253988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档