[英]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.