如何在同一个包中使用两个类,其中一个类依赖于另一个类



我的类1是"登录"我的2班是"结账">

要运行类2(签出(,我必须首先登录(类1(,所以我的类2依赖于类1。但当我运行以下代码时,会显示一个空白的chrome屏幕:Chrome浏览器

chrome驱动程序不会转到我提供的URL,它只是停留在空白屏幕上。我的类1是一个登录类,要进行结账,我需要首先登录,所以当我这样做时,它不起作用。

请告诉我我在这里犯了什么错误?

第1类代码:

package testcases;
public class Login{
static WebDriver driver= new ChromeDriver();    
@BeforeClass
public void init() {
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.get("URL");
}            
@Test
public static void testcase1()  
{
driver.findElement(By.xpath(".//*[@id='email']")).click();
driver.findElement(By.xpath(".//*[@id='email']")).sendKeys("testid@g.com");
driver.findElement(By.xpath(".//*[@id='password']")).click();
driver.findElement(By.xpath(".//*[@id='password']")).sendKeys("3222");       driver.findElement(By.xpath("/html/body/div[4]/div/form/div[3]/div[2]/button")).click();       
}

第2类代码:

public class checkout {
static WebDriver driver= new ChromeDriver();
@BeforeClass    
public void init() {
driver.manage().window().maximize();
driver.get("URL");
} 
@Test(dependsOnMethods={"com.test.Login.testcase1"})
public void checkout() throws InterruptedException{
System.out.println("test");
driver.quit(); }}

testng.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none" preserve-order="true">
<test name="Test">
<classes>
<class name="com.test.Login"/>
<class name="com.test.checkout"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

错误:错误

请将Chrome驱动程序和Chrome浏览器更新为最新版本,然后重试并确认Chrome浏览器在Selenium网络驱动程序中以空白页启动

我不确定您是否遵循页面对象模型。

你需要做出相应的改变:

  1. 无需在签出类中创建WebDriver实例。您可以从登录类传递驱动程序引用
  2. 在启动chromeDriver之前,您需要设置其路径
  3. 您可以引入依赖项组录类中的,并通过引入dependsOnGroups概念使checkout()方法成为依赖于组的方法

在这里你可以遵循这个代码:

登录.java

public class Login  {
static WebDriver driver; 
@BeforeClass
public void init() {
System.setProperty("webdriver.chrome.driver", "C:\Users\user***\Downloads\chromedriver_win32\chromedriver.exe");
driver = new ChromeDriver();  
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.get("https://www.google.com/");
}  

@Test(groups={"Login.testcase1"})
public static void testcase1()  
{
driver.findElement(By.xpath(".//*[@id='email']")).click();
driver.findElement(By.xpath(".//*[@id='email']")).sendKeys("testid@g.com");
driver.findElement(By.xpath(".//*[@id='password']")).click();
driver.findElement(By.xpath(".//*[@id='password']")).sendKeys("3222");  
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[3]/div[2]/button")).click(); 
getCheckoutPage(driver);
}
public static  CheckOut getCheckoutPage(WebDriver driver) {
return new CheckOut(driver);
}
}

Checkout.java

public class CheckOut {
private WebDriver driver;
public CheckOut(WebDriver driver) {
this.driver = driver; 
}
@Test(dependsOnGroups={"Login.testcase1"})
public void checkout() throws InterruptedException{
System.out.println("test");
driver.quit(); }
}

最新更新