如何使用Selenium和Python等待加载元素数量

4

假设我正在使用选择器进行选择:

//img[@data-blabla]

我希望等待10个元素加载完毕,而不仅仅是一个。

这应该如何修改?我猜测使用下标[9]

WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.XPATH, '//img[@data-blabla][9]')))

@arundeepchohan 我该如何检查 len() 是否大于 9? - User
elem = yourwebdriver,然后 elem.size。应该打印出已加载的数量大小。 - Arundeep Chohan
@User 在xpath中需要括号(),尝试这个:(//img[@data-blabla])[9] - frianH
1个回答

1

为等待10个元素加载完毕,您可以使用lambda函数并且可以使用以下任意一种定位策略

  • 使用 >

    myLength = 9
    WebDriverWait(browser, 20).until(lambda browser: len(browser.find_elements_by_xpath("//img[@data-blabla]")) > int(myLength))
    
  • 使用 ==

    myLength = 10
    WebDriverWait(browser, 20).until(lambda browser: len(browser.find_elements_by_xpath("//img[@data-blabla]")) == int(myLength))
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接