Selenium. 获取包含Ajax对象的动态页面内容

0 投票
2 回答
2511 浏览
提问于 2025-04-18 13:20

在我的Selenium测试中,我需要在所有Ajax对象加载完成后,简单地保存网页内容。我找到了一些关于如何等待Ajax加载的答案,但没有找到一个能有效保存包含Ajax内容的整个页面的解决方案。这里有个示例代码:

with contextlib.closing(webdriver.Chrome()) as driver:
    driver.get(url)  # Load page

    # Just as an example, wait manually until all Ajax objects are loaded.
    raw_input("Done?")

    # Save whole page
    text = driver.page_source
    # text contains original page data, no Ajax elements

我想我需要告诉网页驱动程序去和浏览器检查一下,并更新页面源代码属性。有没有这样的API?你是怎么保存包含Ajax对象的页面的?

补充:谢谢你的回复!在重新测试一个示例Ajax网站后,我发现上面的代码是有效的。问题在于该网站使用了框架,因此我需要切换到正确的框架。这里有另一篇帖子回答了这个问题: #document是什么意思?

2 个回答

-1

打开网页后,刷新一下页面,然后获取网页的源代码。

用这个命令来刷新页面:driver.refresh()

接着,用这个命令来获取网页的源代码:text = driver.page_source

0

page_source应该返回当前页面的HTML内容,并且还要包含页面加载后通过AJAX生成的任何HTML。你不需要调用不同的方法来获取AJAX生成的内容。

有没有一个公开的链接可以让我们查看这个网站?

撰写回答