Java 在同一类文件的第二个@test方法中使用数据提供程序未成功运行

Java 在同一类文件的第二个@test方法中使用数据提供程序未成功运行,java,selenium,selenium-webdriver,testng,testng-dataprovider,Java,Selenium,Selenium Webdriver,Testng,Testng Dataprovider,在我的要求,我有“添加”按钮在屏幕上的“C类”。它打开弹出式模块。在那里我可以添加更多的值并保存 我的代码使用一个带有数据提供程序迭代的@Test方法运行。但在一次迭代后失败了。因此,我用数据提供者创建了一个额外的@test方法 成功运行第一个@test方法后获取代码失败。找不到第一个元素属于第二个@test方法 c类扩展了B类 public class ClassB extends ClassA{ @Test public void project() { try {

在我的要求,我有“添加”按钮在屏幕上的“C类”。它打开弹出式模块。在那里我可以添加更多的值并保存

我的代码使用一个带有数据提供程序迭代的
@Test
方法运行。但在一次迭代后失败了。因此,我用数据提供者创建了一个额外的
@test
方法

成功运行第一个@test方法后获取代码失败。找不到第一个元素属于第二个
@test
方法

c类扩展了B类

public class ClassB extends ClassA{

@Test
public void project() {
    
    try {
        obj1.implicitWait(driver, 10);          
        WebElement groupName = wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@class='placeholder']"))));
        groupName.click();
        
        WebElement inputText = wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@class='filter']//input"))));
        inputText.click();
        inputText.sendKeys("Par");
        inputText.sendKeys(Keys.DOWN);
        inputText.sendKeys(Keys.ENTER);
        
        long timetaken = (long) obj1.javatimeout(driver);
        this.wait = obj1.explicitWait(driver, (int) timetaken); 
        
    } catch (Exception e) {
        System.out.println("Project group not selected " +e);
        // TODO: handle exception
    }
    
}
B类扩展了A类

public class ClassA{
    
    WebDriver driver;
    WebDriverWait wait;
    
    Commonclass obj1 = new Commonclass();
    
    @BeforeSuite
    public void callbrowser()
    {
        this.driver = obj1.selectBrowser(driver, "Chrome");
        
    }
    
    @Test
    public void login()
    {
        driver.get("https://Link Goes here");
        
        long timetaken = (long) obj1.javatimeout(driver);
        wait = obj1.explicitWait(driver, (int) timetaken);
        
        WebElement signin = obj1.selectElement(wait, "//*[@id='txtSigninID']");
        obj1.sendtext(signin, "My Name");
            
        WebElement password = obj1.selectElement(wait, "//*[@id='txtPassword']");
        obj1.sendtext(password, "my password");
        
        WebElement submit = obj1.selectElement(wait, "//*[@name='btnSignIn']");
        obj1.clickElement(submit);
    }
    
    
}
如果我有一个@test方法,那么整个代码都会运行。为什么单个类中的两个@test方法不起作用。我在下面添加testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="com.abc.def.aaa.classa"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->


我看到您扩展了一些其他类,在webDriver实例化期间是否设置了一些超时,这可能是导致问题的原因,因为找不到元素。我的建议是,你把所有的元素都放在PageObject设计中,它会解决你遇到的很多问题。这是一个很好的开始链接。提供更多信息HTML,驱动程序实例化等。科瓦西奇。我补充了更多的信息。请查收。我的问题是,当有一个@test方法时,整个代码都会运行。@mukuntrajendran-您如何期望任何人基本上运行您共享的代码并找出错误所在,因为它对其他类有很多依赖关系,而您没有共享这些类。请编辑您的问题,并请添加所需的所有上下文信息required@Krishnan-对不起,我已经提供了足够的所需信息。
public class ClassA{
    
    WebDriver driver;
    WebDriverWait wait;
    
    Commonclass obj1 = new Commonclass();
    
    @BeforeSuite
    public void callbrowser()
    {
        this.driver = obj1.selectBrowser(driver, "Chrome");
        
    }
    
    @Test
    public void login()
    {
        driver.get("https://Link Goes here");
        
        long timetaken = (long) obj1.javatimeout(driver);
        wait = obj1.explicitWait(driver, (int) timetaken);
        
        WebElement signin = obj1.selectElement(wait, "//*[@id='txtSigninID']");
        obj1.sendtext(signin, "My Name");
            
        WebElement password = obj1.selectElement(wait, "//*[@id='txtPassword']");
        obj1.sendtext(password, "my password");
        
        WebElement submit = obj1.selectElement(wait, "//*[@name='btnSignIn']");
        obj1.clickElement(submit);
    }
    
    
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="com.abc.def.aaa.classa"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->