CefSharp+Selenium 实现支付宝自动化支付

背景,最近再搞支付宝网页自动支付,之前找了一个方法用js 查找元素,获取位置然后自动点击。但是有点繁琐啊。不过比较精简方便一点。

之前就听过Selenium ,自动化的神器,以前就有想法想搞一个,正好可以借此机会学习学习

准备 Selenium.CefSharp.Driver 地址 Codeer-Software/Selenium.CefSharp.Driver (github.com) 

这个库根据官方的demo,发现只能附加到其他进程,没找到附加到自己进程的方法,刚开始研究的不深入,后续继续深入研究。

准备俩个程序,一个主程序、一个目标程序,主程序 控制目标程序。

目标程序 注意 UIForm 类 大家用的时候改一下就行,改成原来的,我这个是第三方控件库

  public partial class Form1 : UIForm
    {
        private ChromiumWebBrowser AccountChromeBrowser;

        private RequestContext AccountContext;

        private string url;

        public bool IsLoadEnded { get; set; }

        public Form1(string url)
        {
            this.url = url;
            InitializeComponent();
            InitializeAccountChromium();
        }


        //初始化浏览器并启动
        public void InitializeAccountChromium()
        {

            AccountContext = new RequestContext(new RequestContextSettings()
            {
                CachePath = AppDomain.CurrentDomain.BaseDirectory + "caches\\global1\\",
                PersistSessionCookies = true,
                PersistUserPreferences = true
            });

            AccountChromeBrowser = new ChromiumWebBrowser(this.url, AccountContext);
            BrowserSettings browserSettings = new BrowserSettings();
            browserSettings.ApplicationCache = CefState.Enabled;
            AccountChromeBrowser.KeyboardHandler = new CEFKeyBoardHander();
            AccountChromeBrowser.BrowserSettings = browserSettings;

            this.Controls.Add(AccountChromeBrowser);

            AccountChromeBrowser.Dock = DockStyle.Fill;
            AccountChromeBrowser.FrameLoadEnd += (_, __) => IsLoadEnded = true;
        }

    }

主程序就很不贴代码了,贴一下主要代码

//这个是我再按钮单击方法调用的,自己加到自己需要的逻辑里           
 var driver = GetDriver("https://mapi.alipay.com/gateway.do?service=alipay.wap.create........................");
            try
            {
                var zhifuButton = By.XPath("//*[@id=\"cashierPreConfirm\"]/div[2]/button");
                driver.FindElement(zhifuButton).Click();
                var payInput = By.XPath("//*[@id=\"pwd_unencrypt\"]");
                driver.FindElement(payInput).SendKeys("12345");
            }
            catch (Exception)
            {
            }
//












 private CefSharpDriver GetDriver(string url)
        {

            string processPath = AppDomain.CurrentDomain.BaseDirectory + "AutoPay.exe";
            var process = Process.Start(processPath, url);

            var _app = new WindowsAppFriend(process);
            var main = _app.WaitForIdentifyFromWindowText("自动支付");

            while (!(bool)main.Dynamic().IsLoadEnded)
            {
                Thread.Sleep(500);
            }

            //create driver.
            return new CefSharpDriver(main.Dynamic().AccountChromeBrowser);
        }

以上代码基本就是核心了,几行代码轻松实现支付宝自动化支付 当然这是很简单的demo了

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值