gpt4 book ai didi

python - 如何只等待 DOM 加载 Selenium(无图像)

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:12 25 4
gpt4 key购买 nike

页面上有一长串图片。应用程序中有一个 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)(这似乎与此相关)似乎没有帮助。

最佳答案

您可以等待浏览器/文档状态变为交互状态。也就是等待js条件

document.readyState='interactive'

关于python - 如何只等待 DOM 加载 Selenium(无图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com