我在一頁中有1200行的列表,我根據某些條件選擇行。大多數情況下,我的情況發生1000次,所以硒試圖逐一選擇1000行,但有一段時間它選擇500,800時間,1000時間。有沒有什麼辦法使它穩定?在硒中是否有任何穩定的方法來選擇1000+行
當我檢查我的條件時,它總是有正確的大小來選擇行。但硒不能始終如一地工作。
代碼:
public static List<String> listOfData;
public static int x=0;
driver.get(URL);
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(Xpath1)));
List<WebElement> TRcount = driver.findElements(By.tagName("tr"));
System.out.println(TRcount.size());
List<WebElement> TDcount = null;
if(TRcount.size()>0)
{
for(int i=2;i<TRcount.size();i++)
{
listOfData = new ArrayList<String>();
TDcount = TRcount.get(i).findElements(By.tagName("td"));
for(int j=0; j<TDcount.size(); j++)
{
if(TDcount.get(j).getText().equals("Loading..."))
{
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
listOfData.add(TDcount.get(j).getText());
}
if(TDcount.size()>0)
{
if(GlobalMethods.checkIfDataExists((listOfData)))
{
listOfTrueId.add(i);
x++;
}
}
}
int count=2;
for(int k = 0; k <= listOfTrueId.size(); k++)
{
Thread.sleep(3000);
TRcount.get(count).click();
//System.out.println(TDcount.get(0).getText() +" : "+ "Pass");
//TDcount.get(0).click();
count++;
}
}
這裏listOfTrueId是我的陣列上存儲只是沒有。的ID來獲得所有行的選擇。所以大多數情況下,我的尺寸接近1000,這是正確的。
TRCount總是正確的。問題是,當它檢查條件的listOfTrueId存在的數據,並做++
TRcount也列出元素,並幫助我從1數到TR
但是,當循環選擇行,它隨時停止。據我瞭解我的瀏覽器一次顯示12行,從下一個硒自動向下滾動,然後停在任何一行。
UPDATE:
我也是剛剛纔知道,問題是TD標籤數據加載,當它開始加載數據有文本稱爲「載入中...」,所以我的腳本得到這個「Loading ...」作爲TD的價值,並基於它選擇較少的行。所以我怎麼能告訴我的腳本,如果TD的價值是「Loading ...」然後等待一段時間再次檢查相同的TD獲取實際數據。
我已經在上面的腳本中隱含了等待,但這似乎沒有幫助。
爲什麼'sleep',爲什麼'count'? 'count = k',所以可以只是k。另外這個for循環並沒有真正地告訴發生了什麼。 –
@NorbertvanNobelen - 讓我分享完整的腳本。 –
保持它的相關點:) –