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