我的XML文件似乎没有将值推送到我的代码中。导致我的测试被跳过

时间:2019-05-02 19:23:38

标签: selenium-webdriver automated-tests testng.xml

我正在设置测试用例以进行练习,并尝试从XML文件中获取网站网址和所需浏览器(如果有)的参数。 Switch逻辑和webdriver命令看起来很稳定,但是也许我错过了一些使它完全跳过它们的东西。应该两次都输出成功登录的信息。

过去,我只是简单地将数据作为变量输入,这是我第一次尝试使用xml处理数据注入。

公共类NewTest {

WebDriver驱动程序;

@Test(dataProvider =“ getData”) 公共无效登录(字符串用户名,字符串密码)       {
           //登录到应用程序的代码

driver.findElement(By.xpath("//*[@id=\'myNavbar\']/ul/li[4]/a")).click();
driver.findElement(By.id("usernameLogin")).sendKeys(username);
driver.findElement(By.id("passwordLogin")).sendKeys(password);
driver.findElement(By.id("login")).click();

   try
            {
                 //verifying the presence of webelement
````````````````````````````````````````````
    new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.id("topMenu2")));
    System.out.println("login success");
                }
    catch(Exception e)
                {
    System.out.println("Login failure");

                }
    driver.findElement(By.id("topMenu2")).click();

          }


  @DataProvider
  public Object[][]getData() {
      Object[][]data=new Object[2][2];
      data[0][0]="pgGru";
      data[0][1]="freezeray";
      data[1][0]="pgAlmacho";
      data[1][1]="freezeray";
      return data;  
  }


  @BeforeSuite  
  @Parameters({ "browsername", "url" })
  public void setup(@Optional("Firefox")String browsername,String url) {    
    switch (browsername) {
    case "IE":
    WebDriver driver1;
    driver1 = new InternetExplorerDriver();
    System.setProperty("webdriver.IEDriverServer.driver", "D:\\Jarrrs\\Drivers\\IEDriverServer_win32");
    driver1.get(url);
    break;
    case "Firefox":
    WebDriver driver2;
    driver2 = new FirefoxDriver();
    System.setProperty("webdriver.geckodriver.driver","D:\\Jarrrs\\Drivers\\gecfkoDriver_win32");
    driver2.get(url);
    break;
    case "chrome":
    WebDriver driver3;
    driver3 = new ChromeDriver();
    System.setProperty("webdriver.chrome.driver, ","D:\\Jarrrs\\Drivers\\chromedriver_win32\\chromedriver.exe");
    driver3.get(url);
    break;  
    }   
  }


  @AfterSuite
  public void tearDown() {
    driver.quit();    
  }
}

Right now the output is it is skipping the test cases for login and password
Expecting two passed or failed tests. Either one would be nice.

1 个答案:

答案 0 :(得分:0)

新手在这里。您是说测试跳过了什么? login()中的动作是否未执行?我会将sys.out语句与login()一起使用,以检查代码是否正在执行。页面加载后如何添加暂停?如何在用户名和密码字段中添加硬编码值以检查其是否工作正常? 有时某些字段不能通过使用Selenium的sendkey来设置。需要使用JavascriptExecutor设置字段值