我正在嘗試獲取動態文本並顯示它,它將在while循環中執行。它會成功顯示文本,但不會在下一次迭代中一致顯示。Selenium:無法在第二個循環中獲取動態文本
已經在下拉元素單擊後給出了隱式等待權限,以便數據在UI上得到更新。但是我仍然沒有得到理想的輸出結果。還有什麼我失蹤,請讓我知道。 此外,當我打印arraylist res_arr的索引時,它輸出[]。 我的代碼:
while (i<list_size)
{
sl.getOptions().get(i).click();
driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
WebElement hcdata = driver.findElement(By.xpath("//form/div/div[3]/div[2]/div[1]/p"));
System.out.println("HCdata: "+hcdata.getText());
ar.add(hcdata.getText());
WebElement freq = driver.findElement(By.xpath("//form/div/div[3]/div[3]/div[1]/p"));
String freq_no = hcdata.getText().toString();
System.out.println("Frequency: "+freq_no);
ar.add(freq_no);
WebElement DT = driver.findElement(By.xpath("//form/div/div[3]/div[4]/div[1]/p"));
String DT_no = hcdata.getText();
System.out.println("DT no: "+DT_no);
ar.add(DT_no);
i++;
res_arr = indexOfAll(0,ar);
System.out.println("Inside arraylist result");
System.out.println(Arrays.toString(res_arr.toArray()));
}
}//end of try
catch(Throwable e){
System.out.println("Error found: "+e.getMessage());
}
輸出:
Size is 6
HCdata: 12,865
Frequency: 12,865
DT no: 12,865
Inside arraylist result
[]
HCdata:
Frequency:
DT no: 0
Inside arraylist result
[]
HCdata:
Frequency:
DT no: 0
Inside arraylist result
[]
HCdata:
Frequency:
DT no: 16,479
Inside arraylist result
[]
HCdata:
Frequency:
DT no: 275
Inside IndexofAll method
Inside arraylist result
[]
HCdata:
Frequency:
DT no:
Inside IndexofAll method
Inside arraylist result
[]
而不是使用隱含等待,我建議你用流利的等待等到文本不爲空,並給予超時。或者你可以創建幫助方法,當結果仍爲空時重試 類似 'while(!HCdata ||超時未達到){ 把你在這裏找到元素的代碼 }' 變化隱含的等待和findElement組合,並使用WebdriverWait 'WebDriverWait等待=新WebDriverWait(webdriver的,timeoutInSeconds); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(yourxpath)));' –