我正在工作中进行自动化测试,但我陷入了一个场景。
我的第一个测试包括创建一个新的用户帐户,该帐户创建用户名和密码。 附注我的密码始终相同
我的第二个测试基本上是使用我在第一个测试中创建的用户名和密码作为用户登录。
此外,创建帐户后,数据库会更新,我可以连接到数据库并执行查询(从帐户中选择 user_name,其中密码 = 'pass123' order bycreated_dttm desc;)
因此,由于我能够执行并从数据库获取值,我如何获取该值并将其插入到我的用户名字段中以便以客户身份登录。
因为我陷入了这种情况,所以我总是必须使用在我的第一个 tc 中创建的不同用户名来编辑我的第二个测试用例。我希望我的测试脚本从数据库中获取用户名并将其自动插入到用户名字段中。
我对 Java 和自动化有点陌生,因此,任何类型的帮助都将受到高度赞赏。非常感谢!
最佳答案
您只需将从数据库读取的用户名值传递给Webdriver的sendKeys函数即可。例如,如果您已将数据库中的用户名值存储在字符串变量 user 中,并且使用 id 属性来识别用户名字段,则可以在中输入该值用户名字段使用以下内容:
driver.findElement(By.id("u")).sendKeys(user);
在上面的代码中,u是用户名字段的id。您可以将数据库访问代码移至单独的方法,如下所示:
public static String getUsernameFromDB() throws ClassNotFoundException, SQLException {
//Accessing driver from the JAR file
Class.forName("oracle.jdbc.OracleDriver");
System.out.println("Oracle JDBC driver loaded ok.");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@151.120.92.150:1602:pppst1","ppp_app","ppp_app_pppst1");
System.out.println("DB Connected Successfuly");
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery("select user_name from accounts where password = 'pass123' order by created_dttm desc;");
String account = null;
while(result.next()){
account = result.getString("USER_NAME");
System.out.println("BAID: " + account);
}
con.close();
return account;
}
您的测试用例代码将变为:
String username = getUsernameFromDB();
driver.findElement(By.id("u")).sendKeys(username);
关于java - 从数据库中获取值并将该值用作 Selenium Webdriver 中的输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41884296/