python + selenium - 专注于进行无限滚动加载

时间:2018-02-24 23:56:07

标签: javascript python selenium

我正在从无限滚动网站的顶部抓取有限数量的项目。

links = driver.find_elements_by_xpath("//div[@class='fixed-recipe-card__info']//a")
while len(links)<100:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    links = driver.find_elements_by_xpath("//div[@class='fixed-recipe-card__info']//a")

当窗口处于活动状态时,这非常有用。但是,如果我将测试浏览器最小化,则不会加载新内容并且循环无限运行。我对硒很新,所以我不太清楚为什么。我怀疑有一个Javascript onChange没有被触发。是否有我应该添加到我的脚本的javascript命令,或者是否会导致新内容加载的其他selenium命令?

我正在使用Python 2.7,selenium和Chromedriver。示例网站是allrecipes.com

3 个答案:

答案 0 :(得分:1)

你是否因为忙于其他事而最小化它?一旦您的代码在视觉上执行您想要的操作并且避免此问题,您就可以使用无头模式。

答案 1 :(得分:0)

顺便说一下,如果最小化窗口是一个很大的问题,你应该尝试使用PhantomJs作为驱动程序。它基本上与chrome驱动程序的工作方式相同,但它不使用浏览器,因此所有代码都将在背景中运行,它对我有用。它可能对你有用,编码愉快! http://phantomjs.org

答案 2 :(得分:0)

正如您提到最小化的测试浏览器,新内容无法加载非常需要 Selenium需要关注 浏览窗口< / strong>与DOM元素进行交互。

原因

此时值得一提的是,当焦点丢失 时,网页可以更改其内容。您需要考虑事实 Selenium主要用于测试

解决方案

理想情况下, 自动化测试执行 网页摘要 必须在隔离的 测试环境 最好在 测试实验室 中配置所需的硬件软件配置必须免于 手动干预