【发布时间】:2015-12-23 22:25:48
【问题描述】:
我有这个元素
<span class="validationMsg">
<span id="TapuzLogin1_ctl01_UserNameRequired" title="יש להקליד שם משתמש" style="color:Red;display:none;">* יש להקליד שם משתמש<br>
</span>
<span id="TapuzLogin1_ctl01_PasswordRequired" title="יש להקליד סיסמה" style="color:Red;display:none;">* יש להקליד סיסמה<br>
</span>שם המשתמש או הסיסמה אינם נכונים
</span>
类是“validationMsg” 我需要获取字符串的值在底部:
שם המשתמש או הסיסמה אינם נכונים
这是希伯来语。
我可以通过Id获取和使用
private void button1_Click(object sender, EventArgs e)
{
navigate("mysite.net");
webBrowser1.Document.GetElementById("UserName").InnerText = textBox1.Text.ToString();
webBrowser1.Document.GetElementById("Password").InnerText = textBox2.Text.ToString();
webBrowser1.Document.GetElementById("LoginButton").InvokeMember("click");
}
但是我如何获得类元素值这个希伯来语字符串表示我是否正常登录。 我想检查如果这个元素包含这个字符串那么登录是错误的。
这是我在 form1 中如何登录的完整代码。 如果我输入正确的用户名和密码,我就可以正常登录。 但是我怎样才能指出输入的密码或用户名是否错误?
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;
using mshtml;
using HtmlAgilityPack;
namespace WebSite_Login_And_Browsing
{
public partial class LogIn : Form
{
IHTMLDocument2 doc;
string pagecontent;
public LogIn()
{
InitializeComponent();
webBrowser1.ScriptErrorsSuppressed = true;
}
public void ihtml(HtmlAgilityPack.HtmlDocument dom)
{
try
{
pagecontent = "";
doc = webBrowser1.Document.DomDocument as IHTMLDocument2;
pagecontent = doc.body.innerHTML;
dom.LoadHtml(pagecontent);
}
catch (Exception)
{
dom.LoadHtml(webBrowser1.DocumentText.ToString());
}
}
public void navigate(string url)
{
webBrowser1.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
}
private void button1_Click(object sender, EventArgs e)
{
navigate("http://www.tapuz.co.il/Common/SignInPage.aspx?backUrl=http://www.tapuz.co.il/Common/SignIn.aspx@loginDone=1");
webBrowser1.Document.GetElementById("UserName").InnerText = textBox1.Text.ToString(); webBrowser1.Document.GetElementById("Password").InnerText = textBox2.Text.ToString(); webBrowser1.Document.GetElementById("LoginButton").InvokeMember("click");
}
}
}
我在button1点击按钮事件中的代码
private void button1_Click(object sender, EventArgs e)
{
navigate("http://www.tapuz.co.il/Common/SignInPage.aspx?backUrl=http://www.tapuz.co.il/Common/SignIn.aspx@loginDone=1"); webBrowser1.Document.GetElementById("TapuzLogin1_ctl01_UserName").InnerText = textBox1.Text.ToString(); webBrowser1.Document.GetElementById("TapuzLogin1_ctl01_Password").InnerText = textBox2.Text.ToString(); webBrowser1.Document.GetElementById("TapuzLogin1_ctl01_LoginButton").InvokeMember("click");
}
文档完成事件
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var items = webBrowser1.Document.GetElementsByTagName("span");
foreach (HtmlElement item in items)
{
if (item.GetAttribute("className") == "validationMsg")
{
logingResults = item.InnerText;
if (logingResults.Contains("שם המשתמש או הסיסמה אינם נכונים"))
break;
}
}
}
【问题讨论】:
-
Document.GetElementsByTagName,遍历返回的数组,寻找具有您感兴趣的类名的数组。 -
如果我想从这篇文章中提取一个问题,请问有什么问题?这是您的问题:我想点击给定page 中的登录按钮并检查结果页面中是否有
</span>שם המשתמש או הסיסמה אינם נכונים</span>? -
什么是“public void ihtml(HtmlAgilityPack.HtmlDocument dom)”?
-
给定的网站有 404 问题或其他问题