我目前正在测试的网站从数据库及其动态中获取价值。我需要能够从DB中获取值并根据UI中存在的不是静态的内容来验证。我试图验证的文本如下,为此,我需要通过比较DB中的数据和屏幕上显示的内容来识别元素并验证文本。此示例中的特定文本是"资源"。在同一屏幕中使用不同的值重复相同的跨度数次。请帮助我如何识别元素以及验证DB。我是selenium WebDriver的新手。
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
答案 0 :(得分:0)
如果跨度值“资源”每次都是动态的,请尝试通过以下方式检索它:
driver.findElement(By.xpath("//span[@class='card-title grey-text']")).getText();
答案 1 :(得分:0)
您可以收集列表中的所有范围并根据数据库值进行验证:
int iCnt=0;
List<String> listDB = new ArrayList();
public List<String> DBconnection(){
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/t", "", "");
Statement st = con.createStatement();
String sql = ("SELECT * FROM table ORDER BY id;");
ResultSet rs = st.executeQuery(sql);
if(rs.next()) {
listDB.add(rs.getString("second_column_name"));
}
con.close();
return list;
}
//测试部分
public void testAginstDb(List<String> listDB){
List<WebElement> listSpan =
driver.findElement(By.cssSelector("span.card-title.grey-text"));
for(String itemDb : listDB){
for (WebElement item : listSpan) {
if(item.getText().equals(rs.value())){
iCnt+=1;
break;
}
}
Assert.equals(list.size(), iCNT);
}
}
对不起代码是从头开始写的,也许有一些错误,基本上我会采用这种方法。
希望它有所帮助,