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

时间:2018-07-30 18:45:47

标签: selenium automation

我的第一堂课是“登录” 我的第二堂课是'checkout'

要运行第2类(签出),我必须首先登录(第1类),因此我的第2类依赖于第1类。但是当我运行以下代码时,显示空白的chrome屏幕: Chrome browser

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 -->

错误: Errors

2 个答案:

答案 0 :(得分:0)

可以将Chrome驱动程序和Chrome浏览器更新为最新版本,然后重试并确认 Chrome browser launches with blank page in Selenium webdriver

答案 1 :(得分:0)

我不确定您是否遵循Page Object模型。

您需要进行相应的更改:

  1. 无需在检出类中创建 WebDriver实例。您只需通过登录类中的驱动程序引用
  2. 启动前,您需要设置chromeDriver的路径
  3. 您可以引入 Groups dependsOnGroups 概念。在登录类中出现的中创建testcase1(),并通过引入checkout()概念使dependsOnGroups方法依赖于组。

在这里您可以遵循以下代码:

Login.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(); }

}