使用C#和Selenium下拉值选择

时间:2013-11-27 19:17:55

标签: c# selenium

当我点击下拉列表选择其他国家/地区名称时,我正在拼命寻求解决方案,默认选择国家/地区“加拿大”。 我尝试了所有可能的方法使用xpath,CSS选择器到处都成功但这里无法使用。 请指教

HTML代码是:

<div id="ctl09_ctl02_ctl00_pay_ddInternationalCountriesCA_chzn" class="chzn-container chzn-container-single" style="width: 182px;">
    <a class="chzn-single" href="javascript:void(0)">
    <span>Canada</span>
    <div>
        <b></b>
    </div>
</a>
<div class="chzn-drop" style="left: -9000px; z-index: 1; width: 180px; top: 25px;">
    <div class="chzn-search">
    <input type="text" autocomplete="off" onkeyup="characterFilter(this);" style="width: 166px;">
</div>

2 个答案:

答案 0 :(得分:0)

你看到的是Chosen jQuery plugin,它包含了普通的html select元素,以提供更丰富的用户体验体验。

从测试/ selenium的角度来看,您不再使用现在隐藏在视图中的实际Select元素,而是由选择的jquery控件替换。

原始选择中的选项元素应在chzn-drop div中列为li元素,但我在示例代码中没有看到它们。

以下代码将帮助您从选择的jquery select元素中进行选择。需要选项具有ID,或者您需要使用不同的方式进行选择。在这种情况下,分享<div class='chzn-drop' >的完整HTML,我会更新。

//the chzn div container that wraps the select element  
var chznDivContainer = driver.FindElement(By.Id("ctl09_ctl02_ctl00_pay_ddInternationalCountriesCA_chzn"));

//the available options in the chzn select
var availableOptions = chznDivContainer.FindElements(By.XPath(".//div[@class='chzn-drop']/ul/li")).ToList();

//search for the item that you want to select, eg: Australia
var optionFound = this.AvailableOptions.FirstOrDefault(el => el.Text.Trim().Equals("Australia"));

//if required option is found, select it using jquery
if (found != null)
{
    var script = string.Format("jQuery('#{0}').mouseup();", found.GetAttribute("id"));
    IJavaScriptExecutor jsExecutor = driver as IJavaScriptExecutor;
    jsExecutor.ExecuteScript(script);
}

答案 1 :(得分:0)

尝试使用SelectElement。通过

创建一个
SelectElement select = new SelectElement(dropdownlist);

这里是文档:SelectElement