首页 > 解决方案 > WebBrowser 无法创建帐户

问题描述

我已经编写了一些代码来允许我使用 C# 在网站上自动创建一个帐户。不幸的是,代码似乎没有按预期工作,因为我没有收到来自该站点的确认电子邮件。

这是我的代码(我只复制了重要部分以使其尽可能客观)

webBrowser.Navigate("https://account.protonvpn.com/signup");
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
MessageBox.Show("end");

private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (webBrowser.ReadyState != WebBrowserReadyState.Complete)
        return;

    if (webBrowser.Url.ToString() == "https://account.protonvpn.com/signup")
    {
        buttons = webBrowser.Document.GetElementsByTagName("button");
        foreach (HtmlElement button in buttons)
        {
            if (button.InnerText == "Get Free")
            {
                button.InvokeMember("click");
                MessageBox.Show("clicked");
            }
            else
            {
                MessageBox.Show("not clicked");
            }
        }
        return;
    }
    if (webBrowser.Url.ToString() == "https://account.protonvpn.com/signup/account")
    {
        webBrowser.Document.GetElementById("username").SetAttribute("value", "username");
        webBrowser.Document.GetElementById("password").SetAttribute("value", "password");
        webBrowser.Document.GetElementById("passwordConfirmation").SetAttribute("value", "password");
        webBrowser.Document.GetElementById("email").SetAttribute("value", "email");
        buttons = webBrowser.Document.GetElementsByTagName("button");
        foreach (HtmlElement button in buttons)
        {
            if (button.InnerText == "Create account")
            {
                button.InvokeMember("click");
                MessageBox.Show("account created");
            }
            else
            {
                MessageBox.Show("error");
            }
        }
        return;
    }

    if (webBrowser.Url.ToString() == "https://account.protonvpn.com/signup/verification")
    {
        buttons = webBrowser.Document.GetElementsByTagName("button");
        foreach (HtmlElement button in buttons)
        {
            if (button.InnerText == "Send")
            {
                button.InvokeMember("click");
                MessageBox.Show("account created!");
            }
            else
            {
                MessageBox.Show("error!");
            }
        }
        return;
    }
}

我在运行代码时也遇到了一些“脚本错误”,不确定如何修复它们,也不确定这是否会影响运行代码时的任何内容。

脚本错误截图

标签: c#.netwebbrowser-control

解决方案


推荐阅读