C# 自动翻页 PPT 测试脚本
2019-09-06 14:10
1471 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lindexi_gd/article/details/100545630
本文告诉大家一个可以使用的 C# 脚本,可以用来自动打开 PPT 文件,然后不断执行翻页。每次翻页都截图。翻页之后自动关闭 PPT 再次打开
最近发现给 Office 做的插件,会在一定翻页次数的时候,就 gg 了,所以我就写了这样的脚本,小伙伴可以拿去用
编译下面的代码,然后将几个需要测试的 PPTX 文件放在编译出来的程序相同文件夹,双击运行这个程序就可以进行测试
class Program { static void Main(string[] args) { var guid = Guid.NewGuid().ToString("N"); for (int i = 1; i <= 10000; i++) { Process p = new Process(); //设置要启动的应用程序 p.StartInfo.FileName = "cmd.exe"; //是否使用操作系统shell启动 p.StartInfo.UseShellExecute = false; // 接受来自调用程序的输入信息 p.StartInfo.RedirectStandardInput = true; //输出信息 p.StartInfo.RedirectStandardOutput = true; // 输出错误 p.StartInfo.RedirectStandardError = true; //不显示程序窗口 p.StartInfo.CreateNoWindow = true; Thread.Sleep(2000); var directory = new DirectoryInfo($"第{i}次 {guid}"); directory.Create(); string pptFile = GetPPT(); Console.WriteLine("启动文件: " + pptFile); Console.WriteLine(@"第 " + i + " 次启动:"); p.Start(); //向cmd窗口发送输入信息 Thread.Sleep(2000); p.StandardInput.WriteLine("\"" + pptFile + "\""); p.StandardInput.AutoFlush = true; Console.WriteLine(@"开始启动客户端"); Thread.Sleep(10000); //触发F5按键 keybd_event(116, 0, 0, 0); // 翻多少页 for (int j = 1; j < 10; j++) { Thread.Sleep(2000); keybd_event(vbKeyDown, 0, 0, 0); Console.WriteLine(@"开始翻页"); // 翻一页截图 // 通过Graphics的CopyFromScreen方法把全屏图片的拷贝到我们定义好的一个和屏幕大小相同的空白图片中, // 拷贝完成之后,CatchBmp就是全屏图片的拷贝了,然后指定为截图窗体背景图片就好了。 // 新建一个和屏幕大小相同的图片 Bitmap CatchBmp = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height); // 创建一个画板,让我们可以在画板上画图 // 这个画板也就是和屏幕大小一样大的图片 // 我们可以通过Graphics这个类在这个空白图片上画图 Graphics g = Graphics.FromImage(CatchBmp); // 把屏幕图片拷贝到我们创建的空白图片 CatchBmp中 g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height)); var file = new FileInfo(Path.Combine(directory.FullName, $"{j}.png")); var fileStream = new FileStream(file.FullName, FileMode.Create, FileAccess.Write); using (fileStream) { CatchBmp.Save(fileStream, ImageFormat.Png); CatchBmp.Dispose(); } Console.WriteLine("保存截图" + file.FullName); } Thread.Sleep(2000); keybd_event(18, 0, 0, 0); keybd_event(115, 0, 0, 0); keybd_event(18, 0, 2, 0); keybd_event(115, 0, 2, 0); Thread.Sleep(2000); Console.WriteLine("干掉进程"); foreach (var temp in Process.GetProcesses()) { try { if (temp.ProcessName.IndexOf("power", StringComparison.InvariantCultureIgnoreCase) >= 0) { temp.Kill(); } } catch (Exception e) { Console.WriteLine(e); } } p.Kill(); } } private static string GetPPT() { var directory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); var list = directory.GetFiles("*.pptx").ToList(); return list[_random.Next(list.Count)].FullName; } private static readonly Random _random = new Random(); [DllImport("user32.dll")] public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); public const byte vbKeyDown = 0x28; // DOWN ARROW 键 }
用这个脚本运行几天然后我就去看截图,就可以发现在翻到一定的页面,我的插件就 gg 了。在我修复之后再次运行这个脚本,发现没有 gg 于是就可以和微软说我修复了我的插件,再次上传
如何写 Office 插件,推荐陈希章的Office 365 开发概览系列
我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新
如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
相关文章推荐
- Android APP压力测试 之Monkey日志自动分析脚本
- Appium跑python脚本自动生成简单测试结果报告
- C#下 ASP.NET 2.0中禁止GridView的内容自动换行 (测试有效!!)
- 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!
- 自动化测试脚本的编写和执行——自动执行cts测试10遍
- Bat脚本实现定时演示PPT后自动关闭PPT
- mysql主从自动配置、诊断及测试脚本
- c# 自动发送邮件测试代码
- C# 脚本代码自动登录淘宝获取用户信息
- 性能测试脚本开发(C&C#&Java)
- 微信跳一跳自动脚本C#代码实现
- 用脚本自动编译C#工程
- shell脚本自动测试+自动覆盖率统计+自动转PDF+自动发邮件
- Mac 关闭chrome的自动更新解决版本更新造成的自动化测试脚本执行不通过的问题
- C# winform 窗体接收命令行参数自动登录进行系统,模拟600个WCF客户端的并发压力测试
- 搭建基于C#和 Appium 的 Android自动测试环境
- 批处理脚本实现Aida64测试工具的System Stability Test项目自动测试
- 如何在C#中用程序执行指定的SQL脚本文件,实现自动安装创建数据库.txt
- 搭建基于C#和 Appium 的 Android自动测试环境
- 通过ssh主机互信打通内、外网,使用shell脚本自动部署测试环境