【问题标题】:how to validate a list of strings are in alphabetical order or not in Selenium using java如何使用java在Selenium中验证字符串列表是否按字母顺序排列
【发布时间】:2016-02-25 11:18:38
【问题描述】:

有人知道如何验证字符串列表是按字母顺序排列还是不使用java。我尝试使用 compareTo(),但没有得到它。

* **仅用于String的验证。如果是打印“列表按字母顺序排列”和 不,打印“Not in order”

这里是代码:::

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class ValidationOfSelectDropDown_4 {

public static void main(String[] args) throws InterruptedException {

    WebDriver driver=new FirefoxDriver();
    driver.get("http://my.naukri.com/manager/createacc2.php?othersrcp=16201&err=1");
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.manage().window().maximize();

    WebElement single=driver.findElement(By.xpath("//select[@id='ugcourse']"));
    Select dd=new Select(single);

    String str=single.getText();
    System.out.println(str);

    }}

字符串str的O/p为:

选择

不追求毕业

文学学士

B.Arch

BCA

B.B.A

...直到选项结束

【问题讨论】:

  • 您可以让问题更简单:如果您已经知道如何从 webdriver 获取字符串列表,那么问题是“是按顺序排列的字符串列表”,而 webdriver 部分无关紧要。

标签: java selenium


【解决方案1】:

如果您已经知道如何从 webdriver 获取字符串列表(看起来就像您所做的那样),您可以通过将每个元素与前一个元素进行比较来检查列表的顺序:

if (!strings.isEmpty()) {
  Iterator<String> it = strings.iterator();
  String prev = it.next();
  while (it.hasNext()) {
    String next = it.next();
    if (prev.compareTo(next) > 0) {
      return false;
    }
    prev = next;
  }
}
return true;

如果列表很小且不关心内存,您也可以对列表进行排序并比较列表:

List<String> ordered = new ArrayList<>(strings);
Collections.sort(ordered);
boolean inOrder = ordered.equals(strings);

【讨论】:

    【解决方案2】:

    您要做的是将所有这些值放入一个 ArrayList 并检查该列表是否已排序。因此,根据这些值的分隔方式(我假设根据您给出的示例它们由新行分隔),只需执行以下操作:

    List<String> listOfValues = str.split("\n");
    

    然后通过 Guava 的 Ordering 方法检查列表是否排序:

    boolean sorted = Ordering.natural().isOrdered(list);
    

    然后根据 sorted 的值输出。

    注意:这篇文章是答案https://stackoverflow.com/a/3481842/2112089https://stackoverflow.com/a/3047142/2112089 的汇总

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 2012-01-31
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多