我正在编写一份测试,所需功能是将图片保存到剪贴板并稍后粘贴。我正在使用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();
但是,向下箭头/回车键没有起作用,因为它没有聚焦在右键菜单上。然后我发现了这个 bug 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。
这个方法也很麻烦,而且我不确定如何将它保存到剪贴板中。
那么,我应该如何保存图像到剪贴板呢?