自动化测试coding中总结2

上一篇 / 下一篇  2018-01-15 14:50:25 / 个人分类:自动化测试

  在用C#编写自动化脚本时遇到各种各样的问题,由于对.net framework不熟悉,有时候要实现一个功能在编写时总会卡在那里一段时间。为了以后在编写不会遇到相同问题,快速解决,所以需要自己好好总结写自己的解决思路,以便后面参考。
  对于新手可能会遇到要引用的类不清楚,如要实现截屏功能,我应该使用哪个方法来实现,那么大多数情况可能是网上百度Google;以为百度,Google后看到人家提供了关键代码,就可以实现了,还是too young too naïve,写到自己代码中发现,代码中一大串红色波浪线提醒不存在某个类或方法。看到这么多红色波浪就开始头疼了,不知道这个类或方法需要引用哪个命名空间。可能就有点急了,怎么解决呢?这个方法能正常使用吗?各种疑问萦绕在脑中。
  需要总结下自己对于不熟悉C#各种API情况下的解决思路:
  1. 首先多去网上找到对应的解决方案。
    如我要实现截屏功能,先去搜索C# 截屏相关的信息。找了很多,发现关键代码实现就是下面几行代码:
            //屏幕宽
            int iWidth = Screen.PrimaryScreen.Bounds.Width;
            //屏幕高
            int iHeight = Screen.PrimaryScreen.Bounds.Height;
            //按照屏幕宽高创建位图
            Image img = new Bitmap(iWidth, iHeight);
            //从一个继承自Image类的对象中创建Graphics对象
            Graphics gc = Graphics.FromImage(img);
            //抓屏并拷贝到myimage里
            gc.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
            img.Save(sFilePath + testItem+ Guid.NewGuid().ToString() + ".jpg");
         
       要截屏首先要指定屏幕的宽度和高度,那就需要获取屏幕的宽度和高度,第一句和第二句就是获取屏幕的宽和高;第三句就是实例化一个Image对象,创建屏宽和屏高对应的位图,然后第四句通过graphics绘制对应的图片对象,最后将屏幕内容通过Graphics的CopyFromScreen方法将屏幕当前显示的内容copy份,然后保存到指定路径。

2. 然后把关键代码输入,进行调试,看方法是否可以正常实现想要的功能。
    //这里的Screen类是需要引用System.Windows.Forms命名空间的
    public static void ScreenCapture(string testItem)
        {
            //屏幕宽
            int iWidth = Screen.PrimaryScreen.Bounds.Width;
            //屏幕高
            int iHeight = Screen.PrimaryScreen.Bounds.Height;
            //按照屏幕宽高创建位图
            Image img = new Bitmap(iWidth, iHeight);
            //从一个继承自Image类的对象中创建Graphics对象
            Graphics gc = Graphics.FromImage(img);
            //抓屏并拷贝到myimage里
            gc.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
            //this.BackgroundImage = img;
            //保存位图
            //文件的绝对路径
            string sFilePath = @"C:\result\bug_screen_capture\";
            //验证路径是否存在,不存在则创建
            if (!Directory.Exists(sFilePath))
            {
                Directory.CreateDirectory(sFilePath);
            }
            img.Save(sFilePath + testItem+ Guid.NewGuid().ToString() + ".jpg");
        }

 3. 如何解决引入命名空间问题
    代码输入到VS中后,发现Screen那是红色标记,提示不存在。点击提示下的可能修复的方案也没有推荐的引入命名空间。
   那就要考虑需要先引入Screen对应的命名空间,才可以在代码中使用Screen的命名空间,正常使用Screen这个类,但是由于对Microsoft API不熟悉,发现不知道Screen是放在哪个命名空间下的。用F12导航也失效了,现在就只能借助功能强大的搜索引擎了,可以在搜索引擎中搜索Screen是属于哪个命名空间,也可以查微软的帮助文档。Microsoft所有的API连接如下:
  https://msdn.microsof.com/zh-cn/library/ 中文版
  https://msdn.microsoft.com/library  英文版

4.引入对应命名空间
  查到Screen类所属的命名空间后,通过VS->项目->引用,然后搜索Windows,勾选System.Windows.Forms,确定添加后,鼠标指向代码中的Screen后,点击提示的推荐引入的项目命名空间,即可解决这个问题,最后调试运行,解决了截屏问题。

一般系统学习过Microsoft API后,都可以大概了解要使用的类需要引入哪个API。
    
  
   
   



















   

TAG:

 

评分:0

我来说两句

Open Toolbar