Watin:从IE获取网页并在其上启动JavaScript

时间:2012-10-28 11:26:28

标签: c# internet-explorer watin

我正在尝试通过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了很多,但仍然没有找到任何解决方案:( 有人可以帮忙吗? 感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用:

Browser.AttachTo<IE>(Find.ByUrl(u => u.Contains("NewMapping")))

确保你的功能没有返回空,因为这应该是没有捕获窗口的原因。

问候!