【发布时间】:2011-10-24 19:56:04
【问题描述】:
页面上有很长的图片列表。应用程序中有一个 AJAX“加载更多图像”按钮(位于页面底部),当用户向下滚动页面时会自动激活该按钮。 我想用 Selenium 将页面滚动到最后,并确保页面底部没有“加载更多图像”按钮。 脚本(可能有更优雅的解决方案,但这不是重点)
browser.execute_script("""
setInterval(function() {
window.scrollBy(0,50000);
}, 1000);
;""")
invisibleShowMoreCounter = 0;
while True:
if "" == browser.find_element_by_id("show_more").text:
invisibleShowMoreCounter = invisibleShowMoreCounter + 1
if (invisibleShowMoreCounter > 3): break
time.sleep(1)
它将页面滚动到底部,然后检查 3 秒内是否没有“show_more”元素(虽然不确定是否需要这个循环)。 所以事情是它成功地向下滚动页面但在此之后,它停留在 browser.find_element_by_id("show_more") 直到页面完全加载(包括图像),这需要很多时间。所以 DOM 就在那里,但是因为有很多图像,所以加载所有图像大约需要几分钟。 我不是 100% 确定这是因为页面没有完全加载,但它看起来很可能(所以它进入循环的第一次迭代,然后在 find_element_by_id 上停留几分钟,然后更进一步并成功完成。 问题是是否可以命令 find* 方法不等待所有图像完成下载,这样测试就不会花几分钟通过?
设置browser.implicitly_wait(1)(似乎与此相关)似乎没有帮助。
【问题讨论】:
标签: python selenium webdriver qa