Selenium带有组合框控件和选择元素

时间:2016-02-27 19:18:33

标签: c# selenium selenium-webdriver combobox

我尝试自动化的产品有一个来自.Net的自定义组合框控件。

控件的类型为<input>,我只能用起始字母键入n search。

当我尝试使用WebDriver访问<select>元素时,它表示无法在<input>字段上执行操作。

当我尝试在.Sendkeys上执行iWebElement时,它只能选择带有起始文字的值。

有没有办法使用WebDriver使用整个文本选择组合框值?

示例DOM采用以下格式

<input name="icombobox_Text" tabIndex="7" title="Click to select theValue" class="ComboBox_Normal TxtBox_Css" id="icombobox_Text" accessKey="L" onkeydown="return C28.KeyDown();" onkeyup="return C28.KeyUp();" onkeypress="return C28.KeyPress();" onclick="$_('C28','TextClick')" onfocus="$_('C28','Focus')" onblur="$_('C28','Blur')" onselectstart="$_('C28','SelectStart')" onpaste="return false" oncontextmenu="return C28.KeyRightClick()" type="text" maxLength="255" maxSize="10" minSize="5" AUTOCOMPLETE="off"/>

组合中有4个项目。如何选择特定值。?

2 个答案:

答案 0 :(得分:0)

我得到了答案。

概念:

  1. Combo Control具有文本框+列表(下拉图像)。
  2. 首先通过点击它来找到下拉图片的元素。
  3. 然后使用“SelectElement”类从列表中选择值。
  4. 示例代码:

    IWebElement iWebelement = driver.FindElement(By.Id(“combobox_Text”)); //获取文本框的元素

    IWebElement iWebelementList = driver.FindElement(By.Id(“combobox_List”)); //获取列表/下拉框的元素

    SelectElement selected = new SelectElement(iWebelementList); //解析列表

    iWebelement.SendKeys(Keys.ArrowDown); //点击下拉图片

    selected.SelectByText( “一月”); //使用select元素类选择值

答案 1 :(得分:0)

使用以下代码,从下拉列表中选择一个选项:

IWebElement iwe = Driver.FindElement(By.XPath("//li[contains(@class,'..item...') and contains(text(),'"+text+"')]"));           

Thread.Sleep(500);

Actions action = new Actions(Driver);
Thread.Sleep(500);

action.MoveToElement(iwe).Click().Perform();