我想知道保存Selenium访问网站时检索到的所有文件的最佳方法是什么。换句话说,当Selenium访问http://www.google.com时,我想保存HTML,JavaScript(包括src标记中引用的脚本),图像以及iframe中包含的可能内容。如何才能做到这一点?
我知道getHTMLSource()将返回主框架主体中的HTML内容,但是如何扩展它以下载再次呈现该页面所需的完整文件集。 提前谢谢!
答案 0 :(得分:7)
Selenium不是为此设计的,你可以:
getHtmlSource
并解析生成的HTML以获取对外部文件的引用,然后您可以在Selenium之外下载和存储这些文件。 你有什么理由想使用Selenium吗?这是您的测试策略的一部分,还是只是想找到一个可以创建页面离线副本的工具?
答案 1 :(得分:1)
一个好的工具是http://www.httrack.com/,Selenium没有提供任何API。如果您需要在selenium中保存测试用例中页面的完整内容,也许可以将httrack作为命令行工具执行。
由于
答案 2 :(得分:0)
如果你真的想使用Selenium,那么你可以做的是模仿Ctrl+S
来保存页面,但是它更加努力/困难(也取决于操作系统)模仿按下{{1}或者更改要保存网页及其内容的位置。
我想与Selenium做同样的事情,但意识到我可以使用像Enter
这样的工具,我真的不需要只使用Selenium ..所以我最终使用{{1它真的很强大,它完全符合我的需要。
这是您使用Python脚本中的wget
执行此操作的方法:
wget
传递的args只是为了让您可以离线查看该页面,就好像您仍然在线一样。
wget
答案 3 :(得分:0)
Selenium唯一用于下载源内容的内置方法是
driver = webdriver.Chrome()
driver.get('www.someurl.com')
page_source = driver.page_source
但是,这并不会像在网页上使用ctrl + s那样下载所有图像,css和js脚本。因此,在导航至Algorithmically所述的网页后,您需要模拟ctr + s键。
我做了一个要点来说明那是怎么做的。 https://gist.github.com/GrilledChickenThighs/211c307edf8f828806c4bb4e4707b106
# Download entire webpage including all javascript, html, css of webpage. Replicates ctrl+s when on a webpage.
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
def save_current_page():
ActionChains(browser).send_keys(Keys.CONTROL, "s").perform()