尝试以编程方式单击公共网站上的输入type = submit按钮,其代码如下所示,该代码位于其他div类标记中。我正在使用Visual Studio 2017和C#。我对该网页上感兴趣的部分代码如下,并尝试单击“ btn primary”输入类型。
<div class="button_box_buttons">
<input type="submit" class="btn primary" value="Sign In"
onclick="return login_jsp.saveRemember && login_jsp.saveRemember() || true;" />
</div>
我的代码如下。
oIEMain = new SHDocVw.InternetExplorer()
{
Visible = true
};
Log("Navigate to Homepage: " + sURL);
oIEMain.Navigate(sURL);
HTMLDocument HTMLDoc = (HTMLDocument)oIEMain.Document;
....
mshtml.HTMLElementCollection HtmlElementcol = (mshtml.HTMLElementCollection)HTMLDoc.getElementsByTagName("input");
foreach (HtmlElement eleme in HtmlElementcol)
{
//Check the attributtes you want
if (eleme.GetAttribute("className") == "btn primary")
{
//Check even the text if you want
if (eleme.InnerText == "Sign In")
{
//Invoke your event
eleme.InvokeMember("click");
}
}
}
运行此代码,我得到未处理的异常:“ mshtml.HTMLElementCollection”。该操作失败,因为具有以下错误的IID为'{3050F56B-98B5-11CF-BB82-00AA00BDCE0B}'的接口的COM组件上的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT的异常:0x80004002(E_NOINTERFACE)) 。'
如何获得点击按钮?
谢谢!
答案 0 :(得分:0)
所以我首先看到的是您需要等待HTML下载。
oIEMain.Navigate(sURL);
无法同步运行。
因此,任何与页面HTML兼容的内容都需要保留在oIEMain.DocumentCompleted
事件处理程序中。
可能足以解决您的错误。您没有在问题中提供足够的信息来确定确定。
答案 1 :(得分:-1)
最终解决了该问题。下面是使它起作用的相关代码。希望它可以帮助别人。
eContinue = (HTMLHtmlElement)HTMLDoc.getElementsByTagName("input").item(4);
eContinue.click();