当前位置: 首页 > 知识库问答 >
问题:

硒测试不使用测试在网格中并行运行

司寇星海
2023-03-14

注:

在testng xml中,如果我将parallel=更改为类或方法,那么它可以很好地运行测试,但它不是并行地一个接一个地运行测试。

如果我保持parallel=“tests”,那么它会并行运行,但它会在同一个VM中打开同一个浏览器三次,这是不正确的。

我的设置:

我设置了11个虚拟机,每个盒子上的每个浏览器都初始化了Selenium网格节点。我已经创建了testng xml,以便在每个框上运行测试。这些测试是使用Webdriver用Java编写的。

我的问题:

当我执行测试时,打开了3个IE实例,测试在同一个虚拟机中并行运行。我有不同的虚拟机设置和正确的节点,所以从下面的测试xml中,我期望测试在不同的虚拟机中的IE、FF和IE9中正确运行。

TESTNG XML

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Parallel Tests" verbose="1" thread-count="3" parallel="tests" >

<tests>

<test name="IE11">

  <parameter name="GridBrowser"  value="iexplore11windows7"/>

<classes>
<class name="test.tes_connect.homepage.VerifyCarouselIsWorkingCorrectly" />
</classes>
</test>

<test name="FF25">

  <parameter name="GridBrowser"  value="firefox25win7"/>

<classes>
<class name="test.tes_connect.homepage.VerifyCarouselIsWorkingCorrectly" />
</classes>
</test>


<test name="IE9">

  <parameter name="GridBrowser"  value="iexplore9windows7"/>

<classes>
<class name="test.tes_connect.homepage.VerifyCarouselIsWorkingCorrectly" />
</classes>
</test>

</tests>

</suite>

配置JAVA

package com.environments;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.openqa.selenium.remote.DesiredCapabilities;

public class Configuration {

public static DesiredCapabilities setCap; 

public static String SeleniumGridSetup(String gridBrowser) {

    String newGridBrowser = gridBrowser;

    switch (newGridBrowser) {


        // QA CLIENT 11

        case "iexplore8windowsXP": 

            System.out.println("Internet Explorer 8 on Windows XP");
            setCap= DesiredCapabilities.internetExplorer();
            setCap.setBrowserName("internet explorer"); 
            setCap.setPlatform(org.openqa.selenium.Platform.XP);
            setCap.setVersion("8.0"); 
            break;

        case "firefox23": 

            System.out.println("Firefox 23 on Windows XP");
            setCap= DesiredCapabilities.firefox();
            setCap.setBrowserName("firefox"); 
            setCap.setPlatform(org.openqa.selenium.Platform.XP);
            setCap.setVersion("23.0");
            break;

        case "chromeLatestwinXP":

            System.out.println("Chrome Latest Version on Windows XP");
            setCap= DesiredCapabilities.chrome();
            setCap.setBrowserName("chrome"); 
            setCap.setPlatform(org.openqa.selenium.Platform.XP);
            setCap.setVersion("L1");
            break;

        // QA CLIENT 10

        case "iexplore7winXP": 

            System.out.println("Internet Explorer 7 on Windows XP");
            setCap= DesiredCapabilities.internetExplorer();
            setCap.setBrowserName("internet explorer"); 
            setCap.setPlatform(org.openqa.selenium.Platform.XP);
            setCap.setVersion("7.0"); 
            break;


            ...... ETC ETC 
    }

    return newGridBrowser;
}

考试班

package test.authentication;

import java.net.URL;

import static org.testng.Assert.fail;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import ui.common.masthead;
import ui.authentication.logInPage;

import com.environments.Configuration;
import com.thoughtworks.twist.core.execution.TwistScenarioDataStore;
import com.data.Users;

public class LoginWithCorrectUsernameToTESConnect {

public WebDriver browser;
public static String url; 
private StringBuffer verificationErrors = new StringBuffer();

@Autowired
private TwistScenarioDataStore scenarioStore;


// Selenium grid constructor for running tests in the Grid

@Parameters({"GridBrowser"})
public LoginWithCorrectUsernameToTESConnect(String GridBrowser) throws Exception {          

    Configuration.SeleniumGridSetup(GridBrowser);
    browser = new RemoteWebDriver(new URL(Configuration.getHubUrl()),  Configuration.setCap);

    url = Configuration.getUrl();
    browser.manage().window().maximize();
    browser.navigate().to(url);
}

// Webdriver constructor for running tests using the Twist IDE 

public LoginWithCorrectUsernameToTESConnect(WebDriver browser) throws Exception {

    this.browser = browser; 
    browser.manage().window().maximize();

    url = Configuration.getUrl();
    browser.navigate().to(url); 
}

// Test method for login to TES Connect start from here 

@Test
public void loginWithDifferentUsersAndVerifyUsernameDisplayed() throws Exception {

    for (int i = 0; i < Users.getUsernameFromList().size(); i++) {

        try {

            browser.findElement(masthead.UCP.loginLink).click();
            browser.findElement(logInPage.usernameInput).sendKeys(Users.getUsernameFromList().get(i));
            browser.findElement(logInPage.passwordInput).sendKeys(Configuration.getGenericUserPassword());
            browser.findElement(logInPage.logInButton).click();

            Assert.assertEquals(browser.findElement(masthead.UCP.userName).getText(), Users.getUsernameFromList().get(i), "Username did not match");
            browser.findElement(masthead.UCP.logoutLink).click();       

        }
        catch (Error e) { 

            verificationErrors.append(e.toString()); 
        }
    }
}

@AfterTest
public void tearDown() {

    browser.quit();

    String verificationErrorString = verificationErrors.toString();

    if (!"".equals(verificationErrorString)) {

          fail(verificationErrorString);
    }
}
}

共有1个答案

罗诚
2023-03-14

在我的selenium节点中添加了以下内容后,我现在成功地使其工作:

maxInstances=5 maxSession=5

 类似资料:
  • 我一直在周而复始地试图弄明白这一点,在Selenium网格集群上使用cucumber和maven并行选项几乎是不可能的。 我的跑步者根据标签跑步,应该会选择5到6个特征文件。 我使用Cucumber for Java、Maven surefire 2.19和Junit。 到目前为止,pom的surefire配置如下所示:- 我的跑步者看起来像这样:- 我和马文一起跑步:- 清洁测试-P RunFe

  • 我使用appium和java自动化Android应用程序。作为一个初学者,我想知道TestNG和网格之间的区别。冲浪,但不能得到答案。

  • 我有一些关于硒网格的疑问。 考虑以下场景: 机器A:通过命令注册为集线器= 机器B:安装了Windows 7和chrome浏览器 通过命令注册为节点= 机器C:有Windows 7和Chrome浏览器 通过命令注册为节点= < code > Java-dwebdriver . chrome . driver = " chrome驱动程序的路径"-jar selenium-server-standa

  • 这是我的Java代码: 当我运行它时,会出现以下错误: 我正在使用IntelliJ,安装了chrome驱动程序,但没有解决它,所以任何人都知道这个问题的解决方案??

  • 我想在Jenkins中运行Selenium Webdriver Maven测试。我遵循了教程:https://www.guru99.com/maven-jenkins-with-selenium-complete-tutorial.html和https://www.safaribooksonline.com/library/view/jenkins-the-definitive/978144931

  • 我正在尝试使用selenium grid和TestNG对chrome和Firefox进行并行测试。 我正在使用@DataProvider使其使用单个excel文件进行数据驱动 但是,每次我尝试运行套件时,其中一个浏览器都会关闭,并在其中一个浏览器仍能正常运行测试脚本时抛出以下错误堆栈: 我有以下项目在testng.xml 对于before测试,我有以下内容,它位于名为Framework的类中,由名