1. 程式人生 > WINDOWS開發 >C#使用Selenium右鍵儲存圖片

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();
        }
    }
}