我正在尝试通过URI查找打开的网页并在其上启动JS。我找到了一些样本并编写了简单的方法。这就是它的样子:
private void GetHtmlCode()
{
string uri = GetTargetURI();
if(!string.IsNullOrEmpty(uri))
{
IE ie = IE.AttachTo<IE>(Find.ByUrl(uri));
htmlCode = ie.Eval(JavaScriptToRun);
}
else
{
MessageBox.Show("Target page is not opened",
"Notification", MessageBoxButtons.OK);
}
}
还有一种获取URI的方法:
private string GetTargetURI() //проверка URL
{
Regex reg;
Match match;
foreach(SHDocVw.InternetExplorer ie in shellWindows)
{
reg = new Regex(patternURL);
match = reg.Match(ie.LocationURL.ToString());
if (!string.IsNullOrEmpty(match.Value))
{
pageURL = ie.LocationURL.ToString();
return pageURL;
}
pageURL = string.Empty;
}
return pageURL;
}
- 所以URI完全正确或为空。
问题是IE ie = IE.AttachTo<IE>(Find.ByUrl(uri));
总是抛出
WatiN.Core.Exceptions.BrowserNotFoundException:找不到匹配约束的IE窗口:属性'href'等于uri'%my_target_URI%'。搜索在“30秒”后过期。
我已经google了很多,但仍然没有找到任何解决方案:( 有人可以帮忙吗? 感谢。
答案 0 :(得分:0)
尝试使用:
Browser.AttachTo<IE>(Find.ByUrl(u => u.Contains("NewMapping")))
确保你的功能没有返回空,因为这应该是没有捕获窗口的原因。
问候!