その最初の発生後にセットからレコードをスキップする方法 - セレン

Kaustubh:

私は、項目のリストがあるアプリケーションのビューを持っています。200件のレコードを持つ10ページは、ページごとに20件のレコード、言うがあります。私はunqiueユーザー数が割り当てられていたいです。ページごとに固有のレコードを取得することができ、以下のコードI'amから。しかし、私は、レコード全体で一意のユーザーエントリを取得したいです。ユーザー「ジャック」が発見された場合、同じユーザーが後のページで発見されたのであれば、たとえば、実行ので、私はそれがスキップされた取得したいながら。前もって感謝します!

脚本:

List<WebElement> efirstpagecount = driver.findElements(By.xpath("//*[@id='usersList']/tbody/tr/td[3]"));
Set<String> uniqueUsers = efirstpagecount.stream().map(WebElement::getText).map(String::trim).distinct().collect(Collectors.toSet());   
System.out.println("First page count: "+uniqueUsers.size());
アンドレイSuvorkov:

あなたはこのようなあなたのセットをマージすることができます:

set1.addAll(set2);

これは、SET2からSET1に明確なすべての要素を追加します。コードサンプル:

List<WebElement> efirstpagecount = driver.findElements(By.xpath("//*[@id='usersList']/tbody/tr/td[3]"));
Set<String> uniqueUsers = efirstpagecount.stream().map(WebElement::getText).map(String::trim).distinct().collect(Collectors.toSet());   
System.out.println("First page count: "+uniqueUsers.size());

List<WebElement> esecondpagecount = driver.findElements(By.xpath("//*[@id='usersList']/tbody/tr/td[3]"));
Set<String> uniqueUsers2 = esecondpagecount.stream().map(WebElement::getText).map(String::trim).distinct().collect(Collectors.toSet());
uniqueUsers.addAll(uniqueUsers2); // merge two sets
System.out.println("First and second page count: "+uniqueUsers.size());

あるいは、この:

Set<String> allUsers = new HashSet();
while(true){
  List<WebElement> users = driver.findElements(By.xpath("xpath"));
  allUsers.addAll(users.stream().map(WebElement::getText).map(String::trim).distinct().collect(Collectors.toSet()));
  // move to next page if exists, else break loop
}
System.out.println("All pages count: " + allUsers.size());

PSの性能はaddAll()O(N)です。

// implementation of addAll() method
public boolean addAll(Collection<? extends E> c) {
    boolean modified = false;
    for (E e : c)
        if (add(e))
            modified = true;
    return modified;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=219156&siteId=1