簡體   English   中英

當硒中的下一個循環不存在數據時,如何打破“ while”條件

[英]How to break the 'while' condition when data is not present for the next loop in selenium

這是我的問題,我要進行供應商查找,必須閱讀供應商的搜索結果。此處的結果基於搜索過濾器(例如:供應商名稱開頭,結尾等)。 在這里,我們不知道供應商搜索結果的數量。 我正在使用滾動到下一個供應商的條件來充實供應商。 在這里,我無法打破獲取所有供應商時的while條件。 因此,請允許我給出如何向while循環中寫入適當條件的答案

try{
    int i=2;
    boolean ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed();
    while(ele==true){
        String path="//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]";    // Here i value starts from 2
        String txt=d.findElement(By.xpath(path)).getAttribute("title");
        System.out.println(txt);
        scrollBarHandle("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]");
        i++;
        ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed()
        Thread.sleep(1000);
        }
    }catch(Exception e){
        System.out.println(e.getMessage());
    }

輸出為:讀取所有吠叫信號后,不顯示任何此類元素消息。

org.openqa.selenium.NoSuchElementException:否這樣的元素:無法找到元素:{“ method”:“ xpath”,“ selector”:“ // table [@ id ='vendorTable'] / tbody / tr [9] / td [1]“}

在所有供應商閱讀完后如何打破while循環。

您首先可以找到此選擇器返回的元素編號,並在其上添加if條件:下面是代碼:

try{
            int i=2;
            boolean ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed();
            while(ele==true){
                String path="//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]";    // Here i value starts from 2
                List<WebElement> elements = driver.findElements(By.xpath(path));
                if (elements.size() == 0) {
                    break;
                }
                String txt=d.findElement(By.xpath(path)).getAttribute("title");
                System.out.println(txt);
                //scrollBarHandle("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]");
                i++;
                ele=d.findElement(By.xpath("//table[@id='vendorTable']/tbody/tr["+i+"]/td[1]")).isDisplayed()
                        Thread.sleep(1000);
            }
        }catch(Exception e){
            System.out.println(e.getMessage());
        }

希望它可以幫助您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM