Java 如何在从excel运行前200个用户后退出浏览器并重新启动整个脚本?

Java 如何在从excel运行前200个用户后退出浏览器并重新启动整个脚本?,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,我有selenium java代码从excel文件中读取数据,然后使用该数据作为用户名,然后登录我们的网站。然而,我的问题是我们有200000个用户名,在300个用户名之后,我得到一个错误,我的会话过期了。如何在200用户之后关闭浏览器并从用户201重新启动代码,然后在400再次退出浏览器并从401重新启动代码,依此类推。下面是我的代码行。多谢各位 package loginAdmin; import java.util.concurrent.TimeUnit; import org.open

我有selenium java代码从excel文件中读取数据,然后使用该数据作为用户名,然后登录我们的网站。然而,我的问题是我们有200000个用户名,在300个用户名之后,我得到一个错误,我的会话过期了。如何在200用户之后关闭浏览器并从用户201重新启动代码,然后在400再次退出浏览器并从401重新启动代码,依此类推。下面是我的代码行。多谢各位

 package loginAdmin;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class PersonateUserCopy
{
    WebDriver driver;
        
    @BeforeTest
    public void setUp() throws Exception 
    {
        System.setProperty("webdriver.chrome.driver", 
        "C:\\Users\\abc\\Downloads\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().deleteAllCookies();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
        driver.get("https://www.example.com/Home.aspx");
        driver.findElement(By.id("M_layout_content_PCDZ_MW2NO7V_ctl00_webInputForm_txtLoginName"))
        .sendKeys("admin");   
        driver.findElement(By.id("M_layout_content_PCDZ_MW2NO7V_ctl00_webInputForm_txtPassword"))
        .sendKeys("Password");    
        driver.findElement(By.id("M_layout_content_PCDZ_MW2NO7V_ctl00_webInputForm_cmdContinue"))
        .click();       
        
    }
    
    @Test(dataProvider="testdata") 
    public void login(String username) throws InterruptedException
    {
        driver.findElement(By.id("M_layout_content_PCDZ_M5QH8YG_ctl00_lblUserName")).click();
        Thread.sleep(1000);
        driver.findElement(By.id("M_layout_content_PCDZ_M5QH8YG_ctl00_txtUserName")).clear();
        Thread.sleep(1000);
        driver.findElement(By.id("M_layout_content_PCDZ_M5QH8YG_ctl00_txtUserName"))
        .sendKeys(username);
        driver.findElement(By.id("M_layout_content_PCDZ_M5QH8YG_ctl00_btnSearch")).click();
         
       driver.findElement(By.id("M_layout_content_PCDZ_M5QH8YG_ctl00_resultsGrid_ctl02_LogIn"))
       .click(); 
        Assert.assertTrue(driver.getTitle().contains("Dashboard"),"User is not able to login"); 
        System.out.println("User is able to login successfully");
    
    driver.findElement(By.xpath("/html/body/form/div[3]/div[3]/div[1]/div[1]/div/div[5]/ul/li[6]/a"))
       .click();
        driver.findElement(By.id("M_layout_content_PCDZ_M5QH8YG_ctl00_lblUserName")).click();
        Thread.sleep(1000);
        driver.findElement(By.id("M_layout_content_PCDZ_M5QH8YG_ctl00_txtUserName")).clear();
        Thread.sleep(2000);
        
    }
    
    @AfterTest
    public void tearDown() throws Exception
    {
       driver.close();
    }
    
    @DataProvider(name="testdata")
    public Object[][] TestDataFeed()
    {
        ReadExcelFileCopy config = new ReadExcelFileCopy("C:\\Users\\abc\\Desktop\\testdata.xlsx");
        int rows = config.getRowCount(0);
        Object[][] credentials = new Object[rows][1];
        for (int i = 0; i < rows; i++)
        {
            credentials[i][0] = config.getData(0, i, 0);
        }
            return credentials;
    }
}
package loginAdmin;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.testng.Assert;
导入org.testng.annotations.postest;
导入org.testng.annotations.BeforeTest;
导入org.testng.annotations.DataProvider;
导入org.testng.annotations.Test;
公共类人物影印
{
网络驱动程序;
@试验前
public void setUp()引发异常
{
System.setProperty(“webdriver.chrome.driver”,
“C:\\Users\\abc\\Downloads\\chromedriver\u win32\\chromedriver.exe”);
驱动程序=新的ChromeDriver();
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.manage().timeout().pageLoadTimeout(10,TimeUnit.SECONDS);
驱动程序。获取(“https://www.example.com/Home.aspx");
driver.findElement(按.id(“M_布局、内容、PCDZ、MW2NO7V、ctl00、webInputForm、txtLoginName”))
.sendKeys(“管理”);
driver.findElement(By.id(“M_布局_内容_PCDZ_MW2NO7V_ctl00_webInputForm_txtPassword”))
.sendKeys(“密码”);
driver.findElement(By.id(“M_布局_内容_PCDZ_MW2NO7V_ctl00_webInputForm_cmdContinue”))
。单击();
}
@测试(dataProvider=“testdata”)
公共无效登录(字符串用户名)引发InterruptedException
{
driver.findElement(By.id(“M_layout_content_PCDZ_M5QH8YG_ctl00_lblUserName”))。单击();
睡眠(1000);
driver.findElement(By.id(“M_layout_content_PCDZ_M5QH8YG_ctl00_txtexsername”)).clear();
睡眠(1000);
driver.findElement(By.id(“M_布局\内容\ PCDZ\ U M5QH8YG\ U ctl00\ U txtUserName”))
.sendKeys(用户名);
driver.findElement(By.id(“M_layout_content_PCDZ_M5QH8YG_ctl00_btnSearch”)。单击();
driver.findElement(By.id(“M_layout_content_PCDZ_M5QH8YG_ctl00_resultsGrid_ctl02_LogIn”))
。单击();
Assert.assertTrue(driver.getTitle()包含(“仪表板”),“用户无法登录”);
System.out.println(“用户能够成功登录”);
findElement(By.xpath(“/html/body/form/div[3]/div[3]/div[1]/div[1]/div/div[5]/ul/li[6]/a”))
。单击();
driver.findElement(By.id(“M_layout_content_PCDZ_M5QH8YG_ctl00_lblUserName”))。单击();
睡眠(1000);
driver.findElement(By.id(“M_layout_content_PCDZ_M5QH8YG_ctl00_txtexsername”)).clear();
《睡眠》(2000年);
}
@事后
public void tearDown()引发异常
{
driver.close();
}
@数据提供者(name=“testdata”)
公共对象[][]TestDataFeed()的
{
ReadExcelFileCopy配置=新建ReadExcelFileCopy(“C:\\Users\\abc\\Desktop\\testdata.xlsx”);
int rows=config.getRowCount(0);
对象[][]凭据=新对象[行][1];
对于(int i=0;i
你能发布错误日志吗?嗨,我没有收到任何错误。我的剧本写得很好。我只想更新它,使它每200次迭代退出浏览器并继续201次。作为一种解决方法,我正在使用@AfterMethod退出我的chrome会话。您可以尝试使用用户索引。当达到200时,重新启动测试,并使用新的起始索引+1再次调用provider方法。