大家好我的代码有以下问题,应该自动将我登录到网站https://app.xyz.com/LoginEntry.aspx:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace loggy
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void loggy_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
try
{
HtmlDocument doc = loggy.Document;
HtmlDocument username = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUsernameInput");
HtmlDocument password = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtPassword_wtPassword_wtPasswordInput");
HtmlDocument submit = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton");
username.SetAttribute("value", "jon.doe@gmail.com");
password.SetAttribute("value", "123");
submit.InvokeMember("click");
}
catch
{
}
}
}
}
检查登录字段向我显示以下内容:
<input name="wtLayoutLogin$SilkUIFramework_wt8$block$wtUsername$wtUsername$wtUserNameInput" type="text" maxlength="250" size="28" id="wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUserNameInput" tabindex="2" class="Mandatory" placeholder="Email or Username" onkeydown="return OsEnterKey('wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton', arguments[0] || window.event)" autofocus="autofocus">
我无法使用“GetElementById”。我在C#方面不是很有经验,我不知道如何转换文本以便它可用。
有人可以帮帮我吗?
答案 0 :(得分:1)
事实证明,在进一步查看之前,我应该确切地问你“我不能使用”GetElementById“”。让我成为一个教训。
问题是HtmlDocument.GetElementById()
会返回HtmlElement
,而不是HtmlDocument
。您的代码将无法编译,因为您尝试进行的操作是不可能的(也不是可取的)。
这将有效:
var username = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUsernameInput");
var password = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtPassword_wtPassword_wtPasswordInput");
var submit = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton");
或者
HtmlElement username = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUsernameInput");
HtmlElement password = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtPassword_wtPassword_wtPasswordInput");
HtmlElement submit = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton");
所有var
确实将变量定义为您尝试分配给它的任何类型。 HtmlDocument.GetElementById()is declared as returning
HtmlElement , so if you hover the mouse over
var in those lines, it'll tell you that
HtmlElement is the actual type of
用户名`或者其他什么。
jon.doe@gmail.com现在可以承担太阳战士的姿势了。