2013-07-12 93 views
2

我在使用C#硒的應用開發中。我在網頁上有一個下拉菜單。點擊下拉菜單後,我想讓硒單擊確切的名稱。我現在成功點擊下拉菜單,我可以查看該菜單上的標題或選項。硒點擊標題從下拉菜單

我想的是,我需要的硒點擊基於應用程序時,首先打開一下用戶給予的稱號。實際上菜單按鈕不可見,但是當我將鼠標懸停在名稱上時,它是可見的。

Menu Button

我已經試過

var menu = driver.FindElement(By.ClassName("ms-vb")); 
SelectElement sel = new SelectElement(menu); 
sel.SelectByText(text); 

,其中文本是用戶輸入的文本。當運行應用程序,它拋出像

錯誤「元素應該是選擇但IMG」

我怎樣才能解決這個問題??我的任務就是ONHOLD由於這個..

任何評論都非常感激..

感謝

HTML

我希望ŧ他是你需要的代碼:

<table cellspacing="1" cellpadding="0" height="100%" onmouseover="OnMouseOverFilter(this)" class="ms-unselectedtitle" 
sortfields="SortField=Unify%5fx0020%5fApp&amp;SortDir=Asc&amp;View=%7b696D6B29%2d5A5D%2d47F3%2d97CF%2dECBFDD1E2CE8%7d" 
resulttype="" fieldtype="Lookup" displayname="Unify App" ctxnum="1" name="Unify_x0020_App" filterable="" filterdisable="" 
sortdisable="" sortable="" style="width:100%;" id="msomenuid2"> 
    <tbody> 
    <tr> 
     <td width="100%" nowrap="nowrap" class="ms-vb"> 
     <a sortingfields="SortField=Unify%5fx0020%5fApp&amp;SortDir=Asc&amp;View=%7b696D6B29%2d5A5D%2d47F3%2d97CF%2dECBFDD1E2CE8%7d" 
     onclick="javascript:return OnClickFilter(this,event);" href="javascript:" title="Sort by Unify App" 
     onfocus="OnFocusFilter(this)" id="diidSortUnify_x0020_App">Unify App 
     <img width="1" border="0" height="1" alt="Use SHIFT+ENTER to open the menu (new window)." class="ms-hidden" 
     src="/_layouts/images/blank.gif" /></a> 
     <img border="0" alt="" src="/_layouts/images/blank.gif" /> 
     <img border="0" alt="" src="/_layouts/images/blank.gif" /> 
     </td> 
     <td style="position: absolute; right: 1px;" class=""> 
     <img width="13px" alt="Open Menu" style="visibility: hidden;" src="/_layouts/images/menudark.gif" /> 
     </td> 
    </tr> 
    </tbody> 
</table> 
+0

我們需要看到頁面的HTML開始任何診斷的,也闡明你的意思是當你說「稱號基礎上,當應用程序第一次打開什麼用戶給出」 - >應用程序在什麼?你的網頁? – Arran

+0

@Arran:我的意思是我有一個對話框,用於要求用戶輸入標題。我需要selenium檢查用戶輸入的標題是否在網頁中有任何條目。 關於HTML,你的意思是讓你下拉按鈕的HTML代碼? – vysakh

+0

下拉按鈕和它周圍的東西 - 所以我們可以看到它究竟是如何在DOM中。 – Arran

回答

0

如果它不是一個正常的元素,SelectElement類將不起作用。

這是我如何處理JavaScript的下拉菜單:

//Click on the dropdown 
    driver.FindElement(By.ClassName("ms-vb")).Click(); 
    //Wait for the result list to appear 
    wait.Until(x => x.FindElement(By.LinkText("Target link to click"))); 
    //Click on the result you want 
    driver.FindElement(By.LinkText("Target link to click")).Click(); 

如果結果不是一個鏈接,你應該使用XPath以文字來找到它。防爆。

driver.FindElement(By.XPath("//*[text()='Target text']")).Click(); 

希望它有幫助。