首页 > 解决方案 > 暂时阻止页面通过 Selenium WebDriver 中的 Ajax / Javascript 刷新?

问题描述

Selenium用来抓取网页。最初,当您导航到网页时,该页面包含大约 10 个项目。当您滚动到页面底部时,页面会不断加载更多项目(通过AJAX / Javascript),直到页面完全加载。页面完全加载后,我会从列表中的每个项目中抓取数据。

有时,我需要从页面中删除一个项目。这会导致页面完全重新加载/刷新到最初的 10 个项目的原始状态 - 迫使我反复滚动到页面末尾,这非常耗时。换句话说,如果页面总共有 500 个项目,我需要通过列表删除不同(和未知)位置的 50 个项目,我将需要重新加载大约 50 个项目的整个列表。500 项 50 次。

由于页面正在通过重新加载,ajax / js我认为我可以通过禁用Javscript此特定页面来解决此问题。我能够通过在stackoverflow上遵循这个答案来实现这一点。但是,这是第 22 条情况 - 因为一旦我禁用javascript页面,当我滚动到底部时将不再加载新项目。我需要首先通过加载页面上的所有项目Javascript,然后禁用js,以便在删除项目时页面不会自动刷新。

最初,我认为我可以滚动到页面末尾(js启用时),然后js在我点击页面底部时禁用,这样当我循环浏览页面上的项目并删除项目时,页面不会被强制刷新。但是,根据我的测试,我发现一旦js在页面加载之前启用,在导航到其他页面之前就不能再禁用它。

我的问题是:有没有办法让我在页面加载后暂时阻止(或禁用)Javascript执行,以便页面不刷新(但仍然允许我通过 滚动到页面末尾js)?

标签: javascriptjavaajaxseleniumselenium-webdriver

解决方案


推荐阅读