【问题标题】:Multiple Browser in parallel test using Selenium Webdriver使用 Selenium Webdriver 并行测试多个浏览器
【发布时间】:2016-08-16 01:45:06
【问题描述】:

我在 selenium webdriver 中运行并行多浏览器测试。首次启动时,它可以在 chrome 和 Firefox 中运行。

从第二次开始,使用提到的 URL 启动两个浏览器。然后进一步的动作只发生在 Firefox 中。 chrome浏览器只是显示页面的url。

Java 代码:

public class Browser {
    static WebDriver driver;

    @BeforeTest
    @Parameters("browser")
    public void setup(String browserName) throws Exception{
        if (browserName.equalsIgnoreCase("Firefox")) {
            driver = new FirefoxDriver();
        }
        else if (browserName.equalsIgnoreCase("Chrome")) {
            System.setProperty("webdriver.chrome.driver",
                    "C:/Users/MSTEMP/Downloads/Softwares/chromedriver_win32/chromedriver.exe");
            driver = new ChromeDriver();
        }
        else if (browserName.equalsIgnoreCase("ie")) {
            System.setProperty("webdriver.ie.driver",
                    "C:/Users/MSTEMP/Downloads/Softwares/IEDriverServer/IEDriverServer.exe");
            driver = new InternetExplorerDriver();
        }
        else {
            throw new Exception("Browser is not correct");
        }
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }
    @Test
    public void testParameterWithXML() throws InterruptedException{
        driver.get("https://www.google.co.in/");
        System.out.println(""+driver.toString());
        driver.findElement(By.name("q")).sendKeys("login");
    }
}

Testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
 <suite name="Automationsuite" parallel="tests">
  <test name="ChromeTest">
   <parameter name ="browser" value="Chrome"/>
    <classes>
     <class name="browser.Browser" />
    </classes>
  </test>  
  <test name="FirefoxTest">
   <parameter name ="browser" value="Firefox"/>
    <classes>
     <class name="browser.Browser" />
    </classes>
  </test>  
 </suite> 

控制台: C:\Users\MSTEMP\workspace\CrossBrowser\src\browser.xml

 Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 16536
 Only local connections are allowed.
 FirefoxDriver: firefox on WINDOWS (e787139a-cce5-4406-9eff-c856151a9b20) 
 FirefoxDriver: firefox on WINDOWS (e787139a-cce5-4406-9eff-c856151a9b20)

 ===============================================
 Automationsuite Total tests run: 2, Failures: 0, Skips: 0
 ===============================================

系统规格:

操作系统:Windows 7 64 位

Java:Java 8

硒: 2.53.0

引导我伸出援手。

【问题讨论】:

  • 驱动程序 1 和驱动程序 2。 driver = firefox 后跟 driver = chrome 使 firefox 没有句柄。
  • @Mike 我没听懂你。你能解释一下解决方案吗
  • 您想要两个并发的浏览器会话,但在提供的代码中您只定义了一个变量驱动程序。要同时打开两个浏览器会话,您需要初始化 driver1 = new FirefoxDriver(); driver2 = new InternetExplorerDriver();
  • Mike,但在某些教程中,我确实看到使用 testNG 的一个驱动程序可以同时运行。正如我在代码中提到的。
  • 两个驱动实例就是两个驱动变量。 :-)

标签: java windows selenium webdriver selenium-chromedriver


【解决方案1】:

我认为您需要将 driver 设为成员变量,而不是 NOT 静态变量。

【讨论】:

  • 我将静态变量更改为成员变量,现在它可以正常工作了。但是 IE 没有在谷歌搜索框中输入值。我尝试了 id、name、xpath,但一切都失败了。但同样的事情在 Chrome 和 Firefox 中也适用。
  • 它在 IE11 中失败,它在 IE10 32 位中工作。没关系。你能解释一下并行测试背后的概念吗?在一个驱动程序的帮助下,创建了 3 个实例,以及如何在整个流程中维护和管理会话 ID。
猜你喜欢
  • 2012-04-03
  • 2012-04-30
  • 2013-04-11
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多