【问题标题】:How to Copy image to clipboard from the browser native menu using Selenium and Python如何使用 Selenium 和 Python 将图像从浏览器本机菜单复制到剪贴板
【发布时间】:2020-06-18 07:23:39
【问题描述】:

我正在尝试自动执行获取图像或源元素并将其复制到剪贴板的任务。这相当于在网络上查看图像,右键单击它,然后单击“复制图像”。我正在尝试使用 selenium 自动执行此操作,最有效的方法是什么?

【问题讨论】:

    标签: python image selenium copy clipboard


    【解决方案1】:

    首先,您可以使用 Selenium 提供的众多选项之一来查找元素。在您的情况下,您可能正在寻找一个 img HTML 标签或类似的东西。

    获取元素后,可以运行.get_attribute("src")方法获取图片的源地址。然后,您可以将其与requests 之类的模块配对,以将图片下载到您的计算机:(取自this 答案)

    import requests
    ...
    r = requests.get(element.get_attribute("src"), stream = True)
    if r.status_code == 200:
        with open(filePath, 'wb') as f:
            for chunk in r:
                f.write(chunk)
    

    最后,您可以使用类似this 答案中使用的模块将下载的图像复制到剪贴板。

    【讨论】:

    • 感谢您的回答。我知道有 src 属性,但是如果您只想复制到剪贴板怎么办...以及您提供的链接我在问问题之前检查过?..但他们没有解释如何从网络上获取...谢谢...?
    • 是的,就像我的回答说的那样,您可以使用内置方法找到它,下载它并将其复制到剪贴板。另外,请记住在得到正确答案后相应地标记它。
    • 我编辑了我的帖子以包含代码的请求部分。
    • 我认为这会解决我的问题,但我的情况是我只想将图像复制到剪贴板而不是下载它
    • 不知道有没有内置直接复制文件而不下载的,但是下载后就可以从图片中复制数据了。如果以后不想要图片,可以随时使用os.remove(file)删除。
    【解决方案2】:

    基本上,将图像复制到剪贴板是通过Context Click -> Copy image 执行的。


    context_click()

    context_click() 通常在 WebElement 上调用,例如链接

    在元素上调用 context_click() 会打开一个浏览器原生上下文菜单,这是一个浏览器原生操作,并且不能由 Selenium 设计管理。


    结论

    使用Selenium,您将无法使用send_keys(Keys.ARROW_DOWN)send_keys(Keys.DOWN) 等与浏览器原生上下文菜单项进行交互。


    参考

    您可以在以下位置找到相关讨论:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2013-07-14
      • 1970-01-01
      相关资源
      最近更新 更多