2016-07-26 47 views
2

嘗試使用硒在組合框上鍵入時發現有困難。其實組合框使用JavaScript和Ajax來加載數據。當用戶單擊按鈕下拉框時,則組合框加載數據。實際上我發現困難,因爲我不能使用功能selectByValue()selectByVisibleText()。這裏是代碼:如何在使用硒的組合框上鍵入

<table id="isc_U5" class="OBFormFieldSelectControl" cellspacing="0" cellpadding="0" style="cursor:default;WIDTH:307px;" $9a="$9f" $89="isc_OBFKComboItem_8" role="presentation"> 
<tbody> 
<tr> 
<td style="white-space:nowrap;"> 
<input id="isc_U3" class="OBFormFieldSelectInputRequired" type="TEXT" tabindex="4078" style="WIDTH:281px;HEIGHT:17px;-moz-user-focus:normal;" autocomplete="OFF" onselect="isc_OBFKComboItem_8.$1162()" oninput="isc_OBFKComboItem_8._handleInput()" spellcheck="true" $9a="$9b" $89="isc_OBFKComboItem_8" handlenativeevents="false" name="transactionDocument"/> 
</td> 
<td id="isc_U7" class="OBFormFieldSelectPickerIcon" style="font-size:21px;"> 
</tr> 
</tbody> 
</table> 
+0

你的代碼在哪裏? –

回答

0

請嘗試下面的代碼。我用JAVA

  1. 使用普通的SendKeys:

    driver.findElement(By.cssSelector("input.OBFormFieldSelectInputRequired").sendKeys("Beginning letters of the word you want"); 
    
  2. 使用findElements

    List<WebElement> elements = driver.findElements(By.cssSelector("list items cssSelector")); 
         for (WebElement element : elements) { 
          if (element.getText().equalsIgnoreCase("Enter the text you want")) { 
           element.click(); 
           break; 
          } 
         } 
    
  3. 或使用Java Robot

    List<WebElement> elements = driver.findElements(By.cssSelector("list items cssSelector")); 
    Robot bot = new Robot(); 
    bot.setAutoDelay(1); 
    
    for (WebElement element : elements) { 
         bot.keyPress(KeyEvent.VK_DOWN); 
         bot.keyRelease(KeyEvent.VK_DOWN); 
         if (element.getText().equalsIgnoreCase("Enter the text you want")) { 
          bot.keyPress(KeyEvent.VK_ENTER); 
          bot.keyRelease(KeyEvent.VK_ENTER); 
          break; 
         } 
    } 
    
+0

我已經使用選項號碼1和2,但它是行不通的。也許選項3是現在最好的答案。我會嘗試使用它謝謝@selva – Hendrione

0

請嘗試以下c#代碼。

IWebElement comboBoxElement = driver.FindElement(By.Id("OBFormFieldSelectInputRequired")); 

選項1 直接使用的SendKeys,因爲它是唯一一個輸入元件發送的組合框的值。

comboBoxElement.SendKeys("ComboBox value to select"); 

1選項 類型Firts價值的幾個字符您想選擇

comboBoxElement.SendKeys("TE"); 

這將讓你的應用程序,以顯示與開始TE李值UL和LI標籤..現在找到UL元素並找到它的子LI元素。遍歷每個LI元素並在迭代期間找到期望值時執行.click。

+0

我已經使用sendKeys函數,但它不起作用。我用java代碼也許把它改成C#這將花費很大的努力 – Hendrione

相關問題