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

Selenium网格与TestNG,如何用好它

东郭承业
2023-03-14
 <?xml version="1.0" encoding="UTF-8"?>
      <suite name="Suite" parallel="tests">
  <test name="Test0">
  <parameter name="node" value="http://192.168.117.135:5555/wd/hub"/>
  <parameter name="fullName" value="UserFullName0"/>
  <parameter name="firstName" value="UserFirstName"/>
  <parameter name="name" value ="UserName"/>
  <parameter name="init" value ="init"/>
  <parameter name="login" value ="UserLogin"/>
  <parameter name="civility" value="civility"/>
  <parameter name="forcePasswordChange" value ="true"/>
  <parameter name="passwordControlModel" value ="pwdModel"/>
  <parameter name="backUpMail" value ="backUpMail@email.com"/>
  <parameter name="language" value ="fr"/>
  <parameter name="externalUser" value ="true"/>
  <parameter name="service" value ="service"/>
  <parameter name="company" value ="company"/>
  <parameter name="emailCompany" value ="emailCompany@memail.com"/>
  <parameter name="contributorTest1" value ="contributor"/>
  <parameter name="lockedByAdministration" value ="false"/>
  <parameter name="multisessions" value ="false"/>
  <parameter name="invisibleAccount" value ="false"/>
  <parameter name="isAlive" value ="true"/>
  <parameter name="expirationDate" value ="false"/>
  <parameter name="role" value ="role"/>
  <parameter name="autorizedConnection" value ="55"/>
  <parameter name="authentificationPolicy" value ="LOCAL"/>
    <classes>
      <class name="selenium.test.UserSaveTest"/>
    </classes>
  </test> <!-- Test -->
  <test name="Test1">
  <parameter name="node" value="http://192.168.117.135:5555/wd/hub"/>
  <parameter name="fullName" value="UserFullName1"/>
  <parameter name="firstName" value="UserFirstName"/>
  <parameter name="name" value ="UserName"/>
  <parameter name="init" value ="init"/>
  <parameter name="login" value ="UserLogin"/>
  <parameter name="civility" value="civility"/>
  <parameter name="forcePasswordChange" value ="true"/>
  <parameter name="passwordControlModel" value ="pwdModel"/>
  <parameter name="backUpMail" value ="backUpMail@email.com"/>
  <parameter name="language" value ="fr"/>
  <parameter name="externalUser" value ="true"/>
  <parameter name="service" value ="service"/>
  <parameter name="company" value ="company"/>
  <parameter name="emailCompany" value ="emailCompany@memail.com"/>
  <parameter name="contributorTest1" value ="contributor"/>
  <parameter name="lockedByAdministration" value ="false"/>
  <parameter name="multisessions" value ="false"/>
  <parameter name="invisibleAccount" value ="false"/>
  <parameter name="isAlive" value ="true"/>
  <parameter name="expirationDate" value ="false"/>
  <parameter name="role" value ="role"/>
  <parameter name="autorizedConnection" value ="55"/>
  <parameter name="authentificationPolicy" value ="LOCAL"/>
    <classes>
      <class name="selenium.test.UserSaveTest"/>
    </classes>
  </test> <!-- Test -->
  <test name="Test2">
  <parameter name="node" value="http://192.168.117.135:5555/wd/hub"/>
  <parameter name="fullName" value="UserFullName2"/>
  <parameter name="firstName" value="UserFirstName"/>
  <parameter name="name" value ="UserName"/>
  <parameter name="init" value ="init"/>
  <parameter name="login" value ="UserLogin"/>
  <parameter name="civility" value="civility"/>
  <parameter name="forcePasswordChange" value ="true"/>
  <parameter name="passwordControlModel" value ="pwdModel"/>
  <parameter name="backUpMail" value ="backUpMail@email.com"/>
  <parameter name="language" value ="fr"/>
  <parameter name="externalUser" value ="true"/>
  <parameter name="service" value ="service"/>
  <parameter name="company" value ="company"/>
  <parameter name="emailCompany" value ="emailCompany@memail.com"/>
  <parameter name="contributorTest1" value ="contributor"/>
  <parameter name="lockedByAdministration" value ="false"/>
  <parameter name="multisessions" value ="false"/>
  <parameter name="invisibleAccount" value ="false"/>
  <parameter name="isAlive" value ="true"/>
  <parameter name="expirationDate" value ="false"/>
  <parameter name="role" value ="role"/>
  <parameter name="autorizedConnection" value ="55"/>
  <parameter name="authentificationPolicy" value ="LOCAL"/>
    <classes>
      <class name="selenium.test.UserSaveTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

和相关的java脚本:

public class UserSaveTest {


  @Parameters("node")
  //@Test(invocationCount = 1)
  @Test(invocationCount = 1, threadPoolSize=1)
  public void checkUserFields(String node) throws InterruptedException, MalformedURLException {
        um.initWebDriver(node);
        um.logIn("root", "pass");
        um.initSave();
        um.save();

        um.logOut();
        um.logIn("root", "pass");

        um.initCheck();
        User user =(User) um.getEntity();
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div[2]/div/div[2]/div/div[2]/div/div/div/textarea", user.getFullName()), user.getFullName());
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div/div[2]/div/div[2]/div[2]/div/div/div/input", user.getFirstName()), user.getFirstName());
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div/div[2]/div/div[2]/div[3]/div/div/div/input",user.getName()),user.getName());
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div/div[2]/div/div[2]/div[4]/div/div/div/input",user.getInit()),user.getInit());
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div/div[2]/div/div[2]/div[5]/div/div/div/input",user.getCivility()), user.getCivility());
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div/div[2]/div/div[2]/div[7]/div[2]/div/div/div/div/input",user.getLogin()), user.getLogin());
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div/div[2]/div/div[2]/div[7]/div[2]/div[3]/div/div/textarea",user.getPassWordControlModel()), user.getPassWordControlModel());
        Assert.assertEquals(um.findTextAndCompare("//div[2]/div[2]/div/div[2]/div/div[2]/div[7]/div[2]/div[4]/div/div/input","password_Test1"), "password_Test1");

        DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        Calendar calendar = Calendar.getInstance();
        String todaysDate = dateFormat.format(calendar.getTime());

        Assert.assertEquals(um.findTextAndCompare("//div[3]/div/div/input", todaysDate), todaysDate);
        Assert.assertEquals(um.findTextAndCompare("//div[10]/div[2]/div[4]/div/div/div/input", user.getAutorizedConnection()),user.getAutorizedConnection());
        Assert.assertEquals(um.findAndCheckMenu("//div[5]/div/div/button", user.getAuthentificationPolicy()),user.getAuthentificationPolicy());
        //fin des champs textuels

        //champs radio
        Assert.assertTrue(um.findAndCheckRadio("//div[2]/div[2]/div/div/label", "//div[2]/div/div[2]/label", false));
        Assert.assertTrue(um.findAndCheckRadio("//div[3]/div/div/label", "//div[3]/div/div[2]/label", true));
        Assert.assertTrue(um.findAndCheckRadio("//div[9]/div[2]/div/div/div/label", "//div[9]/div[2]/div/div/div[2]/label", false));
        Assert.assertTrue(um.findAndCheckRadio("//div[9]/div[2]/div[2]/div/div/label", "//div[9]/div[2]/div[2]/div/div[2]/label", false));
        Assert.assertTrue(um.findAndCheckRadio("//div[9]/div[2]/div[3]/div/div/label", "//div[9]/div[2]/div[3]/div/div[2]/label", false));
        Assert.assertTrue(um.findAndCheckRadio("//div[4]/div/div/label", "//div[4]/div/div[2]/label", true));
        //fin champs radio

        um.deleteUser();

        um.close();
  }


  //Suppression de l'user et fermeture du driver
  @AfterTest
  public void finishTheTest() {
      um.close();
  }
}

当我检查节点地址时,我看到了我运行的所有会话,并且有超过3个会话。scprit执行得很好,但我想知道为什么它在不应该工作的时候却在工作。如果我可以在节点的maxSession和MaxInstitutions设置为1时同时执行浏览器的3个实例,那么这些实例有什么用呢?谢谢

共有1个答案

宋晋
2023-03-14

鲍勃,MaxSession-

  • maxsession--表示节点中任何给定时间点上可以打开的最大并发会话数(它是节点支持的所有浏览器类型的合并值)
  • MaxInstitutions-表示每个浏览器类型的节点在任何给定时间点可以打开的最大并发会话数。

为了确保在启动节点时正确读取配置,是否可以使用JSON配置文件来指定它并使用它启动节点?我猜测,当你以你的方式传递它时,也许配置没有被正确地读取。

{
  "capabilities":
      [
        {
          "browserName": "firefox",
          "maxInstances": 1
        }
      ],
  "configuration":
  {
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 1,
    "port": 5555,
    "register": true,
    "registerCycle": 5000,
    "hub": "http://localhost:4444"
  }
}
java -jar "C:\selenium-2.53.0\selenium-server-standalone-2.53.0.jar" -role node -hub http://localhost:4444/grid/register -nodeConfig C:\selenium-2.53.0\nodeConfig.json -port 5555

C:\Selenium-2.53.0\NodeConfig.json

将包含我前面粘贴的json内容。

一旦以这种方式启动节点,我认为应该会发生预期的情况。

 类似资料:
  • 问题内容: 我想知道是否有人可以阐明一个让我们有些头疼的问题。 我们对Selenium Grid 的和的含义感到困惑。我们认为,这是可以在单个节点上运行的测试会话的总数。而且,我们还认为测试是可以打开的浏览器总数。 还是该节点可用的浏览器总数? 我们使用的命令是: 我们认为(上面)使用节点的方式默认为5个并发测试会话。 每个测试都有20个可用的浏览器吗? 还是每个测试会话与其他测试会话共享一个池中

  • 我有测试用例的testrail项目。我已经使用硒测试自动化了大部分测试用例。我找不到合适的逐步回答如何将testrail项目-测试用例与硒测试项目集成。在哪里找到应用编程接口,在哪里放置应用编程接口。一旦我执行硒项目,我想在测试轨道上标记测试用例为通过/失败。此外,这个应用编程接口将如何创建测试运行?

  • 我正在使用SeleniumWebDriver进行网站测试。现在我想在SeleniumWebDriver中设置TestNG。怎么可能呢?testng有JAR文件吗?

  • 我正在尝试通过Azure执行远程selenium测试。 为此,我使用https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-lab-with-seleniumgrid 我使用selenium服务器独立jar文件创建了一个自定义模板,并安装

  • 在运行测试时,我需要长时间的延迟(约40秒)。 我看到了,在那段时间里,Selenium会话被删除了。 请帮助:如何配置会话超时以增加? 在Selenium节点日志中开始延迟后的30秒内,我看到了以下内容: 信息org.openqa.selenium.remote.server。DriverServlet-由于客户端超时,会话7f5fffec-4882-4c4c-b091-c780c66d379d

  • 有什么方法可以将cucumber与现有的testng项目集成在一起吗?目前,在我们的项目中,我们使用testng和Page对象模型。现在我们决定把cucumber也包括在内。但我认为我们不能,因为cucumber使用功能文件,我们可以有'n'个场景。但是testng是基于@test方法运行的。所以,让我知道我们是否可以集成cucumber+testng,如果可以,我们如何使用cucumber运行每