Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当a";另存为;窗户是用硒打开的吗?_Python_Selenium - Fatal编程技术网

Python 当a";另存为;窗户是用硒打开的吗?

Python 当a";另存为;窗户是用硒打开的吗?,python,selenium,Python,Selenium,我想使用Selenium保存。我可以使用以下代码单击“另存为”: driver=webdriver.Chrome(Chrome\u options=options,executable\u path=Chrome\u driver\u path) 司机,上车https://www.shs-conferences.org/articles/shsconf/pdf/2019/06/shsconf_m3e22019_03006.pdf') ActionChains(驱动程序)。将\u移动到\u元素(驱

我想使用Selenium保存。我可以使用以下代码单击“另存为”:

driver=webdriver.Chrome(Chrome\u options=options,executable\u path=Chrome\u driver\u path)
司机,上车https://www.shs-conferences.org/articles/shsconf/pdf/2019/06/shsconf_m3e22019_03006.pdf')
ActionChains(驱动程序)。将\u移动到\u元素(驱动程序。通过\u xpath('/*[@id=“plugin”]”)查找\u元素)。向下键(键。控件)。发送\u键('s')。向上键(键。控件)。执行()
但是,我无法让python在弹出窗口中按下“保存”底部。我试过:

driver。通过xpath(“/*[contains(text(),'Save')]”查找元素。单击()

ActionChains(驱动程序)。发送_键(u'\ue007')。执行()
有人知道如何单击“保存”底部吗?

更新 正如上面@Glazbee
selenium
所说的,selenium无法访问操作系统对话框,但有一个解决办法是使用
pyautogui
。如果您不想在
webdriver
chrome\u选项中设置默认下载文件夹,请尝试以下操作:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pyautogui
import time

driver = webdriver.Chrome(chrome_options=options, executable_path = chrome_driver_path)
driver.get('https://www.shs-conferences.org/articles/shsconf/pdf/2019/06/shsconf_m3e22019_03006.pdf')

webdriver.ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="plugin"]')).key_down(Keys.CONTROL).send_keys('s').key_up(Keys.CONTROL).perform()
time.sleep(1)
pyautogui.press('enter')

这不适用于您的原因是Chrome使用的保存对话框没有呈现为网页。这是本机代码

要解决这个问题,可以使用
selenium.webdriver.chrome.options.options
模块。您需要设置默认的文件目录,否则会出现提示。您可以使用如下脚本。您还可以找到有关的信息


您可以将键盘模块与selenium结合使用

import keyboard, time

keyboard.press(['ctrl', 's'])
time.sleep(1)
keyboard.press('enter')

这将允许您保存文件。

它不起作用-当代码被删除时不会发生任何事情executed@Modvinden这是用来保存文件的弹出窗口吗?这行不通。Chrome不会将保存对话框呈现给页面,而是从本机代码传递。由于Selenium无法访问本机二进制文件,只能访问呈现到页面上的Javascript,因此它无法访问保存对话框。@Glazbee你说得对,我不知道他以前想做什么,我想他只需要按
enter
。不过,还有一个解决办法。您的更新解决方案在无头浏览器上有效吗?我知道它在路线图上,但我不认为它刚刚发布。有比使用selenium更好的下载pdf文件的方法。请参见此处的答案-@Sureshmani这不是用户所问的问题。如果你打算提供一种替代方法,你还应该概述如何在Selenium中使用它,并解释为什么这不是一个好主意。可能重复的方法不起作用,弹出窗口仍然会出现。
import keyboard, time

keyboard.press(['ctrl', 's'])
time.sleep(1)
keyboard.press('enter')