gpt4 book ai didi

java - 如何在 Selenium Webdriver (JAVA) 中使用 "extends"

转载 作者:行者123 更新时间:2023-12-01 10:05:36 26 4
gpt4 key购买 nike

关于如何在 1 个浏览器中依次执行 2 个类的任何想法。我尝试在第二堂课中使用“扩展”,但我认为我的代码中缺少一些东西。知道如何解决这个问题吗?

我的第一个类

package TestNg_Package;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class T3EmployeeMaintenance{
public static WebDriver driver = new FirefoxDriver();

@BeforeClass
public void invokeBrowser() {

//driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.get("http://xxxxxxxxxxxxxx.net");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
}

@Test(priority = 1)
public void Login() {

driver.findElement(By.name("login_id")).sendKeys("admin");
driver.findElement(By.name("password")).sendKeys("12345678");
driver.findElement(By.name("buttonAction")).click();
}

@Test(priority = 2)
public void GoToEmpMain(){
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.findElement(By.cssSelector(".fi-archive")).click();
driver.findElement(By.linkText("Employee Maintenance")).click();
}
}

我的二年级

 package TestNg_Package;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class T3DetailedTimeTrackingReport extends T3EmployeeMaintenance{

@Test(priority = 1)
public void GoToDTTR(){
driver.findElement(By.cssSelector("i.fi-graph-bar")).click();
driver.findElement(By.linkText("Detailed Time Tracking Report")).click();
}

@Test(priority = 2)
public void ClickDropdown(){
driver.findElement(By.xpath("//*[@id='panel-1063-innerCt']")).click();
WebElement ele = driver.findElement(By.id("ext-gen1204"));
ele.click();
}
}

我的 TestNg.XML 代码

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite One">
<test name="Test One" >
<classes>
<class name="TestNg_Package.T3EmployeeMaintenance" />
<class name="TestNg_Package.T3DetailedTimeTrackingReport" />
</classes>
</test>
</suite>

我的目标是执行“Class 1 @Test(Priority=2)”后,“Class 2 @Test(Priority=1)”将立即执行。

最佳答案

  1. T3DetailedTimeTrackingReport包含4个测试方法:
    • 登录
    • 转到EmpMain
    • 转到DTTR
    • 点击下拉菜单

这是你想要的吗?

  • @BeforeClass 注解的方法在每个测试类之前执行。所以两个类 -> 两次执行

  • 为每个测试类提供单独的驱动程序有助于测试隔离,因此也许值得在新的未受损害的驱动程序中运行每个类?

  • 请考虑释放测试所需的资源( close() 方法)

  • 如果您仍然想在同一个驱动程序上执行所有测试,您可以这样做:

    @BeforeSuite
    public void invokeBrowser() {
    //set up your driver here
    }

    @AfterSuite(alwaysRun=true)
    public void closeBrowser() {
    driver.close()
    }
  • 如果您决定让每个测试类使用新的驱动程序(出于隔离目的):

    @BeforeClass
    public static void makeSureBrowserReady() {
    driver = new FirefoxDriver();
    //set up your driver here
    }

    @AfterClass(alwaysRun=true)
    public static void closeDriver() {
    driver.close()
    }
  • 您的问题似乎与 testNG 相关,而不是与 selenium/xml 相关。这是一些关于它的文档 http://testng.org/doc/documentation-main.html

  • 关于java - 如何在 Selenium Webdriver (JAVA) 中使用 "extends",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500363/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com