zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
    
  • 相关阅读:
    Rust 包管理器 Cargo 入门
    如何设置对企业批量的图文档加密?2021企业首选公司文档加密方案,宁波风奥金甲数据防泄漏
    跟坚哥学QUIC系列:加密和传输握手
    如何在SQLServer中处理每天四亿三千万记录的
    高德最佳实践:Serverless 规模化落地有哪些价值?
    浅谈 Pull Request 与 Change Request 研发协作模式
    Dbeaver连接国产数据库人大金仓
    我对云原生软件架构的观察与思考
    Java Web整合开发(20) -- Hibernate入门
    2 修改与恢复
  • 原文地址:https://www.cnblogs.com/dlvguo/p/13167260.html
Copyright © 2011-2022 走看看