11

我正在为 Python 2.7 使用 selenium webdriver:

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

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

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

注意:这不是我感兴趣的网页源。我想使用实际的“将页面另存为”Firefox 命令保存页面,这与保存网页源产生的结果不同。

4

3 回答 3

11

不幸的是,你不能用 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()
于 2012-06-10T15:56:17.357 回答
5

我有一个类似的问题,最近解决了:

@AutomatedTester 给出了一个不错的答案,但他的答案并没有完全解决问题,您仍然需要自己再按一次 Enter 才能完成工作。

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

在以下线程中关注@NoctisSkytower 的回答:

Python模拟keydown

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

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

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

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

你可能会遇到弹出窗口,这个线程会告诉你想要做什么。

于 2014-12-09T02:34:44.910 回答
0

如果您使用的是 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)
于 2017-09-01T14:49:22.223 回答