首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当Selenium打开"save-as“窗口时,如何单击enter?

当Selenium打开"save-as“窗口时,如何单击enter?
EN

Stack Overflow用户
提问于 2019-10-17 11:54:49
回答 3查看 7.4K关注 0票数 0

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

代码语言:javascript
复制
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按下弹出窗口中的“保存”底部。我试过:

代码语言:javascript
复制
driver.find_elements_by_xpath("//*[contains(text(), 'Save')]").click()

代码语言:javascript
复制
ActionChains(driver).send_keys(u'\ue007').perform()

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-17 11:57:08

更新

正如上面@Glazbee不能访问OS对话框所说的那样,pyautogui也有一个解决方案。如果不希望在chrome_options of webdriver中设置默认下载文件夹,请尝试以下操作

代码语言:javascript
复制
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')
票数 5
EN

Stack Overflow用户

发布于 2019-10-17 13:56:47

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

代码语言:javascript
复制
import keyboard, time

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

这将使您可以保存文件。

票数 4
EN

Stack Overflow用户

发布于 2019-10-17 12:04:23

编辑:这个答案据报道已经过时了。我无法测试这一点,请调查使用其他答案的解决方案。

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

为了解决这个问题,您可以使用selenium.webdriver.chrome.options.Options模块。您将需要设置默认文件目录,否则会出现提示符。您可以使用如下脚本:您可以在这里找到更多的信息。。您还可以找到有关为什么这里使用实验选项的信息。

代码语言:javascript
复制
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
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58432057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档