2016-07-27 75 views
0

我在選擇C#webdriver中的下拉值時遇到了問題。我收到一條錯誤消息,說它是一個不可見的元素。我研究了訪問Web驅動程序C#中隱藏的元素,但無法找到可行的解決方案。到目前爲止,我已經嘗試了Actions方法和Java腳本執行器,但不知道我做錯了什麼。我對自動化和使用C#語言都很陌生。從下拉列表中選擇隱藏值C#webdriver

這是使用操作方法,我下面的代碼

IWebElement actionsMenu = driver.FindElement(By.Id("InitiatorID")); 
Actions action = new Actions (driver); 
action.MoveToElement(actionsMenu).Build().Perform();  
driver.FindElement(By.CssSelector("[index ='2']")).Click();**/ 

腳本中使用Java腳本執行

((IJavaScriptExecutor)wd).ExecuteScript("arguments[0].Click()"); 
wd.FindElement(By.XPath("//input[@value = Bridget]")); 
String("arguments[0].trigger('click')"); 
wd.FindElement(By.XPath("//input[@value = Bridget]")); 

我是新來的Java腳本,以及,我不知道,如果語法不正確。 這是HTML

<div class="question"> 
    <label for="InitiatorID">Initiator:</label> 
    <div id="InitiatorID_chzn" class="chzn-container chzn-container-single" style="width: 270px;"> 
     <a href="javascript:void(0)" class="chzn-single" tabindex="-1"> 
     <span>Not Assigned</span> 
     </a> 
     <div class="chzn-drop" style="left: -9000px; width: 268px; top: 24px;"> 
     <div class="chzn-search"> 
      <input type="text" autocomplete="off" style="width: 233px;" tabindex="-1"> 
     </div> 
     <ul class="chzn-results"> 
      <li id="InitiatorID_chzn_o_0" class="active-result result-selected" style="">Not Assigned</li> 
     </div> 

有人可以請解決此問題的幫助。謝謝你的幫助。

+0

這是一個無序列表類別下拉列表,只有在點擊它後才能看到這些值。我建議的解決方案是首先找到你需要點擊的元素。並使用element.click。 Manuall在單擊元素時會看到UL和LI標籤的html代碼。您可以看到html代碼來識別UL和LI.捕獲所有LI標籤,並遍歷每個值並執行點擊操作。有很多線程運行在同一個問題上。請谷歌。 – Siva

回答

0

我覺得你讓事情太複雜了。不應該需要使用操作手動移動元素。你可以嘗試以下嗎?

//Find the dropdown container and click it 
IWebElement actionMenu = driver.FindElement(By.Id("InitiatorID")); 
actionMenu.Click(); //Feel free to condense this to just driver.FindElement().Click(); 

//Find the now visible option and click it 
driver.FindElement(By.XPath("//input[@value = Bridget]")).Click(); 
+0

如果它是一個擴展懸停的菜單,那就不同了,我可能會誤解這個問題。只要讓我知道,我會嘗試改變它。 –

+0

Hello Chai/Parker,涉及的手動操作是,單擊一個下拉列表,然後從下拉列表中單擊一個值。所以我的代碼甚至沒有點擊下拉菜單,因爲顯示沒有。 – Kalaivani

+0

'SelectElement'只適用於SELECT標籤。這是其中下拉實際上不是「SELECT」標籤的情況之一,因此此代碼不起作用。 – JeffC

1

我不知道是否有幫助,但讓我想試試:

首先,硒的webdriver基本上是自動化的東西,你可以做手工。手動你不能點擊一個隱藏的元素,所以用硒你也不能。如果手動選擇該值,可能需要點擊以打開下拉菜單,或者Parker Beck建議將鼠標懸停在某個元素上以打開下拉菜單。然後,一旦該元素可見並且處於活動狀態,您可以點擊它。 有了硒,你必須自動化所有相同的步驟。

也許答案更簡單一點:可能是在移動到元素action.MoveToElement(actionsMenu).Build().Perform();之後,您必須稍等一下才能點擊或者webdriver速度太快! 有很多方法可以等待,只需要搜索一下,你會發現一堆話題!

在閱讀以下注釋之後進行編輯: action.MoveToElement(actionsMenu).Build()。Perform(); ==>僅移動鼠標指針。它不會點擊它,所以你的下一個元素將不可見。如果您需要手動點擊2次,您的硒代碼也應該點擊兩次。從我目前瞭解的情況來看,您可能會錯過第一次點擊。

+0

我不同意「這不能解決問題的答案」 - 它的確如此。 –

相關問題