用于验证 table 搜索结果的客户 Selenium webdriver java 方法
Customer Selenium webdriver java method for validating table search results
我想在基页对象中创建一个自定义方法,使我能够在搜索后验证动态 table 中返回的结果。
我有下面的方法..
它将 WebElement table 作为参数,这是我要验证的列名称和我希望该列的一行返回的预期值。
我正在尝试查找名称为 columnName 的列的列索引,并将其分配给一个名为 searchedColIndex 的变量,然后使用它来获取该列下返回的所有值,然后验证是否为预期结果在列表中。
但是我不确定如何获取列的索引。
而且我似乎从来没有进入 if 语句,即使当我打印 column.getText() 和 columnName 来控制值是正确的并且应该匹配其中一列时,但是 if 语句是从未评估为真。
public void validateTableData2(WebElement table,String columnName, String expectedSearchResult){
List<WebElement> tableRows = table.findElements(By.xpath(".//tr"));
List<WebElement> tableColumns = table.findElements(By.tagName("th"));
int searchedColIndex = 1;
for (WebElement column : tableColumns) {
if(column.getText().trim() == columnName.trim()){
System.out.println("We don't get in this if statement");
System.out.println("The values in column headers are available as if I print column.getText() then it does return correct column headings");
//Not sure how I can assign the index of the column I am interested in
//column.getText() does
}
}
List<String> returnedVals = new ArrayList<String>();
for (int i = 1; i < tableRows.size(); i++) {
String returnedVal = table.findElement(By.xpath("./tbody/tr["+i+"]/td["+searchedColIndex+"]")).getText();
returnedVals.add(returnedVal);
}
Assert.assertTrue(returnedVals.contains(expectedSearchResult));
}
如有任何帮助,我们将不胜感激。
对于你的第二个问题,使用 equals() 而不是 ==,那么你应该进入 if 语句。
我想出了下面的方法,它似乎有效,虽然可能不适用于每个 table 我尝试将它与 ..
一起使用
public void validateTableData2(WebElement table,String columnName, String expectedSearchResult){
List<WebElement> tableRows = table.findElements(By.xpath(".//tr"));
System.out.println("Col name is " +columnName);
int searchedColIndex = table.findElements(By.xpath("//thead/tr/th/a[text()='"+columnName+"']/../preceding-sibling::th")).size()+1;
List<String> returnedVals = new ArrayList<String>();
for (int i = 1; i < tableRows.size(); i++) {
String returnedVal = table.findElement(By.xpath("./tbody/tr["+i+"]/td["+searchedColIndex+"]")).getText();
System.out.println("Returned val is "+returnedVal);
returnedVals.add(returnedVal);
}
Assert.assertTrue(returnedVals.contains(expectedSearchResult));
}
我想在基页对象中创建一个自定义方法,使我能够在搜索后验证动态 table 中返回的结果。
我有下面的方法..
它将 WebElement table 作为参数,这是我要验证的列名称和我希望该列的一行返回的预期值。
我正在尝试查找名称为 columnName 的列的列索引,并将其分配给一个名为 searchedColIndex 的变量,然后使用它来获取该列下返回的所有值,然后验证是否为预期结果在列表中。
但是我不确定如何获取列的索引。
而且我似乎从来没有进入 if 语句,即使当我打印 column.getText() 和 columnName 来控制值是正确的并且应该匹配其中一列时,但是 if 语句是从未评估为真。
public void validateTableData2(WebElement table,String columnName, String expectedSearchResult){
List<WebElement> tableRows = table.findElements(By.xpath(".//tr"));
List<WebElement> tableColumns = table.findElements(By.tagName("th"));
int searchedColIndex = 1;
for (WebElement column : tableColumns) {
if(column.getText().trim() == columnName.trim()){
System.out.println("We don't get in this if statement");
System.out.println("The values in column headers are available as if I print column.getText() then it does return correct column headings");
//Not sure how I can assign the index of the column I am interested in
//column.getText() does
}
}
List<String> returnedVals = new ArrayList<String>();
for (int i = 1; i < tableRows.size(); i++) {
String returnedVal = table.findElement(By.xpath("./tbody/tr["+i+"]/td["+searchedColIndex+"]")).getText();
returnedVals.add(returnedVal);
}
Assert.assertTrue(returnedVals.contains(expectedSearchResult));
}
如有任何帮助,我们将不胜感激。
对于你的第二个问题,使用 equals() 而不是 ==,那么你应该进入 if 语句。
我想出了下面的方法,它似乎有效,虽然可能不适用于每个 table 我尝试将它与 ..
一起使用public void validateTableData2(WebElement table,String columnName, String expectedSearchResult){
List<WebElement> tableRows = table.findElements(By.xpath(".//tr"));
System.out.println("Col name is " +columnName);
int searchedColIndex = table.findElements(By.xpath("//thead/tr/th/a[text()='"+columnName+"']/../preceding-sibling::th")).size()+1;
List<String> returnedVals = new ArrayList<String>();
for (int i = 1; i < tableRows.size(); i++) {
String returnedVal = table.findElement(By.xpath("./tbody/tr["+i+"]/td["+searchedColIndex+"]")).getText();
System.out.println("Returned val is "+returnedVal);
returnedVals.add(returnedVal);
}
Assert.assertTrue(returnedVals.contains(expectedSearchResult));
}