2014-03-05 36 views
1

我想讀取一個值。下面是HTML代碼:硒與.NET:無效元素狀態:元素當前不可交互,可能不會被操縱

<select name="user_type" id="user_type" class="select"> 
<option value="0">Select</option> 
<option value="1"> Admin </option> 
<option value="1"> Agent </option> 
<option value="1"> Butler </option> 
<option value="1"> Ops </option> 
</select> 

這是我在硒實施使用.NET代碼:

query_UserType = driver.FindElement(By.Id("user_type")); 
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30)); 
query_UserType.Clear(); 
query_UserType.Click(); 
query_UserType.SendKeys(" Agent "); 
string str_myEle2 = query_UserType.GetAttribute("value"); 
Console.WriteLine("New User Type is: " + str_myEle2); 

它提供了錯誤「無效元素的狀態:元素目前可交互的,不得被操縱「on line:

query_UserType.Clear(); 

我不知道該如何解決這個問題。請幫忙。謝謝

+0

你爲什麼要清除和插入文本到選擇標籤?你想達到什麼目的? –

+0

實際上,我試圖從下拉列表中自動選擇「代理」,然後點擊「搜索」按鈕,「代理」結果必須顯示出來。我嘗試刪除query_UserType.Clear(),所以我沒有再收到異常,但我沒有看到所需的結果,它只需單擊「搜索」按鈕,而不需要在下拉列表中將值設置爲「代理」。不知何故,我想在下拉列表中設定值「Agent」。 – user3322942

+0

對不起,這裏HTML代碼: <選擇name = 「USER_TYPE」 ID = 「USER_TYPE」 類= 「選擇」> <選項值= 「0」>選擇 <選項值= 「2」>管理 <選項值=「3」>代理 <選項值=「4」>巴特勒 <選項值=「10」>行動 – user3322942

回答

0

Selenium .NET庫將select元素的操作封裝到名爲SelectElement的類中。你應該用這個來代替你這樣做的方式。

,從而可以參照WebDriver.Support.dll,把使用OpenQA.Selenium.Support.UI

using OpenQA.Selenium.Support.UI; 

SelectElement需要一個IWebElement作爲參數,所以它是你的責任,尋找select元素第一

IWebElement query_UserType = driver.FindElement(By.Id("user_type")); 
var select = new SelectElement(query_UserType); 

然後在這個班上有一種易用方法,允許你在內選擇一個由它的可見text財產。

select.SelectByText("Agent"); 

同樣,您正試圖找出當前選定的選項。該SelectElement類可以做到這一點很容易太:

IWebElement selectedOption = select.SelectedOption; 

現在SelectedOption將是一個IWebElement represting目前該select中選定的option。因此,要得到它的text財產,這沒有什麼不同,以其它元素:

selectedOption.Text; 

把它完全與結束:

driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30)); 
IWebElement query_UserType = driver.FindElement(By.Id("user_type")); 
var select = new SelectElement(query_UserType); 
select.SelectByText("Agent"); 
IWebElement selectedOption = select.SelectedOption; 
Console.WriteLine("Currently selected option is: {0}", selectedOption.Text); 
+0

它顯示錯誤「元素中不可見:元素是當前不可見和可能不會被操縱「: select.SelectByText(」Agent「); – user3322942

+0

那麼用戶必須做些什麼才能使「select」可見? – Arran

+0

:)多數民衆贊成我也困惑,我將如何使其可見。但它在瀏覽器中清晰可見。已經有另一個CSS添加到這個「select」中,可能是導致這個衝突的原因。 – user3322942

0

在我的情況,有2種元素的網頁上相同的ID 。我通過使用find element by xpath而不是find element by id來解決問題。

-1

這個問題也發生在我身上。在那裏我有問題的代碼段爲:

nameProject.clear();   
nameProject.click(); 

凡nameProject是一個輸入文本如下:

<input type="textbox" name="project" id="_pt_jobProperties_project"> 

我映射該輸入文本如下:

@FindBy(id = "_pt_jobProperties_project") 
    private WebElement nameProject; 

我解決它只是改變像波紋管的句子的順序:

nameProject.clear();   
nameProject.click(); 
0

如果只出現與Chrome瀏覽器的這個問題,刪除下面的命令:

query_UserType.Clear(); 

我面臨着Chrome的相同問題,它會清除清除命令後固定。

如果您確實想從文本框中刪除文本,請嘗試使用robot類或其他任何鍵盤模擬器,然後按「退格」/「刪除」按鈕。

相關問題