【发布时间】:2019-09-19 08:43:28
【问题描述】:
在我的 Java/Selenium 框架中,我尝试填写一个电子邮件地址。通过手动测试,我单击该字段并打开一个下拉菜单。这个列表是用我输入的值过滤的。然而,对于自动化测试,这个列表仍然是空的。
<div class="k-widget k-multiselect k-multiselect-clearable k-state-hover" unselectable="on" title="" style="">
<div class="k-multiselect-wrap k-floatwrap" unselectable="on">
<ul role="listbox" unselectable="on" class="k-reset" id="create-task-users-list_taglist"></ul>
<input class="k-input k-readonly" style="width: 107.469px;" accesskey="" autocomplete="off" role="listbox" title="" aria-expanded="false" tabindex="0" aria-describedby="create-task-users-list_taglist" aria-owns="create-task-users-list_taglist create-task-users-list_listbox" aria-disabled="false" aria-busy="false">
<span unselectable="on" class="k-icon k-clear-value k-i-close k-hidden" title="clear" role="button" tabindex="-1"></span>
<span class="k-icon k-i-loading k-hidden"></span>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-stretch: 100%; font-style: normal; font-weight: 400; letter-spacing: normal; text-transform: none; line-height: 23.1px; position: absolute; visibility: hidden; top: -3333px; left: -3333px;">Assign Users</span>
</div>
<select id="create-task-users-list" multiple="multiple" data-placeholder="Assign Users" data-role="multiselect" aria-disabled="false" style="display: none;">
<option value="1001">User #1(user1@mytestapp.com)</option>
<option value="1002">User #2(user2@mytestapp.com)</option>
<option value="1003">User #3(user3@mytestapp.com)</option>
<option value="1004">User #4(user4@mytestapp.com)</option>
<option value="1005">User #5(user5@mytestapp.com)</option>
<option value="1006">User #6(user6@mytestapp.com)</option>
<option value="1007">User #7(user7@mytestapp.com)</option>
</select>
</div>
我使用 Selenium 执行相同的操作,但列表为空。使用了以下语句。
//input element
element.click();
element.sendKeys("user2@mytestapp.com");
//Filtered pull down menu
Select select = new Select(element);
select.selectByVisibleText(testElement.getValue());
另一个问题是我在测试中使用的这个网站是由第三方开发的,我在这里没有影响力。它用于支持我正在测试的网站。
为什么会这样?为什么该列表在手动测试期间可用,但不是自动化的?我有什么需要改变的吗?这是在浏览器启动中吗?
@编辑: 清除浏览器缓存 (Chrome) 没有帮助。
【问题讨论】:
-
从你的代码中看不清楚,上面的html中操作的是哪个“元素”。请包括元素是如何定义的。
-
我不明白你的意思。点击输入元素,选择元素显示其值。
-
根据您的回答,现在无关紧要,但要澄清一下,您的代码有一个名为“元素”的 WebElement 变量,但查看您提供的 HTML,WebElement 可能指向“输入”元素或“选择”元素。
-
感谢您的回答。现在我明白你的意思了。下次我会更完整。
标签: java selenium input drop-down-menu html-select