【发布时间】:2015-11-17 15:49:54
【问题描述】:
我正在创建一个测试来检查下拉列表的值,但是当我调用时
new SelectElement(Driver.FindElement(By.XPath("//table[@id='tblListUserSearch']/tbody/tr/td[5]/div/select")));
它会选择下拉列表和所有带有 DDL 的项目,但是当尝试获取选项文本时,它总是空白/空。
我也在为这个下拉菜单使用SumoSelect Jquery 插件。如果我要停止使用它,上面的行会删除 'select' 之前的 'div' 并且似乎可以工作。
我是否遗漏了什么,或者仅仅是 Selenium 不喜欢 JQuery 插件???
编辑 这是我开始测试的代码
Selenium.Open("/ListUserStatus.aspx");
Selenium.WaitForPageToLoad("30000");
Thread.Sleep(2000);
var mySelect = new SelectElement(Driver.FindElement(By.XPath("//table[@id='tblListUserSearch']/tbody/tr/td[5]/div/select")));
var options = mySelect.Options;
编辑 2015 年 11 月 19 日 这是我正在创建的 HTML
<td style="padding: 3px;">
<div class="SumoSelect" tabindex="0"><select style="display: none;" id="testCase" class="SlectBox dropDown clearDropDown" multiple="multiple" data-bind="selectedOptions: selectedPage ">
<!-- ko foreach: PageAccess -->
<!-- ko if: $root.getPriviledges($data) != false -->
<option value="25" data-bind="text: $data.PageAccess, value: $data.PageAccessID">SPID Search</option>
<!-- /ko -->
<!-- ko if: $root.getPriviledges($data) != false -->
<option value="37" data-bind="text: $data.PageAccess, value: $data.PageAccessID">Submit Transaction</option>
<!-- /ko -->
<!-- /ko -->
</select><p class="CaptionCont SlectBox"><span class="placeholder">Please Select...</span><label><i></i></label></p><div class="optWrapper multiple"><p class="select-all"><span><i></i></span><label>Select All</label></p><ul class="options"><li data-val="25"><span><i></i></span><label>SPID Search</label></li><li data-val="37"><span><i></i></span><label>Submit Transaction</label></li></ul><div class="MultiControls"><p class="btnOk">OK</p><p class="btnCancel">Cancel</p></div></div></div>
</td>
如您所见,我也在使用 Knockout.JS 来绑定下拉列表的数据。在此之后,我有一个简短的 JS 脚本将 SumoSelect 应用于下拉列表。下面的脚本
$('.dropDown').each(function () {
$(this).SumoSelect(
{
placeholder: 'Please Select...',
selectAll: true
});
});
应用此脚本后,它会创建 DIV <div class="SumoSelect" tabindex="0">。这似乎是导致问题的原因,因为在使用 selenium 时,WebDrivers 似乎看不到它。
旁注 当使用 Firefox 的 Selenium 插件并记录我的步骤并重播它们时,它能够找到 DDL 并在编写测试时单击它根本不喜欢它
【问题讨论】:
-
能否请您发布HTML代码或链接?所以我们可以帮助你
标签: jquery selenium selenium-webdriver xpath sumoselect.js