2012-10-28 49 views
0

我試圖通過URI找到打開的網頁並在其上啓動JS。我找到了一些樣本並寫了簡單的方法。這是它的外觀:Watin:從IE獲取網頁並在其上啓動JavaScript

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

爲什麼不使用WatiN打開網頁然後選擇特定的對象?當你有有效的IE實例時,你可以調用如下的代碼:ie.RunScript(「alert('script from WatiN!');」); –

回答

0

嘗試使用:?

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

並確保你的功能沒有返回空,因爲這應該是windows不被捕獲的原因。

Regards!

相關問題