【问题标题】:Input with select remains empty during automated testing在自动化测试期间,带有 select 的输入保持为空
【发布时间】: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: &quot;Helvetica Neue&quot;, 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


【解决方案1】:

此问题是应用程序中的错误。测试手册时显示值的原因是这些值在缓存中可用。通过删除缓存(包括删除存储),会出现与自动化测试相同的问题。

已向第三方报告,将尽快解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多