C#使用Selenium右键保存图片

.Net Core使用Selenium自动化测试框架右键保存图片,Selenium相关操作点击跳转

对于图片的保存,通常有俩种方式,第一种是获取页面中图片的Url再下载,另一种方法是模拟鼠标右键保存图片。本文实现第二种方式。
首先获取目标图片的Xpath,再通过Selenium通过Xpath进行元素定位,并将鼠标移动这个元素模拟右键点击。

ChromeDriver chromeDriver= new ChromeDriver();
//打开浏览器
chromeDriver.Manage().Window.Maximize();
chromeDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10000);
......
var ele = chromeDriver.FindElementByXPath(xpath);
Actions actions = new Actions(chromeDriver);
actions.MoveToElement(ele).Perform();
actions.ContextClick(ele).Build().Perform();

下面关键的一步,模拟键盘输入确认右键保存以及回车输入。本文项目中采用的是最新的.Net Core版本,对网上一些C#模拟键盘输入的方式都未能成功。这里介绍InputStimulator类库,能够实现键盘的输入以及各种字符串输入操作。

var sim = new InputSimulator();
sim.Keyboard.KeyPress(VirtualKeyCode.VK_V).Sleep(1000).KeyPress(VirtualKeyCode.RETURN);

下面进行项目演示:

项目演示中的全部代码:

using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;
using System;
using WindowsInput;
using WindowsInput.Native;

namespace ZwDownLoad
{
    class Program
    {
        static void Main(string[] args)
        {
            ChromeDriver chromeDriver = new ChromeDriver(@"G:\DownLoadFiles\");
            chromeDriver.Manage().Window.Maximize();
            chromeDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(2000);
            chromeDriver.Navigate().GoToUrl("https://www.cnblogs.com/dlvguo/p/13122475.html");
            System.Threading.Thread.Sleep(1000);
            var ele = chromeDriver.FindElementByXPath("//*[@id=\"cnblogs_post_body\"]/p[1]/img");
            Actions actions = new Actions(chromeDriver);
            actions.MoveToElement(ele).Perform();
            actions.ContextClick(ele).Build().Perform();
            System.Threading.Thread.Sleep(2000);
            var sim = new InputSimulator();
            sim.Keyboard.KeyPress(VirtualKeyCode.VK_V).Sleep(2000).TextEntry("测试图片").Sleep(1000).KeyPress(VirtualKeyCode.RETURN);
            Console.Read();
        }
    }
}
posted @ 2020-06-20 01:30  国-哥  阅读(1254)  评论(1编辑  收藏  举报