【问题标题】:Webdriver multiple browser testsWebdriver 多浏览器测试
【发布时间】:2016-10-06 21:29:11
【问题描述】:

在我的 UI 测试框架中,我有 5 个 webdriver 测试,目前仅在 firefox 浏览器中运行。

我需要在 chrome 和 firefox 多个版本中运行我的测试。

我们有一个浏览器堆栈许可,可以使用 RemoteWebdriver 来针对 chrome 和 firefox 的多个浏览器版本运行。

1)我应该如何在BeforeMethod或BeforeClass中创建驱动实例? 2)我应该如何从单个 maven 目标 mvn 测试中逐一迭代所有浏览器组合(浏览器? 3)如何跳过对特定浏览器(firefox 45,不在 chrome 51 中)版本的测试?

我应该如何设计我的框架?有什么建议么。非常感谢!

【问题讨论】:

  • 您可以开始使用任何可用的经过验证的框架,而不是创建自己的框架或花时间重新发明轮子。

标签: selenium-webdriver webdriver selenium-chromedriver browserstack


【解决方案1】:

这完全取决于您的实施。我们正在使用开源 QMetry 自动化框架来实现并行执行和配置。它在代码之外具有驱动程序配置。例如:

<suite name="AUT Test Automation" verbose="0" parallel="true">
      <parameter name="brand.name" value="westin" />
      <parameter name="target.platform" value="mobile" />
      <test name="Mobile Web Tests on IPhone">
            <parameter name="remote.server" value="10.12.49.180"/>
            <parameter name="remote.port" value="3001" />
            <parameter name="driver.name" value="iphoneRemoteDriver" />           
            ...
      </test>
      <test name="Mobile Web Tests on android">
            <parameter name="remote.server" value="10.12.48.87"/>
            <parameter name="remote.port" value="8080" />
            <parameter name="driver.name" value="androidRemoteDriver"/>                      
            ...
      </test>
 </suite>

更多信息请参考detailed documentation

【讨论】:

  • 是的,您也不需要使用 BeforeMethod 或 BeforeClass 来创建驱动程序实例,只需扩展 webdriver 测试库并使用 getDriver() 方法。对于驱动组合,您可以在 XML 配置文件中进行。
  • 感谢@java_automation 的想法!有没有办法使用 Selenium Factory 通过多次运行测试类来解决这个问题?
  • 即使您使用任何工厂实现,您仍然需要为线程安全会话和为不同的并行线程设置不同的功能/浏览器而奋斗。使用 QMetry 自动化框架,所有这些实现都可以使用。 refer
【解决方案2】:

如果您不想并行运行不同的浏览器。然后你可以使用 Cucumber 来编写你的自动化测试。

Cucumber 允许您正确使用 Scenario Outline,您可以这样使用。

test.feature

Feature: test different browser
Scenario Outline:test
  GIVEN I select <browser>
  WHEN I do something
  THEN i get some result
Examples:
|browser|
|chrome|
|firefox|

上面是一个功能文件,您可以为其创建包含步骤定义的步骤文件。如下所示

stepfile.java

@Given("^I select (.+)")
   public void selectBrowser(String browser) throws Throwable {
     if(browser.equals("chrome")){
      driver = new ChromeDriver();
       }
     else if(browser.equals("firefox")){
      driver = new FirefoxDriver();
       }
     else{
       }
  }

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2012-04-03
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多