如何从带有硒C#的组合框中选择?

时间:2018-11-04 08:42:39

标签: c# selenium selenium-webdriver

如何将默认值下拉列表或组合框列表更改为其他值?

我想将allshow更改为onlyactive

<html>
<body>

<form method="post" action=""> <br>
First Name:<input type="text" size="12" maxlength="12" name="Fname"> <br>
Last Name:<input type="text" size="12" maxlength="36" name="Lname"> <br>
Gender:<br>
Male:<input type="radio" value="Male" name="gender"><br>
Female:<input type="radio" value="Female" name="gender"><br>
Favorite Food:<br>
Steak:<input type="checkbox" value="Steak" name="food[]"><br>
Pizza:<input type="checkbox" value="Pizza" name="food[]"><br>
Chicken:<input type="checkbox" value="Chicken" name="food[]"><br>

<div class="uk-width-1-6@m uk-grid-margin">
        <div class="uk-margin" data-select2-id="11">
            <label class="uk-form-label">Status :</label>
            <select class="uk-select js-select2 select2-hidden-accessible" name="search[active]" data-select2-id="7" tabindex="-1" aria-hidden="true">
                    <option value="" data-select2-id="9">AllShow</option>
                        <option value="1" data-select2-id="17">onlyactive</option>
                                    <option value="2" data-select2-id="18">onlyinactive</option>
            </select>
            <span class="select2 select2-container select2-container--default select2-container--below select2-container--focus" dir="rtl" data-select2-id="8" style="width: 217.325px;"><span class="selection"><span class="select2-selection select2-selection--single" role="combobox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-labelledby="select2-searchactive-21-container"><span class="select2-selection__rendered" id="select2-searchactive-21-container" role="textbox" aria-readonly="true" title="AllShow">AllShow</span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span></span></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>
        </div>
</div>

</form>

</body>
</html>

IWebDriver driver = new FirefoxDriver(service);
IWebElement comboBox = driver.FindElement(By.Name("search[active]"));
comboBox.Click();

使用此代码:

    // select the drop down list
    var education = driver.FindElement(By.Name("education"));
    //create select element object 
    var selectElement = new SelectElement(education);

但是出错

  

找不到类型或名称空间名称“ SelectElement”(您是   缺少using指令或程序集引用?)

Selenium.WebDriver.3.141.0

1 个答案:

答案 0 :(得分:1)

我相信您缺少程序集引用,命名空间SelectElement中提供了OpenQA.Selenium.Support.UI类。

螺母:

  

https://www.nuget.org/packages/Selenium.Support/3.141.0

然后它应该可以工作。

using OpenQA.Selenium.Support.UI;

var comboBox = driver.FindElement(By.Name("search[active]"));
new SelectElement(comboBox).SelectByText("onlyactive");

编辑:

SelectByText提供要选择的选项的文本。如果您的组合框不包含指定的文本值,则它将抛出NoSuchElementException