如何使用 Selenium 在组合框上键入

How to type on combo box using Selenium

我在尝试使用 selenium 在组合框上键入时遇到困难。实际上组合框使用 javascript 和 ajax 来加载数据。当用户单击按钮 dropdown 时,组合框将加载数据。实际上我遇到了困难,因为我不能使用函数 selectByValue()selectByVisibleText()。这是代码:

<table id="isc_U5" class="OBFormFieldSelectControl" cellspacing="0" cellpadding="0" style="cursor:default;WIDTH:307px;" a="f" ="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.62()" oninput="isc_OBFKComboItem_8._handleInput()" spellcheck="true" a="b" ="isc_OBFKComboItem_8" handlenativeevents="false" name="transactionDocument"/>
</td>
<td id="isc_U7" class="OBFormFieldSelectPickerIcon" style="font-size:21px;">
</tr>
</tbody>
</table>

请尝试以下 c# 代码。

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

选项 1 使用 SendKeys 直接发送 ComboBox 值,因为它只是一个输入元素。

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

选项 2 输入您要查找的值的前几个字符 select

comboBoxElement.SendKeys("TE");

这将使您的应用程序显示 LI 值以 TE 开头的 UL 和 LI 标记。现在找到 UL 元素并找到其子 LI 元素。遍历每个 LI 元素并在迭代期间找到所需值时执行 .click。

试试下面的代码。我用过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;
             }
    }