需要在控制台中打印前三个值

时间:2016-06-13 11:35:35

标签: java selenium-webdriver

我只是通过XPath找到元素(大约100个浮点值)并使用System.Out将它们打印在控制台上。现在我需要对它们进行排序并从中打印前三个值。请帮助我这方面。 感谢

2 个答案:

答案 0 :(得分:0)

由于您正在使用SeleniumWebdriver,您可能将其作为数据结构:List<WebElement>

列表是java.util.Collection框架的一部分,因此实现排序并不是很难。如果list包含List<WebElement>,并且您想要排序的浮点值位于名为toSortAfter的属性中,则此类操作可能有效:

Collections.sort(list, new Comparator<WebElement>(){
@Override
public int compare(WebElement e1, WebElement e2){
    String fl1Str = e1.getAttribute("toSortAfter");
    String fl2Str = e2.getAttribute("toSortAfter");

    if (fl1Str != null && fl2Str != null){
       float f1 = Float.parseFloat(fl1Str);
       float f2 = Float.parseFloat(fl2Str);
       if (f1 < f2){
         return -1;
       }
       else if (f1 > f2) {
         return 1;
       }
    }
    return 0;
}
});

我对感兴趣的读者更好地处理异常...另外,请注意我从头脑中写出来并且没有Java编译器。所以可能存在语法错误或其他错误。

注意:

如果您不了解HMTL节点,则无法再为您提供帮助。可能是,不同地调用属性,浮点值不是完全属性。如果它是Elements的内容,您可以使用WebElement.getText()方法访问它。

答案 1 :(得分:0)

我不知道selenium,我的代码与java有关。如果你的浮点数是这样的字符串(5.3 6.366),你可以使用下面的代码:

String floatNumber = "5.3 6.366";
String[] numbers = floatNumber.split(" ");
Arrays.sort(numbers);
for(int i=0; i<numbers.length;i++){
    System.out.println(numbers[i]);
}