【问题标题】:Python selenium send keys to driver [duplicate]Python selenium将密钥发送到驱动程序[重复]
【发布时间】:2021-02-13 22:50:03
【问题描述】:

我是软件专业的学生。

我在 chrome 中使用 python 中的 selenium,我正在尝试制作一个自动购买机器人。但有一件事并不想工作。我想硬刷新,我很好奇是否有办法将组合键 Ctrl + Shift + r 发送给驱动程序。我们该怎么做?

谢谢!

【问题讨论】:

  • 更具体地说明您要发送什么组合。
  • @bilakos control+shift+r 在 chrome 中硬刷新
  • @Chris 我不是真的用过 actions.key_down(Keys.CONTROL).key_down(Keys.SHIFT).send_keys('r').key_up(Keys.CONTROL).key_up(Keys.SHIFT) .perform() 但这不起作用。
  • 您有两种方法可以做到这一点。第一个是 refresh Chrome 驱动程序中的 chrome。您提到了像driverbrowser 这样的变量。所以去那里输入driver.refresh()browser.refresh()或你提到的变量。第二种方法是导入模块keyboard。转到cmd 并输入pip install keyboard 或导入puautogui,您可以像这样安装它pip install pyautogui。之后将其导入您编写的代码。
  • 使用pyautogui,您可以添加此代码pyautogui.hotkey('ctrl', 'shift', 'r'),它将使您的组合

标签: python selenium


【解决方案1】:

ctrl+shift+r 是浏览器级别的快捷方式,您不能从 selenium 触发它。

如果您想通过强制从服务器加载页面而不是缓存来刷新,请使用 devtool 协议:

首先安装 Selenium 4:

pip install selenium==4.0.0.a7

Selenium 4 支持devtool 协议现在使用以下代码:

 driver.get(
        "https://stackoverflow.com/questions/66190723/python-selenium-send-keys-to-driver")
 driver.execute_cdp_cmd("Page.reload", {"ignoreCache": True})

https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-reload

Page.reload # 重新加载给定页面,可选择忽略缓存。 PARAMETERS ignoreCache boolean 如果为真,浏览器缓存被忽略(如 如果用户按下 Shift+refresh)。 scriptToEvaluateOnLoad 字符串 If 设置,脚本将被注入到被检查页面的所有框架中 重新加载后。如果重新加载 dataURL 源,参数将被忽略。

评论更新

location.reload(boolean) 现在已弃用,并且:

location.reload() 根据评论可能无法验证所有缓存的资源:

https://www.chromestatus.com/feature/5724282256621568

【讨论】:

    【解决方案2】:

    要将密钥发送给驱动程序,您首先需要指定要将密钥发送到的 html 元素。

    emailBox = driver.find_element_by_xpath("xpath here")
    emailBox.send_keys("example@example.com")
    

    并为每个元素重复。 您还可以将.click() 函数用于按钮。

    【讨论】:

    • 这不是作者想知道的
    • 我已经明白了,但还是谢谢!
    猜你喜欢
    • 2016-08-05
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多