用Waitn控制网页

  Waitn用于网站自动化测试,需要编写测试代码,不过一般网站内容经常变化,所以实际应用可能比较少,但用Waitn来获取网页内容或者控制网页却是非常方便,获取的内容用C#这样的高级语言对内容进行复杂的分析、处理和存储。比如前段时间天猫的领取红包活动,我就花十几分钟利用Waitn写了一个自动领取的工具,不需要傻傻的点击鼠标(话说淘宝这样浪费人时间的设计真是在谋杀人的生命啊^_^)。好,闲话不多说,进入主题。

  步骤:

      1.下载 WatiN 的C#组件,有net2.0,net3.5,net4.0几个齐全的版本。net4.0版本的文件如下:    

        

  因为今天上不了google,就不贴链接了,有兴趣的同学google一下就能找到。

  2. 用VS2010新建一个Console Application(控制台程序)工程,将WatiN动态库WatiN.Core.dll引入工程.

  3.编写代码

  

class Program
{
 
        [STAThread]
        static void Main(string[] args)
        {
            Login("zfx530817209", "zfx800523");
        }
        public static int Test()
        {<br>       //有时运行失败可能会导致编译目录(debug)的丢失,于是每次运行拷贝覆盖一份;
            File.Copy(@"G:\WEB\WaitnTest\WaitnTest\bin\Interop.SHDocVw.dll", @"G:\WEB\WaitnTest\WaitnTest\bin\Release\Interop.SHDocVw.dll", true);<br><br>       //使用IE打开网页
            using (var browser = new IE("http://3c.tmall.com/go/act/tmall/dqcksjac.php?spm=141.27931.264455.1&ad_id=&am_id=&cm_id=14010136042170e97f5e&pm_id="))
            {
                do
                {
                    try
                    {
              //查找按钮
                        var bt = Find.ById("award_btn");
                        browser.Link(bt).Click();//点击按钮
                        Thread.Sleep(100);//等待
 
                        var bt2 = Find.ByText("立即分享");//弹出对话框时,查找按钮
                        browser.Link(bt2).Click();//点击
 
                        Thread.Sleep(300);
 
                        var bt3 = browser.Link(bt).NextSibling;查找没有ID的按钮
                        bt3.Click();
 
                        //var bt2 = browser.Div(bt).NextSibling;
                        //bt2.Click();
                        //Thread.Sleep(2000);
 
                        //var msg = browser.Div(Find.ByClass("vol-dialog-msg"));
                        //Console.WriteLine(DateTime.Now.ToString() + ":" + msg.Text);
 
                        //<a class="vol-dialog-close">X</a>
                        //browser.Link(Find.ByCslass("vol-dialog-close")).Click();//关闭对话框
                        //Thread.Sleep(500);
                    }
                    catch
                    {
 
                        //int MM = (59 - DateTime.Now.Minute) ;
                        int MM = 5;
                        Console.WriteLine(DateTime.Now.ToString() + ":等待" + MM.ToString() + "分钟....");
                        Thread.Sleep(MM * 1000);
                    }
                }
                while (true);
 
            }
        }<br>}

 内容就这些,很简单是不是?

posted @   11ge  阅读(704)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示