在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → cefSharp实现淘宝自动点击购买事例

cefSharp实现淘宝自动点击购买事例

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:38.07M
  • 下载次数:60
  • 浏览次数:1231
  • 发布时间:2020-02-12
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.zip
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】通过此项目,你可以掌握cefsharp 操作html中控件的使用方法

【实例截图】

from clipboard

【核心代码】

using CefSharp;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TestClick.common;

namespace TestClick
{
    public partial class Form1 : Form
    {


        [DllImport("user32.dll")]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);


        [DllImport("user32")]
        private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);//鼠标事件
        const int MOUSEEVENTF_MOVE = 0x0001; //移动鼠标
        const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下
        const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起
        const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键按下
        const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起
        const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下
        const int MOUSEEVENTF_MIDDLEUP = 0x0040; //模拟鼠标中键抬起
        const int MOUSEEVENTF_ABSOLUTE = 0x8000; //标示是否采用绝对坐标

        [DllImport("user32.dll")]
        private static extern int GetWindowRect(IntPtr hwnd, out Rect lpRect);


        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        public static extern int PostMessage(IntPtr 句柄,int 事件,int 参数1,int 参数2);

        public Form1()
        {
            InitializeComponent();
        }
        public CefSharp.WinForms.ChromiumWebBrowser webBrowser1;
        string url = "";
        string cookie_str = "";
        private void Form1_Load(object sender, EventArgs e)
        {

            

            url = "https://www.taobao.com/";
             webBrowser1 = new CefSharp.WinForms.ChromiumWebBrowser(url);

            this.panel1.Controls.Add(webBrowser1);
            //this.Controls.Add(webBrowser1);
            BrowserSettings browserSettings = new BrowserSettings();
            browserSettings.FileAccessFromFileUrls = CefState.Enabled;
            browserSettings.UniversalAccessFromFileUrls = CefState.Enabled;
            browserSettings.WebSecurity = CefState.Enabled;
            webBrowser1.BrowserSettings = browserSettings;
            webBrowser1.Dock = DockStyle.Fill;//铺满       
            webBrowser1.AddressChanged  = WebBrowser1_AddressChanged;
            webBrowser1.FrameLoadEnd  = WebBrowser1_FrameLoadEnd;
        }

        private void WebBrowser1_AddressChanged(object sender, AddressChangedEventArgs e)
        {
            url = e.Address.ToString();
            //if (e.Address.IndexOf("http://www.miandoudou.com/mddapp/pdd/open.php") == 0)
            //{

                CookieVisitor visitor = new CookieVisitor();
                visitor.SendCookie  = visitor_SendCookie;
                var cookieManager = CefSharp.Cef.GetGlobalCookieManager();
                cookieManager.VisitAllCookies(visitor);
                //webBrowser1.Load("http://www.miandoudou.com/mddapp/pdd/open.php");
            //}
        }

        public class CookieVisitor : CefSharp.ICookieVisitor
        {
            public event Action<CefSharp.Cookie> SendCookie;

            public void Dispose()
            {
                //throw new NotImplementedException();
            }

            public bool Visit(CefSharp.Cookie cookie, int count, int total, ref bool deleteCookie)
            {
                deleteCookie = false;
                if (SendCookie != null)
                {
                    SendCookie(cookie);
                }

                return true;
            }
        }

        private void visitor_SendCookie(CefSharp.Cookie obj)
        {

            System.Net.Cookie ck = new System.Net.Cookie(obj.Name, obj.Value);

            ck.Domain = obj.Domain;

            cookie_str  = obj.Name   "="   obj.Value   "; ";

        }

        private void WebBrowser1_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
        {
           
            //if (e.Browser.MainFrame.Url.Contains("https://mms.pinduoduo.com/login") && !string.IsNullOrEmpty(username))
            //{
            //    e.Browser.MainFrame.ExecuteJavaScriptAsync("document.getElementById('usernameId').value='"   username   "'");
            //}
        }

        private void btn_tiaozhuan_Click(object sender, EventArgs e)
        {
            string url1 = "https://item.taobao.com/item.htm?id=" this.txt_id.Text.Trim(' ');
            webBrowser1.Load(url1);
        }
        /// <summary>
        /// 点击测试
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_test_Click(object sender, EventArgs e)
        {
            string backhtml = HttpHelper.HttpGet(url, "", "gbk", cookie_str);

            List<string> Li_list = Helper.str_FindStr(backhtml, "<li data-value=", "</li>", 0, true, false, false, "", "", "", "");
            string yanse = this.txt_yanse.Text.Trim(' ');
            string chima=this.txt_chima.Text.Trim(' ');


            Task<CefSharp.JavascriptResponse> t = webBrowser1.EvaluateScriptAsync("document.getElementsByTagName('li').length");
            string length_ = "";
            t.Wait();
            
            if (t.Result.Result != null)
            {
                length_=t.Result.Result.ToString();
            }
            t.Dispose();
            string sel_state = "";
            int count_ = 0;

            if (Li_list.Count > 0)
            {
                //点击颜色 和尺码
                foreach (var item in Li_list)
                {
                    sel_state = "";
                    string ys = Helper.GetZhongjianStr(item, "<span>", "</span>", "", "", 1, 1);


                    if (ys == yanse || ys == chima)
                    {
                        string htmlid = Helper.GetZhongjianStr(item, "\"", "\"", "", "", 1, 1);

                        if (length_ != "")
                        {
                            for (int i = 0; i < Convert.ToInt32(length_); i  )
                            {
                                sel_state = "";
                                Task<CefSharp.JavascriptResponse> t1 = webBrowser1.EvaluateScriptAsync("document.getElementsByTagName('li')["   i   "].getAttribute('data-value')");
                                t1.Wait();

                                Task<CefSharp.JavascriptResponse> t2 = webBrowser1.EvaluateScriptAsync("document.getElementsByTagName('li')["   i   "].getAttribute('class')");
                                t2.Wait();
                                if (t2.Result.Result != null)
                                {
                                    sel_state = t2.Result.Result.ToString();
                                }

                                if (t1.Result.Result != null)
                                {
                                    if (htmlid == t1.Result.Result.ToString())
                                    {
                                        if (sel_state != "tb-selected")
                                        {
                                            count_  ;
                                            webBrowser1.EvaluateScriptAsync("document.getElementsByTagName('li')["   i   "].click()");
                                        }
                                        //MessageBox.Show(i.ToString());

                                        //break;
                                    }
                                }
                                t1.Dispose();
                                t2.Dispose();
                            }


                        }

                    }

                }
                if(count_ > 0)//执行点击购买操作
                {
                    Thread.Sleep(500);
                    string a_length = "";
                    Task<CefSharp.JavascriptResponse> t5 = webBrowser1.EvaluateScriptAsync("document.getElementsByTagName('a').length");
                    t5.Wait();
                    if (t5.Result.Result != null)
                    {
                        a_length = t5.Result.Result.ToString();
                    }

                    if (a_length != "")
                    {
                        for (int i = 0; i < Convert.ToInt32(a_length); i  )
                        {
                            Task<CefSharp.JavascriptResponse> t4 = webBrowser1.EvaluateScriptAsync("document.getElementsByTagName('a')["   i   "].getAttribute('shortcut-label')");
                            t4.Wait();
                            if (t4.Result.Result != null)
                            {
                                if (t4.Result.Result.ToString() == "立即购买")
                                {
                                    webBrowser1.EvaluateScriptAsync("document.getElementsByTagName('a')["   i   "].click()");
                                    break;
                                }
                            }
                        }

                    }
                    t5.Dispose();


                }


            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr a = FindWindow(null, "测试点击");
            //PostMessage(a, MOUSEEVENTF_MOVE,10, 10);
            //mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 10500, 10500,0, 0);

            //Rect lpRect = new Rect();
            //GetWindowRect(a, out lpRect);

            //int kuan = lpRect.Width;
            //int gao = lpRect.Height;

            //int x = 50 * 65535 / kuan;
            //int y = 50 * 65535 / gao;


            //mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x, y, 0, 0);


           // Dm.dmsoft dm = new Dm.dmsoft();

           //int jubing = dm.FindWindow(null, "测试点击");

            
            //int jubing = dm.FindWindow("CefBrowserWindow",null);
            //if (jubing == 0)
            //{
            //    return;
            //}
            //int abc=dm.BindWindow(jubing, "gdi", "windows", "windows", 0);//绑定窗口句柄

            //MessageBox.Show(abc.ToString());
            //Thread.Sleep(1000);

          // dm.MoveTo(50,50);

        }
    }
}

标签:

实例下载地址

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警