【发布时间】:2018-07-31 03:15:34
【问题描述】:
我正在编写一个测试,我需要复制的功能本质上是将图像保存到剪贴板并稍后粘贴。我正在使用 Selenium WebDriver v3.11.1。
我曾尝试使用 ContextClick 以多种方式复制图像,但它从未完全达到我想要的效果:
Actions rightClickAction = new Actions(driver);
rightClickAction.MoveToElement(logo).ContextClick(logo).SendKeys(Keys.ArrowDown).SendKeys(Keys.ArrowDown).SendKeys(Keys.ArrowDown).SendKeys(Keys.Enter).Build().Perform();
但是向下/输入箭头从未起作用,因为它没有专注于右键菜单。然后我发现了这个错误https://bugs.chromium.org/p/chromedriver/issues/detail?id=1003,这让我觉得我不能使用上下文单击来复制图像。我也不能只是 'ctrl+c' 图像。
然后我了解到我可以使用剪贴板,而我无法从我的目录中设置图像:
Clipboard.SetImage(Image.FromFile("C://Image.png"));
然后我尝试在此处截取屏幕截图:C# Selenium - How do you take a screenshot in Visual Studio 2015,但两者都不起作用。尝试保存屏幕截图文件并将其添加到“剪贴板”时遇到了麻烦。
我还尝试通过使用由 webdriver 执行的 JavaScript 获取图像的 base64 字符串,然后将图像的 base64 字符串保存到文件中,从页面中抓取图像,我在这里找到了该文件:Using selenium to save images from page
这也变得一团糟,我不知道如何将其保存到剪贴板。
那么,如何将图像保存到剪贴板?
【问题讨论】:
-
也许备份并解释整体情况。你为什么要粘贴图片?
-
该图像是否有 href 属性?如果是这样,您可以使用它
-
@BhargavMarpu 没有 href 属性,但是有 src 属性。
-
@JeffC 我正在编写一个测试,我需要复制的功能是以任何可能的方式(屏幕截图、复制...)将图像保存到剪贴板,然后稍后将其粘贴。我已经弄清楚了粘贴部分。
标签: c# selenium-webdriver