C# 使用C和Selenium下拉选择值

C# 使用C和Selenium下拉选择值,c#,selenium,C#,Selenium,当我点击下拉列表选择另一个国家名称时,我正在拼命寻找解决方案,默认情况下,选择了一个国家“加拿大”。 我尝试了所有可能的使用xpath、CSS选择器的方法,在任何地方都很成功,但在这里无法实现。 请告知 HTML代码是: <div id="ctl09_ctl02_ctl00_pay_ddInternationalCountriesCA_chzn" class="chzn-container chzn-container-single" style="width: 182px;">

当我点击下拉列表选择另一个国家名称时,我正在拼命寻找解决方案,默认情况下,选择了一个国家“加拿大”。 我尝试了所有可能的使用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>
您看到的是,它包装了简单的html select元素,以提供更丰富的UX体验

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

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

下面的代码将帮助您从所选的jquery选择元素中进行选择。要求选项具有ID,否则您将需要使用其他方式进行选择。在这种情况下,请共享您的完整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);
}

尝试使用SelectElement。创建一个

SelectElement select = new SelectElement(dropdownlist);

以下是文档:

下拉列表名称是否为chzn drop?如果是这样的话,你就不能根据类名查找控件吗?chzn是否选择了一个缩写?Aka…如果你把鼠标悬停在它上面或者类似的东西上,这个类会改变吗?如果是这样的话,那么您需要使用Actions或者其他C语言的替代方法。您尝试过什么?向我们展示您当前使用的确切代码以及您遇到的任何错误。这是代码选择CanadaCan您可以编辑您的问题并添加元素的完整内容吗?这也应该有选择。我已经更新了我的答案,但是您的特定项的实现可能不同。我也这样做了。但是生成警报元素应该是select,而不是div。