C# 使用SHDocVw运行IE时点击图像的问题

C# 使用SHDocVw运行IE时点击图像的问题,c#,.net,C#,.net,我试图用SHDocVw通过C#在IE中模拟点击图像,但遇到了一个问题。我的程序似乎在代码中找不到img。。以下是我得到的: SHDocVw.ShellWindows AllBrowsers = new SHDocVw.ShellWindows(); foreach (SHDocVw.InternetExplorer ieInst in AllBrowsers) { mshtml.IHTMLDocument2 htmlDoc = ieInst.Document as

我试图用SHDocVw通过C#在IE中模拟点击图像,但遇到了一个问题。我的程序似乎在代码中找不到img。。以下是我得到的:

SHDocVw.ShellWindows AllBrowsers = new SHDocVw.ShellWindows();
    foreach (SHDocVw.InternetExplorer ieInst in AllBrowsers)
    {
       mshtml.IHTMLDocument2 htmlDoc = ieInst.Document as mshtml.IHTMLDocument2;
       string html = htmlDoc.body.outerHTML;               

           foreach (mshtml.HTMLImg imgElement in htmlDoc.images)
           {
              if (imgElement.nameProp.ToString().Equals("icon_go.GIF"))
              {
                 imgElement.click();
              }
            }
     }
以下是我正在处理的html代码的一部分:

<TD align=center><INPUT title="View Detail Statistics" style="BORDER-LEFT-WIDTH: 0px; HEIGHT: 14px; BORDER-RIGHT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; WIDTH: 14px" src="../App_Themes/Company/Images/icon_go.GIF" type=image name=process1></TD></TR>

问题是,图片是网站上的一个按钮,但我不知道如何通过C代码按下它


是否有其他方法选择按钮?比如通过名称“process1”而不是图像名称?

正如您在评论中指出的,您正在循环IMG,但您应该循环输入:

foreach (IHTMLElement element in htmlDoc.all)
{
    var input = element as IHTMLInputImage;
    if (input != null && Path.GetFileName(input.src).Equals("icon_go.GIF", StringComparison.OrdinalIgnoreCase))
    {
        ((IHTMLElement)input).click();
    }
}

GIF!=gif:在
.Equals()
测试中设置ordinalignorecase。(并设置一个断点以确保它工作)感谢Alex的快速回答,但即使我改为.GIF,它仍然会跳过单击。它是否命中循环中的.click?如果是这样,请尝试.InvokeMember(“单击”),我现在看到,当我没有If语句时,它会点击.click():但另一张图片。。我想这可能是因为另一个图像在html代码中表示“IMG”而不是“type=image”?谢谢,我会试试这个!!使用IHTML需要一些程序集参考知识吗?您需要的是Microsoft.mshtml程序集,而不是COM mshtml参考它可以工作!!但是现在我必须让它在.Click()之前等待,这样网站才能完全加载。。但是谢谢Alex,这太棒了!!也可以
中断
在单击之后,为了避免检查更多元素,忘了提到我希望它转到下一个按钮(有10个相同名称的按钮(“icon_go.GIF”),所以我不想中断foreachloop!我只希望它等到下一页加载后再单击:)