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

标签 python selenium webdriver

页面上有一长串图片。应用程序中有一个 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/

相关文章:

python - float 对象不可调用

python - 如何在 pandas 中将 m×m 数据帧转换为 m*m×3 数据帧?

linux - linux 中的 IE11 webdriver 是否支持 selenium 测试?

java - 使用 Java 的 Selenium WebDriver(又名 Selenium2)中的 getPageSource()

selenium - NoSuchElementException,Selenium 无法定位元素

java - WebDriver - 使用 Java 等待元素

python - 使用 numpy 调整图像大小

python - 在 Python 中更改字母后检测外部硬盘驱动器

java - 如何使用 Maven 使用 Selenium 3.4.0 启动 FireFoxDriver?

javascript - 如何使用 webdriverIO 访问站点 JavaScript 函数