0

我正在为练习设置测试用例,并尝试从 XML 文件中为网站 url 提供参数,以及所需的浏览器(如果可用)。Switch 逻辑和 webdriver 命令看起来很可靠,但也许我错过了一些让它完全跳过它们的东西。应该在两种情况下都输出登录成功。

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

公共类 NewTest {

WebDriver 驱动程序;

@Test(dataProvider="getData") public void login(String username,String password) {
//登录应用程序的代码

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.
4

1 回答 1

0

新手来了 你说的测试跳过是什么意思?login() 中的操作没有被执行吗?我会将 sys.out 语句与 login() 一起检查代码是否正在执行。如何在页面加载后添加暂停?如何将硬编码值添加到用户名和密码字段以检查它是否工作正常?有时某些字段无法使用 Selenium 的 sendkeys 设置。需要使用JavascriptExecutor来设置字段值

于 2019-05-03T03:05:04.923 回答