Selenium. 获取包含Ajax对象的动态页面内容
在我的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生成的内容。
有没有一个公开的链接可以让我们查看这个网站?