简体   繁体   English

如何使用 Selenium IDE 单击指定的 li 自动完成 ul?

[英]How to click a specified li for an autocomplete ul with Selenium IDE?

I'm using Selenium IDE for some test and trying to use it to select an specified option from an autocomplete.我正在使用 Selenium IDE 进行一些测试,并尝试将其用于 select 自动完成中的指定选项。 My problem is, the autocomplete is built in a <ul> and the two <li> possibles are identical.我的问题是,自动完成是内置在<ul>中的,两个<li>可能是相同的。 How to click a specified li ?如何点击指定的li How to say to Selenium "click the first li " or "click the li with the text "apples"? I'm tried some ways that I found, but all are for other types of Selenium, and none are useful in Selenium IDE.如何对Selenium说“点击第一个li ”或“点击带有文本“apples”的li ?我尝试了一些我找到的方法,但都是针对其他类型的Selenium,并且在Selenium IDE中没有一个有用。

Here is the code:这是代码:

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1003; top: 360.683px; left: 549.5px; display: block; width: 401px;">
  <li class="ac_item ui-menu-item" role="menuitem">
    <a class="clearfix ui-corner-all" tabindex="-1">
      <span class="c1">
        <b>Apple</b>
        <br>
        <span class="small secondary">Apples</span>
        </span>
      </span>
    </a>
  </li>
  <li class="ac_item ui-menu-item" role="menuitem">
    <a class="clearfix ui-corner-all" tabindex="-1">
      <span class="c1">
        <b>Orange</b>
        <br>
        <span class="small secondary">Oranges</span>
        </span>
    </span>
    </a>
  </li>
</ul>

The Selenium API gives you a number of ways to accomplish this. Selenium API 为您提供了多种方法来完成此操作。 Since you don't have a traditional dropdown, you can't use the select command.由于您没有传统的下拉菜单,因此无法使用select命令。 Here are two solutions that click the second element in the autocomplete.这里有两个解决方案,点击自动完成中的第二个元素。

I created this JSFiddle to test the solutions.我创建了这个JSFiddle来测试解决方案。 The clicked element will turn red.单击的元素将变为红色。

Option 1: Use a CSS locator.选项 1:使用 CSS 定位器。

| Command               | Target                                               |
| open                  | http://jsfiddle.net/ansonhoyt/GYJW9/embedded/result/ |
| waitForElementPresent | css=ul.ui-autocomplete                               |
| click                 | css=ul.ui-autocomplete li.ui-menu-item:nth-child(2)  |

Note: Runs fast, and most people are comfortable with CSS, but this example requires that the targeted browser support the CSS3 nth-child selector.注意:运行速度很快,大多数人对 CSS 感到满意,但此示例要求目标浏览器支持 CSS3 nth-child 选择器。

Option 2: Use an XPath locator.选项 2:使用 XPath 定位器。

| Command               | Target                                               |
| open                  | http://jsfiddle.net/ansonhoyt/GYJW9/embedded/result/ |
| waitForElementPresent | css=ul.ui-autocomplete                               |
| click                 | //ul[contains(@class,'ui-autocomplete')]/li[2]       |

Note: XPath are less familiar for most people and can be very slow compared to CSS locators, especially in IE.注意:XPath 对于大多数人来说不太熟悉,与 CSS 定位器相比可能非常慢,尤其是在 IE 中。

For more ideas, check out the documentation for Selenium IDE on locating elements and on the available Selenese commands .有关更多想法,请查看 Selenium IDE 关于定位元素和可用的Selenese 命令的文档。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM