如何简短列表中包含WebElement

时间:2015-01-20 07:50:55

标签: java arrays sorting arraylist selenium-webdriver

我从HTML表中获得了一些价值。我可以打印这些值但无法找出按字母顺序排序的方法。

我用的代码 -

List<WebElement> lst = driver.findElements(By.xpath(".//*[@class='user-questions lines']/tbody/tr/td[2]"));
for(WebElement s : lst) {
    System.out.println(s.getText()); //This line prints the value
    String[] ss = new String[lst.size()];
    int i=0;
    if(s.getText() != null) {
        ss[i]=s.getText();
        System.out.println(ss[1]); // But here i am getting null
    }
    i++;
}

首先我尝试使用Collections.sort(lst)对其进行排序,但收到错误消息:

  

绑定不匹配:类型集合的通用方法sort(List)不适用于参数(List)。

然后我试着把字符串值放在一个String数组中,然后对它进行排序,但是当我试图将值放入String数组时,我得到null值

3 个答案:

答案 0 :(得分:1)

今天我陷入了同样的困境,并在今年年初发现这个问题。当我尝试解决方案时,我得到了NullPointerException。

我写了一个小代码,现在我可以缩短符合自然字母顺序的元素。这是代码 -

  //Here storing the WebElements in the List
  List<WebElement> lst  = driver.findElements(By.xpath("WebElement XPath"));
   //Here creating a String array
   String[] str = new String[lst.size()];
    for (int i = 0 ; i<str.length ; i++){
        str[i] = driver.findElements(By.xpath("WebElement XPath")).get(i).getText();
    }//for
    Arrays.sort(str);
    for(String strr: str){
        System.out.println(strr);
    }
    driver_1.close();
    driver_1.quit();

    }//try
    catch(Exception e){
    e.printStackTrace();    
    driver.close();
    driver.quit();  
    }//catch

首先,我将webelements存储在List中。然后我创建了一个用于排序的String数组。在第一个for循环中,我存储了我从网站获得的字符串。之后我使用Arrays.sort方法对它们进行了排序

在advance for循环中,我打印输出。

我可以看到问题已经很久了,如果在这段时间内你得到了更好的答案,请分享。

答案 1 :(得分:0)

您在System.out.println(ss[1]);获取空 这是因为:
 ss[i]=s.getText();始终放入ss[0],因为:
如果int i=0;之前。 所以ss[1]总是空着。

要解决此问题,请在int i=0;

之前加上for(WebElement s : lst)

答案 2 :(得分:0)

在foreach循环之外声明i。和sysout ss[i]。在您的第一个循环执行中,显然ss[1]将为null

另一种方法是:

List<WebElement> lst = driver.findElements(By.xpath(".//*[@class='user-questions lines']/tbody/tr/td[2]"));
String[] str = new String[lst.size()];
int i = 0;
for (WebElement ele : lst) {
    if(ele.getText()!=null)
        str[i] = ele.getText();
    i++;
}
Arrays.sort(str); // to sort the array of strings