当前位置: 首页 > 知识库问答 >
问题:

Selenium测试未正确失败-通过配置失败而不是“正确”失败

楚帅
2023-03-14
package Links;

import org.testng.annotations.*;
import static org.testng.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestArea {
    private WebDriver driver;
    private StringBuffer verificationErrors = new StringBuffer();

@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
    System.setProperty("webdriver.gecko.driver", "C:\\Automation\\SeleniumFiles\\Browser Drivers\\geckodriver.exe");
    driver = new FirefoxDriver();

}

@Test
public void Example() throws Exception {
    driver.get(
            "http://MyWebsite");
    try {
        assertTrue(isElementPresent(
                By.xpath("The Element I want look for ")));

    } catch (Error e) {
        verificationErrors.append(e.toString());
    }
}
// -------------------------------------------------------------------------------------

@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

private boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}
}

“通过”测试但配置失败的示例。

配置失败:@afterclass tearDown java.lang.assertionerror:java.lang.assertionerror:应为[true],但在org.testng.assert.fail(assert.java:96)在links.testarea.tearDown(Testarea.java:96)在sun.reflect.nativeMethodAccessorImpl.Invoke0(本机方法)在sun.reflect.nativeMethodAccessorImpl.Invoke(未知源)在sun.reflect.delegatingmethodAccessorImpl.Invoke(未知源)在org.testng.internal.methodInvocationHelper.java:124)在java.lang.reflect.methodInvoke G.internal.MethodInvocationHelper.InvokeMethod考虑超时(MethodInvocationHelper.java:59)在org.testng.internal.Invoker.InvokeConfigurationMethod(Invoker.java:455)在org.testng.internal.Invoker.InvokeConfigurations(Invoker.java:222)在org.testng.internal.Invoker.InvokeConfigurations(Invoker.java:142)在org.testmethodWorker.InvokeAfterClassMethods(TestMethodWorker.214)在org.testng.internal.TestMethodorg.testng.testrunner.privaterun(testrunner.java:648)org.testng.testrunner.run(testrunner.java:505)org.testng.suiterunner.runtest(suiterunner.java:455)org.testng.suiterunner.runsequency(suiterunner.java:450)org.testng.suiterunner.privaterun(suiterunner.privaterun(suiterunner.java:415)org.testng.suiterunner.run(suiterunner.java:364)org.testng.suiterunner.runsuite(unnerworker.java:52)在org.testng.suiterunnerworker.run(suiterunnerworker.java:84)在org.testng.testng.runsuites(testng.java:1208)在org.testng.testng.runsuites(testng.java:1137)在org.testng.testng.runsuites(testng.java:1049)在org.testng.testng.runsuites(testng.java:1017)在org.testng.remote.abstractremotetestng.run(abstractremotetestng.java:114)在org.testn g.remote.remoteTestng.initandRun(remoteTestng.java:251)在org.testng.remote.remoteTestng.main(remoteTestng.java:77)

已通过:示例

============================================================================================================默认测试运行:1次,失败:0次,跳过:

==================================================================默认套件运行的测试总数:1,失败:0,跳过:0配置失败:1,跳过:

当测试可以找到元素时,我没有得到配置问题。

事先非常感谢

共有1个答案

贲绪
2023-03-14

您的测试代码中存在一些问题。

默认情况下,TestNG在以下情况下使@test方法失败:

  • 断言失败
  • 测试方法引发异常。
import org.testng.annotations.*; 
import static org.testng.Assert.*; 
import org.openqa.selenium.*; 
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestArea { 
    private WebDriver driver; 

    @BeforeClass(alwaysRun = true) 
    public void setUp() throws Exception { 
        System.setProperty("webdriver.gecko.driver", "C:\\Automation\\SeleniumFiles\\Browser Drivers\\geckodriver.exe"); 
        driver = new FirefoxDriver();
    }

    @Test 
    public void Example() throws Exception { 
        driver.get( "http://MyWebsite"); 
        assertTrue(isElementPresent( By.xpath("The Element I want look for ")));
    } 

    @AfterClass(alwaysRun = true) 
    public void tearDown() throws Exception { 
        driver.quit(); 
    }

    private boolean isElementPresent(By by) { 
        try { 
            driver.findElement(by); 
            return true; 
        } catch (NoSuchElementException e) { 
            return false; 
        } 
    } 
}
 类似资料:
  • 一个“通过”测试但配置失败的示例。 失败的配置:@afterclass tearDown java.lang.assertionerror:java.lang.assertionerror:expected[true],但在)在org.testng.internal.MethodInvocationHelper.invokeMethodCommissioningTimeout(methodInvo

  • 问题内容: 我正在使用Django 1.7和django-rest-framework。 我制作了一个API,该API返回了一些JSON数据,并将其放入了我的 settings.py 当我进行GET调用时,它将返回我所有的数据,但是当我尝试使用PUT / PATCH时,我得到: 仅当我登录时才会发生这种情况,如果我是匿名用户,则可以正确进行PUT / PATCH。 我尝试过,但遇到错误,我将设置包

  • 问题内容: 我已经设置了一个Jenkins服务器来运行Selenium测试。生成脚本是用Ant(CentOS 6.3上的v 1.7.1)编写的,并且测试在Sauce Labs上运行。我通过外壳执行构建: 问题是测试失败时,詹金斯(Jenkins)将其标记为成功。我可以通过将设置为来避免这种情况,请参阅: 但是,这并不理想,因为Jenkins会在遇到第一个故障时终止构建。构建完成后是否可以检查失败,

  • 安装程序:我有一个扩展IRetryAnalyzer的类,并实现了一个简单的重试逻辑,覆盖了以下方法:public boolean retry(ITestResult result){ 提前道谢。

  • 从多个github讨论中,我发现这是一个windows网络错误。 这个问题有解决办法吗?我应该降级docker版本还是安装其他东西。 我正在使用windows容器。运行docker版本客户端:版本:17.06.0-CE API版本:1.30 Go版本:Go1.8.3 Git提交:02C1D87构建:周五6月23日21:30:30 2017 OS/arch:Windows/amd64 如何解决lin

  • 我已经设置了一个Jenkins服务器来运行Selenium测试。构建脚本是用Ant(CentOS 6.3上的V1.7.1)编写的,测试在Sauce实验室上运行。我通过shell执行构建: