Selenium Grid与页面对象模型页面工厂

时间:2014-05-23 10:34:25

标签: java selenium pageobjects

如果我想使用Page Object Model Page Factory在多个浏览器上进行测试,我将如何初始化浏览器?

目前我已经像我这样在我的基类中对浏览器进行了初始化。

// initialise driver/browser

 public void initDriver() throws MalformedURLException{
   if(CONFIG.getProperty("browser").equals("firefox")){
       cap = DesiredCapabilities.firefox();
       cap.setBrowserName("firefox"); // chrome,iexplore
       cap.setPlatform(Platform.ANY);
   }else if (CONFIG.getProperty("browser").equals("chrome")){
       cap = DesiredCapabilities.chrome(); // no need path of chrome exe
       cap.setBrowserName("chrome");
       cap.setPlatform(Platform.ANY);
   }else if (CONFIG.getProperty("browser").equals("iexplore")){
       cap = DesiredCapabilities.internetExplorer(); // no need path of chrome exe
       cap.setBrowserName("iexplore");
       cap.setPlatform(Platform.WINDOWS);
   }
   if(driver == null){
       driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),cap);
   }
   String waitTime=CONFIG.getProperty("default_implicitWait");
   driver.manage().timeouts().implicitlyWait(Long.parseLong(waitTime), TimeUnit.SECONDS);
   }

然而,这仅在其中一个浏览器上运行我的测试。

这是我的testng.xml文件

<suite name="Selenium Grid with webdriver" >
<listeners>
    <listener class-name="Codes.listener.TestsListenerAdapter" />
</listeners>
<test name="Login test">
    <classes>
        <class name="Codes.testCases.LoginTest" ></class>  
    </classes>
</test>
</suite>

2 个答案:

答案 0 :(得分:1)

您的浏览器初始化似乎没问题,但我想知道,为什么cap未在driver == null时初始化,您应该通过以下方式改进testng.xml

并行运行测试方法:

<suite name="Selenium Grid with webdriver" parallel="methods" thread-count="5" >
    <listeners>
        <listener class-name="Codes.listener.TestsListenerAdapter" />
    </listeners>
    <test name="Login test">
        <classes>
            <class name="Codes.testCases.LoginTest" ></class>  
        </classes>
    </test>
</suite>

同样,您可以定义parallel = "classes"parallel = "tests"来选择并行执行级别。

答案 1 :(得分:1)

正如@Priyanshu所提到的,你需要改变你的testng.xml。我相信您已经更新了testng.xml但是根据上面的testng.xml文件,<class>中只有一个<test>,所以在您的情况下parallel="methods"(我假设你想要执行)并行的不同测试脚本而不是相同测试脚本的不同方法)或parallel="classes"将不起作用。将其更改为parallel="tests",然后尝试按以下方式运行: -

<suite name="Selenium Grid with webdriver" parallel="tests" thread-count="5" >
    <listeners>
        <listener class-name="Codes.listener.TestsListenerAdapter" />
    </listeners>
    <test name="Login test">
        <classes>
            <class name="Codes.testCases.LoginTest" ></class>  
        </classes>
    </test>

    <test name="Login test2">
        <classes>
            <class name="Codes.testCases.LoginTest2" ></class>  
        </classes>
    </test>

   <test name="Login test3"> 

   <!-- class etc.. etc.. -->

   </test>

</suite>