我尝试使用变量' optionsList'将字符串值存储在列表中。但它会抛出NullPointer异常。可以请一些人帮我解决这个问题。
以下是代码:
public static void CheckOptionsPresent(String s1)抛出异常 { 尝试{
List optionsList = null;
webDriver.findElement(By.cssSelector("article.ContactInfo.active div.half-left.contactInfo div.idProvinceOfIssuance button")));
webDriver.findElement(By.cssSelector("article.ContactInfo.active div.half-left.contactInfo div.idProvinceOfIssuance button")).click();
List<WebElement> list = webDriver.findElements(By.cssSelector("article.ContactInfo.active div.half-left.contactInfo div.idProvinceOfIssuance div ul li"));
int listcount = list.size();
System.out.println(listcount);
String options[]=new String[listcount];
for (int i=3; i<=listcount; i++ )
{
options[i-3] = webDriver.findElement(By.cssSelector("article.ContactInfo.active div.half-left.contactInfo div.idProvinceOfIssuance div ul li:nth-child("+i+") a span")).getText();
System.out.println(options[i-3]);
webDriver.findElement(By.cssSelector("article.ContactInfo.active div.half-left.contactInfo div.idProvinceOfIssuance div ul li:nth-child("+i+") a span")));
optionsList = Arrays.asList(options);
}
System.out.println(optionsList);
optionsList.removeAll(Collections.singleton(null));
Collections.sort(optionsList);
System.out.println("Sorted List:" + optionsList);
}
答案 0 :(得分:1)
这是String的列表。您应该使用Collections.sort(optionsList,String.CASE_INSENSITIVE_ORDER)
答案 1 :(得分:0)
以下是您的简化版本,以下工作正常。
public static void main(String[] args) {
List optionsList = null;
String options[] = new String[3];// listcount];
options[0] = "cat";
options[1] = "dog";
options[2] = "alpha";
optionsList = Arrays.asList(options);
System.out.println(optionsList);
optionsList.removeAll(Collections.singleton(null));
Collections.sort(optionsList);
System.out.println("Sorted List:" + optionsList);
}
我认为问题在于您正在阅读选项[]的值。
尝试缩小问题范围我很确定它会起作用。