繁体   English   中英

使用Python Selenium保存网页

[英]Save a Web Page with Python Selenium

我正在使用selenium webdriver for Python 2.7:

  1. 启动浏览器: browser = webdriver.Firefox()

  2. 转到某个网址: browser.get('http://www.google.com')

此时,如何向浏览器发送“另存页面”命令?

注意:这不是我感兴趣的网页源。我想使用实际的'Save Page As'Firefox命令保存页面,这会产生与保存网页源不同的结果。

不幸的是,你无法做你想做的Selenium。 您可以使用page_source来获取html,但这就是您将获得的所有内容。

不幸的是,当您保存时,Selenium无法与提供给您的Dialog交互。

你可以执行以下操作来获得对话框,但是你需要像AutoIT这样的东西来完成它

from selenium.webdriver.common.action_chains import ActionChains

saveas = ActionChains(driver).key_down(Keys.CONTROL)\
         .send_keys('s').key_up(Keys.CONTROL)
saveas.perform()

我有一个类似的问题并且最近解决了它:

@AutomatedTester给出了一个不错的答案,但他的答案并没有解决问题,你还需要再次按Enter键才能完成这项工作。

因此,我们需要Python为我们再按一次Enter。

在以下主题中关注@NoctisSkytower的回答:

Python模拟keydown

复制他对类的定义,然后将以下内容添加到@AutomatedTester的答案中:

SendInput(Keyboard(VK_RETURN))
time.sleep(0.2)
SendInput(Keyboard(VK_RETURN, KEYEVENTF_KEYUP))

您可能还想查看以下链接:

selenium web驱动程序如何知道新窗口何时打开然后恢复执行

您可能会遇到弹出窗口,此线程会告诉您要执行此操作。

如果您使用的是Linux,则可以使用xte 安装

sudo apt-get install xautomation

第一。

from subprocess import Popen, PIPE

save_sequence = """keydown Control_L
key S
keyup Control_L
"""


def keypress(sequence):
    p = Popen(['xte'], stdin=PIPE)
    p.communicate(input=sequence)

keypress(save_sequence)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM