【问题标题】:Assertion is not working excel based data driven testing selenium web driver java断言不起作用基于 excel 的数据驱动测试 selenium web 驱动程序 java
【发布时间】:2016-02-19 16:04:29
【问题描述】:

我正在尝试通过验证登录操作后主页上是否存在文本来验证用户是否能够登录。但是在登录操作之后,执行不会读取主页上是否存在文本的断言代码。但是,整体测试执行成功运行,但在执行期间它跳过了断言。请帮我找出我在这里遗漏的任何东西。

这是我的代码:

package com.provider;

import java.io.File;
import jxl.Sheet;
import jxl.Workbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;



public class ProApp extends OneClass {

    Workbook wb;
    Sheet sh1;
    int numrow;
    String uname;
    String password1;

    @Test
    public void oneTimeSetUp() throws InterruptedException {


    driver.manage().window().maximize();
    driver.get("xyz.com");
    Thread.sleep(1000);
    driver.findElement(By.xpath("//*[@id='app']/div/main/section/ul/li[1]/a")).click();
    Thread.sleep(1000);

    }


    @Test(dataProvider="testdata")
    public void testFireFox(String uname,String password1) throws InterruptedException

    {

    driver.findElement(By.xpath("//input[@name='username']")).clear();
    Thread.sleep(1000);
    driver.findElement(By.xpath("//input[@name='username']")).sendKeys(uname);
    Thread.sleep(1000);
    driver.findElement(By.xpath("//input[@name='password']")).clear();
    Thread.sleep(1000);
    driver.findElement(By.xpath("//input[@name='password']")).sendKeys(password1);
    Thread.sleep(1000);
    driver.findElement(By.xpath("//button[@name='loginButton']")).click();
    Thread.sleep(1000);

    }


    @Test
    public void loginVerify() {

        Assert.assertEquals("Wel Come to Testing World!", driver.findElement(By.xpath("//*[@id='app']/div/header/nav[1]/div/div/span/span")).getText());

    }   

    @Test
    public void logonActionVerify() {   
    WebElement DashboardHeader = driver.findElement(By.xpath("//*    [@id='app']/div/header/nav[1]/div/div/span/span"));
    DashboardHeader.getText().equals("Wel Come to Testing World!");




    @DataProvider(name="testdata")
    public Object[][] TestDataFeed(){

    try {

    // load workbook
    wb=Workbook.getWorkbook(new File("C://File//Book2.xls"));

    // load sheet in my case I am referring to first sheet only
    sh1= wb.getSheet(0);

    // get number of rows so that we can run loop based on this
    numrow=  sh1.getRows();
    }
    catch (Exception e)

    {
    e.printStackTrace();
    }

    // Create 2 D array and pass row and columns
    Object [][] logindata=new Object[numrow][sh1.getColumns()];

    // This will run a loop and each iteration  it will fetch new row
    for(int i=0;i<numrow;i++){

    // Fetch first row username
        logindata[i][0]=sh1.getCell(0,i).getContents();
    // Fetch first row password
        logindata[i][1]=sh1.getCell(1,i).getContents();

    }

    // Return 2d array object so that test script can use the same
    return logindata;
    }

    } 

【问题讨论】:

  • 如果您将断言更改为Assert.fail(),一切都会通过吗?
  • 我使用 Assert.fail() 如下:@Test public void loginVerify() { driver.findElement(By.xpath("//*[@id='app']/div/header /nav[1]/div/div/span/spa‌​n")).getText(); Assert.fail("欢迎来到测试世界!");让我知道你和我在同一页上。但是,测试仍然失败。错误信息显示为:org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//*[@id='app']/div/header/nav[ 1]/div/div/span/span"}

标签: java selenium testng assertion jxl


【解决方案1】:

请指定每个@Test 方法按指定顺序执行的优先级。

 @Test( priority = 1 )
 public void testA1() {
  System.out.println("testA1");
 }

 @Test( priority = 2 )
 public void testA2() {
  System.out.println("testA2");
}

我希望 loginVerify 在这些设置和登录之前执行,因为 testng 主要按字母顺序调用方法。

如果上述答案不起作用,请完全发布结果或异常以更好地理解。

谢谢你, 壁画G

【讨论】:

  • 如何为 @Test(dataProvider="testdata") 指定优先级?我尝试像这样指定优先级:@Test(dataProvider="testdata") (priority=2) 但是代码中显示错误。 “这一行的多个标记 - 标记上的语法错误“)”,[预期 - 语法错误,插入“]”以完成 ArrayAccess - 语法错误,插入“)”以完成修饰符”我尝试了此处提到的所有建议,但错误是不会消失。
  • 这样试试 @Test(dataProvider="getData", priority=1) 谢谢
  • 我根据您的建议更新了指定@test 优先级,并保留了我最初问题中提到的旧代码,这次执行执行了断言测试。谢谢!壁画。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多