我想使用Selenium保存这个文件。我可以用以下代码单击“save”:
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')
ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="plugin"]')).key_down(Keys.CONTROL).send_keys('s').key_up(Keys.CONTROL).perform()但是,我不能让python按下弹出窗口中的“保存”底部。我试过:
driver.find_elements_by_xpath("//*[contains(text(), 'Save')]").click()和
ActionChains(driver).send_keys(u'\ue007').perform()有人知道如何点击“保存”底部吗?
发布于 2019-10-17 11:57:08
更新
正如上面@Glazbee不能访问OS对话框所说的那样,pyautogui也有一个解决方案。如果不希望在chrome_options of webdriver中设置默认下载文件夹,请尝试以下操作
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')发布于 2019-10-17 13:56:47
您可以将键盘模块与selenium结合使用。
import keyboard, time
keyboard.press(['ctrl', 's'])
time.sleep(1)
keyboard.press('enter')这将使您可以保存文件。
发布于 2019-10-17 12:04:23
编辑:这个答案据报道已经过时了。我无法测试这一点,请调查使用其他答案的解决方案。
这不适用于您的原因是Chrome使用的保存对话框没有呈现为网页。这是本地代码。
为了解决这个问题,您可以使用selenium.webdriver.chrome.options.Options模块。您将需要设置默认文件目录,否则会出现提示符。您可以使用如下脚本:您可以在这里找到更多的信息。。您还可以找到有关为什么这里使用实验选项的信息。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_experimental_option("prefs", {
"download.default_directory": r"C:\Users\xxx\downloads\Test",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})https://stackoverflow.com/questions/58432057
复制相似问题