我有一个包含动态生成表格的页面(行是动态生成的)。在我的测试中我不知道会有多少行。我只是从所有行创建一个字典,然后与另一个字典进行比较。 但是该表具有延迟加载,因此当行数较高时,应该存在的某些行在第一眼看不到“”但是需要向下滚动才能得到它们。所以那些行不包含在我的字典中然后它失败了...... 但同样,我不知道何时滚动(如果表中有少量行,无处可滚动)以及滚动的位置(我不指望任何特定元素),期望的行数等等。
有谁知道如何处理这样的情况?因为我没有。 :-(谢谢!
答案 0 :(得分:1)
您可以尝试解决此问题,如下所示:
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.common.exceptions import TimeoutException
# Get the current number of rows
current_rows_number = len(driver.find_elements_by_xpath('//tr'))
while True:
# Scroll down to make new XHR (request more table rows)
driver.find_element_by_tag_name('body').send_keys(Keys.END)
try:
# Wait until number of rows increased
wait(driver, 5).until(lambda: len(driver.find_elements_by_xpath('//tr')) > current_rows_number)
# Update variable with current rows number
current_rows_number = len(driver.find_elements_by_xpath('//tr'))
# If number of rows remains the same after 5 seconds passed, break the loop
# as there no more rows to receive
except TimeoutException:
break
# Now you can scrape the entire table
P.S。不幸的是,我不熟悉RobotFramework
,因此上面的代码是纯Selenium
+ Python
。我希望它可以很容易地解释:)