2016-09-28 29 views
4

我想跳過GoTop類div並繼續計算父類中div的數量。繼續使用硒webdriver跳過一個div後計算DIVS

<div class="parent"> 
     <div> 
     <div> 
     <div> 
     <div> 
     <div> 
     <div class="GoTop"> 
     <div> 
     some more div's ...... 
    </div> 

我曾嘗試以下,但所有我得到是大小爲5,請大家幫忙

size = driver.findElements(By.xpath("//div[@class='parent']/div [not(contains(@class,'GoTop'))]")).size(); 

回答

0

你試過的代碼看起來是正確的,我想你應該嘗試使用WebDriverWait等到的div元素存在與嘗試的定位器。

我會建議您嘗試使用By.cssSelector()實現下同 -

WebDriverWait wait = WebDriverWait(driver, 10); 
int size = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector("div.parent > div:not(.GoTop)"))).size(); 

編輯: - 如果你仍然得到比目前總額少的元素,你可以嘗試使用ExpectedCinditions.numberOfElementsToBeMoreThan這將等待直到找到的元素的總數大於給定數目如下等於或更多: -

WebDriverWait wait = WebDriverWait(driver, 10); 
int size = wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(By.cssSelector("div.parent > div:not(.GoTop)"), 6)).size(); 
+0

或者用如下的xpath代替'// DIV [@類=「父」] /格[否(@類='GOTOP 「)]'。 – testerjoe2

+0

我們如何知道所有的div何時加載? – testerjoe2

+1

@ testerjoe2如果這些div通過ajax加載等待ajax完成其他方式,那麼除了實現一些硬代碼等外,沒有直接的方法可以知道所有div或加載或不加載。謝謝 –