Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 点击网页的链接_C#_Winforms_Click_Webbrowser Control - Fatal编程技术网

C# 点击网页的链接

C# 点击网页的链接,c#,winforms,click,webbrowser-control,C#,Winforms,Click,Webbrowser Control,首先,很抱歉我的英语不好 问题很简单。我想点击C#(windows窗体)的链接 这是我使用的代码: int number_to_show = Convert.ToInt32(listView1_new_message.SelectedItems[0].SubItems[4].Text); int a_to_click = (number_to_show * 5) + 2; string titel_of_message = listView1_ne

首先,很抱歉我的英语不好

问题很简单。我想点击C#(windows窗体)的链接

这是我使用的代码:

int number_to_show = Convert.ToInt32(listView1_new_message.SelectedItems[0].SubItems[4].Text);
            int a_to_click = (number_to_show * 5) + 2;
            string titel_of_message = listView1_new_message.SelectedItems[0].SubItems[1].Text;
            HtmlWindow SContentFrame = webBrowser1.Document.Window.Frames[1];
            HtmlWindow Frame_A = SContentFrame.Document.Window.Frames[2];
            HtmlElementCollection links = Frame_A.Document.GetElementsByTagName("b");
            int link_counter = 0;
            foreach (HtmlElement link in links) {
                if (link_counter == a_to_click && link.InnerText.Equals(titel_of_message)) {
                    link.InvokeMember("Click");
                }
                link_counter++;
            }
它想要点击(我在调试中看到它发生了,当我点击一个messagebox时,messagebox出现了),但网页没有反应

这是网页上标记中的HTML代码:

<b><a href="" onclick="OnPhoenixRead('/mail/MessageRead?sid=7613BA4BF987D55FD171D53FAA24A259C7FDE435&amp;userid=*******&amp;seq=+Q&amp;auth=+A&amp;srcfolder=INBOX&amp;uid=3291&amp;srch=0&amp;style=default'); return false">Doorgest: testing 2</a></b>

所以不知怎的,它没有点击文本。。。(或不激活onclick事件处理程序)

我怎样才能使程序正常工作

提前感谢:D 废话

编辑1 这是包含所有电子邮件的表格的代码

<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
<tbody><tr valign="middle" bgcolor="#f0f0f0">
<td width="20" align="center"><input type="checkbox" name="CheckAll" onclick="ToggleCheckAll()"></td>
<td width="1"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td width="20" align="center"><font face="Verdana" size="2" color="#141F78"><b>!!</b></font></td>
<td width="1"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td width="20" align="center"><img src="/graphics/telfort/mail-icon.gif" width="20" height="20" border="0" alt=""></td>
<td width="1"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td width="20" align="center"><img src="/graphics/telfort/attachments.gif" width="20" height="21" border="0" alt=""></td>
<td width="1"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td class="mailtitlebar">&nbsp;<a href="" onclick="NavA('/mail/MessageSort?sid=3B886D11EEAAF546F83EFAA8506E56BC30949BC9&amp;userid=marcmeesters%40telfort.nl&amp;seq=+Q&amp;auth=+A&amp;srcfolder=INBOX&amp;sort=1&amp;style=default&amp;start=100&amp;end=1'); return false">Van&nbsp;</a>&nbsp;</td>
<td width="1"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td class="mailtitlebar"><a href="" onclick="NavA('/mail/MessageSort?sid=3B886D11EEAAF546F83EFAA8506E56BC30949BC9&amp;userid=marcmeesters%40telfort.nl&amp;seq=+Q&amp;auth=+A&amp;srcfolder=INBOX&amp;sort=5&amp;style=default&amp;start=100&amp;end=1'); return false">Onderwerp&nbsp;</a>&nbsp;</td>
<td width="1"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td class="mailtitlebar"><a href="" onclick="NavA('/mail/MessageSort?sid=3B886D11EEAAF546F83EFAA8506E56BC30949BC9&amp;userid=marcmeesters%40telfort.nl&amp;seq=+Q&amp;auth=+A&amp;srcfolder=INBOX&amp;sort=7&amp;style=default&amp;start=100&amp;end=1'); return false">Ontvangen&nbsp;</a>&nbsp;</td>
<td width="1"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td class="mailtitlebar"><a href="" onclick="NavA('/mail/MessageSort?sid=3B886D11EEAAF546F83EFAA8506E56BC30949BC9&amp;userid=marcmeesters%40telfort.nl&amp;seq=+Q&amp;auth=+A&amp;srcfolder=INBOX&amp;sort=9&amp;style=default&amp;start=100&amp;end=1'); return false">Grootte&nbsp;</a>&nbsp;</td>
</tr>
<tr><td colspan="15" bgcolor="#f0f0f0"><img src="/graphics/telfort/null.gif" height="1" width="1"></td></tr><!-- Message List Head --><!-- Message List --><tr valign="middle">
<td width="20" align="center" bgcolor="#f0f0f0"><input type="checkbox" name="msguid" value="3330"></td>
<td width="1" bgcolor="#f0f0f0"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td width="20" align="center">
<script>
var stat = '<IMG SRC="/graphics/priority_normal.gif" BORDER=0 width="10" height="18"><IMG SRC="/graphics/new.gif" BORDER=0 width="20" height="18"><IMG SRC="/graphics/attach_none.gif" BORDER=0 width="8" height="18">';
</script>
<script>
if (stat.indexOf('high.gif') > -1 )
{
document.write ('<font face="Tahoma" size="2" color="#141D7C"><b>!!</b></font>');
}
else if (stat.indexOf('low.gif') > -1 )
{
document.write ('<font face="Tahoma" size="2" color="#141D7C"><b>!</b></font>');
}
</script></td>
<td width="1" bgcolor="#f0f0f0"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td width="20" align="center" bgcolor="#ffffff"><script>
if (stat.indexOf('new.gif') > -1)
{
document.write ('<img src="/graphics/telfort/mail-icon.gif" width="20" height="20" border="0" alt="">');
}
else if (stat.indexOf('deleted.gif') > -1)
{
document.write ('<img src="/graphics/telfort/cancel.gif" width="20" height="20" border="0" alt="">');
}
else if (stat.indexOf('replied.gif') > -1)
{
document.write ('<img src="/graphics/telfort/reply.gif" width="20" height="20" border="0" alt="">');
}
else
{
document.write ('<img src="/graphics/telfort/mailopen-icon.gif" width="20" height="20" border="0" alt="">');
}
</script><img src="/graphics/telfort/mail-icon.gif" width="20" height="20" border="0" alt=""></td>
<td width="1" bgcolor="#ffffff"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td width="20" align="center" bgcolor="#ffffff"><script>
if (stat.indexOf('attach.gif') > -1)
{
document.write ('<img src="/graphics/telfort/attach-icon.gif" width="20" height="20" border="0" alt="">');
}
</script></td>
<td width="1" bgcolor="#ffffff"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td bgcolor="#ffffff" class="mailtxt">&nbsp;&nbsp;<b><a href="" onclick="OnPhoenixRead('/mail/MessageRead?sid=3B886D11EEAAF546F83EFAA8506E56BC30949BC9&amp;userid=marcmeesters%40telfort.nl&amp;seq=+Q&amp;auth=+A&amp;srcfolder=INBOX&amp;uid=3330&amp;srch=0&amp;style=default'); return false">Tweakers.net Nieuwsbrief</a></b></td>
<td width="1" bgcolor="#ffffff"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td bgcolor="#ffffff" class="mailtxt">&nbsp;&nbsp;<b><a href="" onclick="OnPhoenixRead('/mail/MessageRead?sid=3B886D11EEAAF546F83EFAA8506E56BC30949BC9&amp;userid=marcmeesters%40telfort.nl&amp;seq=+Q&amp;auth=+A&amp;srcfolder=INBOX&amp;uid=3330&amp;srch=0&amp;style=default'); return false">Samsung toont info eerste Windows Phone ...</a></b></td>
<td width="1" bgcolor="#ffffff"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td bgcolor="#ffffff" class="mailtxt">&nbsp;&nbsp;<b>jul 30</b></td>
<td width="1" bgcolor="#ffffff"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td bgcolor="#ffffff" class="mailtxt">&nbsp;&nbsp;<b>42.9 KB</b></td>
</tr>
<tr><td colspan="15" bgcolor="#bbbdbf"><img src="/graphics/telfort/null.gif" height="1" width="1"></td></tr>
<!-- Message List end--><tr valign="middle">
<td width="20" align="center" bgcolor="#f0f0f0"><input type="checkbox" name="msguid" value="3329"></td>
<td width="1" bgcolor="#f0f0f0"><img src="/graphics/telfort/null.gif" height="1" width="1"></td>
<td width="20" align="center">
<script>
var stat = '<IMG SRC="/graphics/priority_normal.gif" BORDER=0 width="10" height="18"><IMG SRC="/graphics/new.gif" BORDER=0 width="20" height="18"><IMG SRC="/graphics/attach_none.gif" BORDER=0 width="8" height="18">';
</script>
<script>
if (stat.indexOf('high.gif') > -1 )
{
document.write ('<font face="Tahoma" size="2" color="#141D7C"><b>!!</b></font>');
}
<!-- Message List end--></tbody></table>

!!
var stat='';
如果(stat.indexOf('high.gif')>-1)
{
document.write(“!!”);
}
else if(stat.indexOf('low.gif')>-1)
{
document.write(“!”);
}
如果(stat.indexOf('new.gif')>-1)
{
document.write(“”);
}
else if(stat.indexOf('deleted.gif')>-1)
{
document.write(“”);
}
else if(stat.indexOf('responsed.gif')>-1)
{
document.write(“”);
}
其他的
{
document.write(“”);
}
如果(stat.indexOf('attach.gif')>-1)
{
document.write(“”);
}
7月30日
42.9KB
var stat='';
如果(stat.indexOf('high.gif')>-1)
{
document.write(“!!”);
}
也许可以尝试更改

a href。。将行插入具有onClick事件的按钮或其他结构中。 您这样做,似乎只是href试图转到不存在的url(“”)

希望这就是问题所在。

或许可以尝试改变

a href。。将行插入具有onClick事件的按钮或其他结构中。 您这样做,似乎只是href试图转到不存在的url(“”)


希望这就是问题所在。

改变这句话

HtmlElementCollection links = Frame_A.Document.GetElementsByTagName("b");


您正在将链接设置为等于带有粗体标记的所有元素。由于链接位于粗体标记内,因此innertext条件将通过。然后,您尝试单击一个粗体标记,但它显然没有任何作用。

更改显示

HtmlElementCollection links = Frame_A.Document.GetElementsByTagName("b");


您正在将链接设置为等于带有粗体标记的所有元素。由于链接位于粗体标记内,因此innertext条件将通过。然后,您尝试单击一个粗体标记,这显然没有任何作用。

如果我理解正确,您希望单击服务器端的链接。 我认为最好的方法是使用JS

例如,假设我们有一个链接(简单标记)和一个服务器端按钮。单击按钮时,您希望自动单击链接

解决方案: 我们需要从服务器端调用返回一段可以单击链接的Javascript代码。此解决方案使用jQuery

代码隐藏:

protected void btnTest_Click(object sender, EventArgs e)
{
    ClientScript.RegisterClientScriptBlock(typeof(Page), "ClickOnLink", "<script type='text/javascript'>$(document).ready(function () { var link = $('#linkToClick'); link.click(); }); </script>");
}
protectedvoidbtntest\u单击(对象发送方,事件参数e)
{
RegisterClientScriptBlock(typeof(页面),“ClickOnLink”,“$(文档).ready(函数(){var link=$('#linkToClick');link.click(););
}
页面标记:

<asp:Button runat="server" ID="btnTest" OnClick="btnTest_Click" Text="Go!"/>
<a id="linkToClick" href="#" onclick="alert('Hi, Im clicked'); return false;">Click to alert</a>

如果我理解正确,您希望单击服务器端的链接。 我认为最好的方法是使用JS

例如,假设我们有一个链接(简单标记)和一个服务器端按钮。单击按钮时,您希望自动单击链接

解决方案: 我们需要从服务器端调用返回一段可以单击链接的Javascript代码。此解决方案使用jQuery

代码隐藏:

protected void btnTest_Click(object sender, EventArgs e)
{
    ClientScript.RegisterClientScriptBlock(typeof(Page), "ClickOnLink", "<script type='text/javascript'>$(document).ready(function () { var link = $('#linkToClick'); link.click(); }); </script>");
}
protectedvoidbtntest\u单击(对象发送方,事件参数e)
{
RegisterClientScriptBlock(typeof(页面),“ClickOnLink”,“$(文档).ready(函数(){var link=$('#linkToClick');link.click(););
}
页面标记:

<asp:Button runat="server" ID="btnTest" OnClick="btnTest_Click" Text="Go!"/>
<a id="linkToClick" href="#" onclick="alert('Hi, Im clicked'); return false;">Click to alert</a>

你总是可以按老规矩做:用鼠标模拟输入

首先,获取链接的位置-使用其ClientRectangle中的某个点(中间效果很好)

接下来,将鼠标移动到该点

并模拟一个点击


重要提示:这些链接必须在屏幕上显示,所以要使HTML元素足够大,或者插入一些巧妙的逻辑来滚动。。(或者简单地使用ScrollIntoView)

你总是可以按照老派的方式来做:用鼠标模拟输入

首先,获取链接的位置-使用其ClientRectangle中的某个点(中间效果很好)

接下来,将鼠标移动到该点

并模拟一个点击


重要提示:这些链接必须在屏幕上显示,所以要使HTML元素足够大,或者插入一些巧妙的逻辑来滚动。。(或者简单地使用ScrollIntoView)

这里有两件事:

  • 您想单击链接转到某个页面
  • 您希望触发链接的onClick事件
  • 第一个是小菜一碟。如果您想要第二个,您将看到一个用于c#:D的javascript引擎

    是的,用户脚本是一种可能的解决方案

    p、 如果我错了,请纠正我

    编辑:
    JavaScript引擎是浏览器的一个组件,通常与浏览器捆绑在一起。它负责页面上的所有JavaScript。现在,cURL、WebClient或wget没有这个引擎。他们只是给你简单的html内容。因此,自动化需要JavaScript的东西的更好选择是用户脚本。userscript(如果您以前没有听说过)是一段javascript代码,可以在您指定的页面上执行,它允许您在加载页面后立即在页面上运行代码。退房并离开。如果您仍然想知道如何使用JavaScript引擎,那么应该等待其他人对该主题做出响应。我不太清楚如何以独立的方式使用它。

    这里有两件事:

  • 您想单击链接转到某个页面
  • 您希望触发链接的onClick事件
  • 第一个是小菜一碟。如果您想要第二个,您将看到一个用于c#:D的javascript引擎

    是的,用户脚本是一种可能的解决方案

    p、 如果我错了,请纠正我

    编辑: JavaScript引擎是一个