网站登录GetElementById(...)

时间:2013-07-14 09:56:10

标签: c# youtube getelementbyid

我正在尝试通过在两个文本框中键入我的凭据来登录我的youtube帐户。 我还有一个按钮和一个webbrowser。这是youtube login page

按钮代码:

webBrowser1.Document.GetElementById("Email").SetAttribute("value",credentials[0]);
webBrowser1.Document.GetElementById("Passwd").SetAttribute("value", credentials[1]);
webBrowser1.Document.GetElementById("signIn").InvokeMember("submit");

所以现在我的问题是它没有点击登录按钮。如果我点击开始,它会自动输入我的电子邮件和密码,但不会点击登录按钮。

有谁知道为什么?

3 个答案:

答案 0 :(得分:0)

您可以尝试使用signIn按钮上的jQuery调用click事件。

另外,方法名称不提交,名称为signIn

答案 1 :(得分:0)

我之前已经完成了这项工作,但还有几步。

using mshtml;

    static private SHDocVw.WebBrowser_V1 Web_V1;
    Form1_Load ()
    {
        Web_V1 = (SHDocVw.WebBrowser_V1)webBrowser1.ActiveXInstance;
    }

    webBrowser1_DocumentComplete ()
    {
        HTMLDocument pass = new HTMLDocument(Web_V1.Document);
        HTMLInputElement passBox = (HTMLInputElement)pass.all.item("Passwd", 0);
        passBox.value = "Password"; 
        HTMLInputElement logBox = (HTMLInputElement)pass.all.item("Email", 0);
        logBox.value = "Email";
        HTMLInputElement submit = (HTMLInputElement)pass.all.item("signIn", 0);
        submit.click();
    }

之前这对我有用。

答案 2 :(得分:0)

将<{1}}用于此

但是如果你遇到类似的问题,那么检查一下ajax函数是否仍然在执行。

即使文件加载事件在仍然加载ajax调用时被触发,那么在ajax函数完成之前,您可能无法获得完整的文档。

为此你需要等到它被加载然后调用成员。 Check this article关于如何等待ajax加载完成。