WebDriver - 无法找到动态范围属性

时间:2018-05-23 23:39:45

标签: selenium selenium-webdriver

我目前正在测试的网站从数据库及其动态中获取价值。我需要能够从DB中获取值并根据UI中存在的不是静态的内容来验证。我试图验证的文本如下,为此,我需要通过比较DB中的数据和屏幕上显示的内容来识别元素并验证文本。此示例中的特定文本是"资源"。在同一屏幕中使用不同的值重复相同的跨度数次。请帮助我如何识别元素以及验证DB。我是selenium WebDriver的新手。

Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

2 个答案:

答案 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);

    }
}

对不起代码是从头开始写的,也许有一些错误,基本上我会采用这种方法。

希望它有所帮助,