【问题标题】:Specflow / Autofac - How to set up Firefox Driver with profileSpecflow / Autofac - 如何使用配置文件设置 Firefox 驱动程序
【发布时间】:2015-06-30 17:52:40
【问题描述】:

我想问你是否可以使用配置文件设置 Firefox 驱动程序 - 使用 Specflow / Autofac。这是 App.config 文件中我的驱动程序的声明:

<autofac>
  <components>
    <component name="IE" type="OpenQA.Selenium.IE.InternetExplorerDriver, WebDriver" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
    </component>
    <component name="Chrome" type="OpenQA.Selenium.Chrome.ChromeDriver, WebDriver" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
    </component>
    <component name="Firefox" type="OpenQA.Selenium.Firefox.FirefoxDriver, WebDriver" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
    </component>

    <!-- Example of using an injected RemoteDriver:
    <component
          name="IE"
          type="Baseclass.Contrib.SpecFlow.Selenium.NUnit.RemoteWebDriver, Baseclass.Contrib.SpecFlow.Selenium.NUnit.SpecFlowPlugin"
          service="OpenQA.Selenium.IWebDriver, WebDriver"
          instance-scope="per-dependency">
        <parameters>
          <parameter name="url" value="http://127.0.0.1:4444/wd/hub" />
          <parameter name="browser" value="InternetExplorer">
        </parameter>
      </parameters>
  </component>-->

 </components>
</autofac>

在代码的注释部分,有一个为驱动程序设置一些参数的示例,但我找不到设置配置文件的方法。你知道怎么做吗?或者也许还有另一种方法可以直接从 Specflow 设置配置文件?

【问题讨论】:

  • 我不相信这个问题与specflow有任何关系。您可能正在使用specflow,但驱动程序实例的配置实际上与selenium有关,使用specflow或任何其他测试解决方案时答案将是相同的。一旦您知道如何正确配置 selenium(通过代码或通过配置),如果您对如何使用 Specflow 正确调用该代码有疑问,那么您应该提出另一个问题。
  • 我的主要目标是始终使用特定配置文件运行 Firefox 驱动程序。我尝试了很多选择,但没有一个对我有用。你能解释一下如何使用 Specflow 来做到这一点吗?
  • 我不知道如何使用 selenium 运行具有特定配置文件的 firefox,但是无论你怎么做,它在 specflow 中都是一样的。

标签: c# selenium selenium-webdriver bdd specflow


【解决方案1】:

在网上快速搜索后,我找到了this page,它提供了一些关于从个人资料开始的信息:

ProfilesIni profile = new ProfilesIni();     
FirefoxProfile myprofile = profile.getProfile("profileToolsQA");     
WebDriver driver = new FirefoxDriver(myprofile)

因此,无论您现在在 Specflow 中创建 webdriver 实例的何处,都可以使用它来使用配置文件创建它。我假设配置文件必须首先存在。

如果配置文件不存在,那么也许您可以使用this answer 中的信息来帮助您。

【讨论】:

  • 问题是我不知道把它放在哪里,每个火狐驱动程序实例都有配置文件。在 specflow 功能下有一些代码,如下所示: public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) { testRunner.OnScenarioStart(scenarioInfo); if(this.driver != null) ScenarioContext.Current.Add("Driver", this.driver); if(this.container != null) ScenarioContext.Current.Add("Container", this.container);但是编辑每个 .cs 的功能文件是没有意义的。
  • 我还尝试将(设置配置文件的代码)放入 BeforeScenario 挂钩并使用 ["Driver"] 键将新驱动程序分配给 ScenarioContext,但在此级别上不存在场景上下文。所以我想出了一个想法,它应该是 app.config 中的 autofac
  • 我认为您需要更多地了解 specflow 的工作原理。请参阅this answer,了解如何设置 specflow 以注入包含 Web 驱动程序的上下文。这个例子展示了如何在特性之间共享同一个实例,但是如果你每次在 BeforeScenario 方法中创建一个新的 webdriver 实例,每个都指向不同的配置文件,那么它应该可以正常工作
  • 我的建议是完全放弃 AutoFac 并做两件事。 1. 在没有 AutoFac 的情况下,仅使用 Specflow 而不使用配置文件即可使其正常工作。 2.然后添加对配置文件的支持。请不要编辑 feature.cs 文件。这些是由 Specflow 生成的,对功能文件 q 的任何更改都会导致它们重新生成,并且您将丢失所做的任何更改。
猜你喜欢
  • 1970-01-01
  • 2011-01-16
  • 2012-08-29
  • 2019-02-27
  • 2021-05-30
  • 2013-04-30
  • 1970-01-01
  • 2016-11-08
  • 2016-12-19
相关资源
最近更新 更多