当我点击下拉列表选择其他国家/地区名称时,我正在拼命寻求解决方案,默认选择国家/地区“加拿大”。 我尝试了所有可能的方法使用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>
答案 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