代码之家  ›  专栏  ›  技术社区  ›  Bhuvana

如何通过打开多个窗口一次使用selenium testng执行负载测试

  •  0
  • Bhuvana  · 技术社区  · 6 年前

    我已经执行了下面的代码来执行负载测试

     @Test(invocationCount = 5, threadPoolSize = 1)
     public void GmailLogin() throws InterruptedException {
    
     System.setProperty("webdriver.chrome.driver", "D:\\CIPL0564\\D 
    Drive\\Software\\chromedriver_win32\\chromedriver.exe");
     driver = new ChromeDriver();
     driver.manage().window().maximize();
    driver.get("https://tst-oec-ebooking.azurewebsites.net/");
    driver.manage().timeouts().implicitlyWait(6000, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//*[@id=\"Email\"]")).sendKeys("mad@dayrep.com");
    driver.manage().timeouts().implicitlyWait(6000, TimeUnit.SECONDS);
    driver.findElement(By.xpath("//*[@id=\"Password\"]")).sendKeys("Pass@123");
    driver.findElement(By.xpath("//*[@id=\"login_submit\"]")).click();
    Thread.sleep(1500);
    driver.manage().timeouts().implicitlyWait(5000, TimeUnit.SECONDS);
    driver.quit();
    

    }

    它执行了5次,没有错误,但一个接一个。我需要一次打开多个窗口来执行。 我尝试过将threadpoolsize设置为5,但由于会话未创建,所以出现了错误。

    1 回复  |  直到 6 年前
        1
  •  1
  •   AutomatedOwl    6 年前

    testng runner将只为所有运行的测试方法创建一个测试类实例。并行运行时也会出现这种逻辑。似乎您的webdriver对象是全局定义的,所以在每次调用“driver=new chromedriver()”时,它都会覆盖另一个对象。

    我的建议是使用threadlocal对象来定义webdriver会话。这样,给定线程中的每个webdriver对象都充当独立的数据集。 查看此链接 http://seleniumautomationhelper.blogspot.com/2014/02/initializing-webdriver-object-as-thread.html 关于这个问题的更详细的解释。

    推荐文章