Как щелкнуть указанный li для автозаполнения ul с помощью Selenium IDE?

Я использую Selenium IDE для некоторого теста и пытаюсь использовать его для выбора указанной опции из автозаполнения. Моя проблема в том, что автозаполнение встроено в <ul>, а две возможности <li> идентичны. Как щелкнуть указанный li? Как сказать Selenium "щелкнуть первую li" или "щелкнуть li с текстом "яблоки"? Я пробовал несколько способов, которые нашел, но все они для других типов Selenium, и ни один из них не полезен в Selenium IDE.

Заранее спасибо и извините за мой плохой английский!

Вот код:

<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>

person Morton    schedule 20.09.2012    source источник


Ответы (1)


Selenium API дает вам несколько способов сделать это. Поскольку у вас нет традиционного раскрывающегося списка, вы не можете использовать команду select. Вот два решения, которые щелкают второй элемент в автозаполнении.

Я создал этот JSFiddle для тестирования решений. Выбранный элемент станет красным.

Вариант 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)  |

Примечание. Работает быстро, и большинству людей удобно работать с CSS, но в этом примере требуется, чтобы целевой браузер поддерживал селектор CSS3 nth-child.

Вариант 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]       |

Примечание. XPath менее знаком для большинства людей и может быть очень медленным по сравнению с локаторами CSS, особенно в IE.

Дополнительные идеи см. в документации по Selenium IDE в разделе поиск элементов и в доступны команды Selenese.

person Anson    schedule 19.11.2012
comment
Спасибо! Сейчас я использую веб-драйвер Selenium. Намного лучше. - person Morton; 30.04.2015