【问题标题】:Selenium IDE - Cannot select text in an Autocomplete/ Unable to locate elementSelenium IDE - 无法在自动完成中选择文本/无法定位元素
【发布时间】:2017-04-25 07:57:00
【问题描述】:

我正在使用 Selenium IDE 并尝试单击字段中的自动完成项。我无法找到单击元素的方法。当您单击该项目时,它会填充下一个字段。我已经玩了两天了,无法弄清楚。如果我可以将鼠标光标放在该字段中,然后按下然后输入它可能会起作用。我试过了:

<td>clickAt</td>
<td>id=txtCategory</td>
<td></td>

<td>keyPress</td>
<td>css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all</td>
<td>\40</td>

<td>keyPress</td>
<td>css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all</td>
<td>\13</td>

但它没有工作。我曾尝试使用 sendkeys、keydown 和 keypress 使用焦点和/或模糊,但我似乎也无法让它工作。当您将鼠标悬停在自动完成单词上时,还会出现悬停状态。我找不到在 selenium 中访问该状态的方法,也不知道是否需要。任何帮助将不胜感激。

这是我在被 firebug 检查时尝试单击的字段图片的链接,以及我在 Selenium IDE 中尝试的一些操作。

我也试过了:

对于价值,我应该输入“客户支票退回”吗?我可以在该字段中获取文本,但无需实际单击“自动完成”文本,下一个字段将不会填充。这是我尝试过的:

<td>typeKeys</td>
<td>css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all</td>
<td>Customer check bounced</td>



<td>fireEvent</td>
<td>css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all</td>
<td>focus</td>



<td>fireEvent</td>
<td>css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all</td>
<td>blur</td>


<td>keyPress</td>
<td>css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all</td>
<td>\13</td>

谢谢, 鲍勃

【问题讨论】:

    标签: selenium-ide


    【解决方案1】:

    经过 2 天的搜索,我找到了问题的解决方案。您可以使用 html 找到项目并单击它们。以下是我使用的步骤:

    1. Click into the field to cause the autocomplete to fire
    
    <td>clickAt</td>
    <td>id=txtCategory</td>
    <td></td>
    
    2. Mouseover the field that contains the autocompleted word I need to click
    
    <td>mouseOver</td>
    <td>//html/body/ul/li/a/b</td>
    <td></td>
    
    3. Click the autocomplete item I need to click in order for the next field to function
    
    <td>click</td>
    <td>//html/body/ul/li/a/</td>
    <td></td>
    

    【讨论】:

      【解决方案2】:

      我正在使用 Selenium IDE 并一直在尝试选择从 google place 自动完成生成的元素,以下脚本对我来说很好,我希望它会有所帮助。

      <tr>
          <td>sendKeys</td>
          <td>id=address</td>
          <td>48 Westlawn Dr.</td>
      </tr>
      <tr>
          <td>keyDown</td>
          <td>id=address</td>
          <td>\40</td>
      </tr>
      <tr>
          <td>keyDown</td>
          <td>id=address</td>
          <td>\13</td>
      </tr>
      
      1. sendKeys 将触发下拉菜单
      2. keyDown 在选择之间跳转
      3. 最后keyDown是发送回车键

      诀窍是对同一元素执行所有操作。

      参考:http://www.software-testing-tutorials-automation.com/2013/06/selenium-keydown-command-to-select.html

      【讨论】:

        【解决方案3】:

        在 selenium 中使用 typekeys 命令进行自动完成命令。 这是为指定字符串中的每个字符调用 keyDown、keyUp、keyPress 的便捷方法;这对于需要显式按键事件的动态 UI 小部件(如自动完成组合框)很有用。

        typeKeys| css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all | value
        

        【讨论】:

        • 对于价值我应该把'客户支票退回'?我可以在该字段中获取文本,但无需实际单击“自动完成”文本,下一个字段将不会填充。这是我尝试过的:typeKeys| css=.ui-corner-all+.ui-corner-all+.ui-corner-all+.ui-corner-all | Customer check bounced
        猜你喜欢
        • 1970-01-01
        • 2022-01-06
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多