当使用 Selenium 打开“另存为”窗口时,如何单击 Enter?

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


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()

有人知道如何点击“保存”底部吗?


Qyouu
浏览 245回答 3
3回答

Smart猫小萌

更新虽然如上所述@Glazbeeselenium无法访问操作系统对话框,但有一个解决方法pyautogui。如果您不想在您chrome_options的 中设置默认下载文件夹,请尝试以下操作webdriver:from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport pyautoguiimport timedriver = 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')

ABOUTYOU

您可以将键盘模块与 selenium 结合使用import keyboard, timekeyboard.press(['ctrl', 's'])time.sleep(1)keyboard.press('enter')这将让您保存文件。

犯罪嫌疑人X

据报道此答案已过时。我无法对此进行测试,请考虑使用其他答案中的解决方案。这对您不起作用的原因是 Chrome 使用的保存对话框未呈现为网页。它是本机代码。为了解决这个问题,您可以使用该selenium.webdriver.chrome.options.Options模块。您需要设置一个默认文件目录,否则会出现提示。您可以使用如下脚本;您可以在此处找到更多信息。您还可以在此处找到有关为何使用实验选项的信息from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsoptions = 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})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python