2013-07-23 59 views
0
<div class="flow-right"> 
    <button type="button" id="btnClear_page" class="uiButton" title="Clear" onmouseover="JSButtonUtils.doBtnOver(this)" onmousedown="JSButtonUtils.doBtnDown(this)" onmouseout="JSButtonUtils.doBtnOut(this)" onclick="if(JSButtonUtils.debounce(this, 1200)){ return false } else { return btnClear_page_click(this, true, true);} "> 
     <div class="uiButton-content"> 
     <div class="uiButton-label">Clear</div> 
     </div> 
    </button> 
    <button type="button" id="btnSearch_page" class="uiButton primary" title="Search" onmouseover="JSButtonUtils.doBtnOver(this)" onmousedown="JSButtonUtils.doBtnDown(this)" onmouseout="JSButtonUtils.doBtnOut(this)" onclick="if(JSButtonUtils.debounce(this, 1200)){ return false } else { return btnSearch_page_click(this, true, true);} "> 
     <div class="uiButton-content"> 
     <div class="uiButton-label">Search</div> 
     </div> 
    </button> 
</div> 

我有上面的html代碼,按鈕包裹裏面Div,我試圖找到按鈕,並點擊它,沒有運氣,也試過點擊Div沒有運氣。使用IE9瀏覽器和C#。不能點擊按鈕使用watin

using (var browser = new IE("https://Site.com")) 
      { 
    browser.Div(Find.ByText("Search")).Click(); 
     browser.Button(Find.ById("btnSearch_page")).Click(); 
} 
+0

你在用什麼瀏覽器? –

+0

更新 - IE9瀏覽器 – Jay

+0

你如何得到你的'IE'對象?附加,像這樣? 'IE瀏覽器= IE.AttachTo (Find.ByUrl(「http://www.google.com」));' –

回答

1

我曾在過去與華廷片狀經驗,我一直使用的保護條款在我的華廷代碼擋開NullReferenceException S,這樣的:

using (var browser = new IE("https://Site.com")) 
{ 
    var SearchDiv = browser.Div(Find.ByText("Search")); 
    // Only try to click the DIV if we found it 
    if(null != SearchDiv) 
    { 
     SearchDiv.Click(); 
    } 

    var SearchButton = browser.Button(Find.ById("btnSearch_page")); 
    // Only try to click the button if we found it 
    if(null != SearchButton) 
    { 
     SearchButton.Click(); 
    } 
} 
+0

我發現它,基本點沒有驗證,控件是在Iframe中,我需要先選擇Iframe然後再選擇子節點。 – Jay

+0

偉大的工作,祝您自動運行。 –

0

IFRAME元素被認爲是一個不同的形式元素,不屬於主要形式。 使用下面的代碼我們可以點擊iframe下的任何子元素。

WatiN.Core.Frame frame = browser.Frame(Find.ById("frameMain")); 
       var buttons = frame.Button(Find.ById("btnSearch_page")); 
       if (buttons.Exists) 
       { 
        buttons.Click(); 
        browser.WaitForComplete(); 
       }