【发布时间】:2011-11-03 19:11:36
【问题描述】:
假设我的 WebBrowser1 下载了一个包含以下行的页面:
<span customattr="hamolulu">hamolulu</span>
它位于 td 标签内、大表内、iFrame 内、div 内等。
如何使用 c# 点击这个东西?
我需要做以下事情:
int i = 0;
for (i = 0; i <= 500; i++)
{
if (webBrowser1.Document.GetElementsByTagName("span")[i].GetAttribute("customattr") == "hamolulu")
{
webBrowser1.Document.GetElementsByTagName("span")[i].InvokeMember("click");
break;
}//end if
}// end for
但由于某种原因它不能以这种方式工作,所以我在想是否可以检查 span 的 innerHTML 或 innerText?
我都试过了:
webBrowser1.Document.GetElementsByTagName("span").InnerHTML == "hamolulu"
webBrowser1.Document.GetElementsByTagName("span").InnerText == "hamolulu"
我两次都失败了。
更新:
我刚刚注意到这条线实际上是这样的:
<span customattr="hamolulu"><a>hamolulu</a></span>
于是我写了一个简单的函数:
int i = 0;
for (i = 0; i <= webBrowser1.Document.GetElementsByTagName("a").Count - 1; i++)
{
log(i.ToString()+ " : " +webBrowser1.Document.GetElementsByTagName("a")[i].InnerHtml);
} //log(string) is a custom function that saves all strings to a file log.txt
我所看到的是这个链接(和跨度)没有出现在我的日志中。 换句话说,getElementsByTagName("span") 和 getElementsByTagName("a") 看不到该项目。我的猜测是因为 iFrame。你对此有什么想法吗?
【问题讨论】:
标签: c# javascript .net html