2016-09-28 70 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或加载或不加载。谢谢 –