Selenium RC Возникли проблемы с XPath - PullRequest
5 голосов
/ 18 сентября 2009

Я использую Selenium RC с Chrome-режимом для Firefox для автоматизации тестовых случаев для веб-приложения. Я пишу сценарии на Java, используя среду TestNG и Eclipse. Теперь к главному:

У меня проблемы с Selenium RC для распознавания определенных XPath. Я проверяю свои XPath с расширением XPath-Checker для Firefox, которое не показывает ошибок. Затем я опробую его в Selenium IDE, чтобы убедиться, что XPath распознается. Даже IDE распознает элемент. Но его Selenium RC просто не распознает его. Что я могу сделать, чтобы исправить это?

В частности, я пытаюсь нажать на определенную область, заданную:

html/body/form/div[@id='someid1']/div[@class='someClass']/div[@id='someid2']/div[@id='someid3']/div[@id='someid4']/div[@title='titleOfTheElement']

Тогда я тоже попробовал:

//div[@title='titleOfTheElement']
xpath=//div[@title='Automated User']
xpath=/descendant::div[@title='Automated User']

Все равно ничего!

1) Может кто-нибудь подсказать, что может быть не так, или известно, что у Selenium есть проблемы с XPath?

2) Нет ли какого-либо аддона (похожего на XPath checker), который помог бы нам видеть вещи так, как видит Selenium RC? Таким образом, мы можем быть уверены, что RC распознает XPath.

Спасибо
Mugen

Вот код Selenium:

selenium.click("somelink");
selenium.waitForPageToLoad("30000");

boolean flag=false
  do{
    if (selenium.isTextPresent("Some text on the page which loads last"))
    {
      flag=true
    }
  }while(flag=false);


selenium.click("locator for area which is driving me crazy");

Теперь на последнем шаге, если бы я щелкнул в другом месте на странице (имеется в виду какой-то другой локатор), щелчок сработал бы.

HTML-код для области выглядит следующим образом:

<div id="someid1" style="overflow: hidden;">
<div id="someid2" title="title1" class="someclass">title1</div>
<div id="someid3" title="title2" class="someclass">title2</div>
<div id="someid4" title="required title" class="someclass">required title</div>
<div id="someid5" title="title3" class="someclass">title3</div>
<div id="someid6" title="title4" class="someclass">title4</div>
<div id="someid7" title="title5" class="someclass">title5</div></div>

Спасибо большое за внимание. : -)

Ответы [ 5 ]

6 голосов
/ 18 сентября 2009

Я не уверен, правильно ли иметь div с атрибутом title. Нет ли другого атрибута, который вы могли бы использовать, чтобы найти элемент?

В любом случае, вот версия локатора css, если она работает:

css=div[title='Automated User']
2 голосов
/ 18 сентября 2009

Из вашего примера вы сможете использовать идентификатор целевого элемента:

selenium.click("id=someid4");

Хотя я подозреваю, что идентификаторы генерируются динамически, и вы не можете использовать этот метод.

Я не вижу причин, по которым следующий xpath не будет работать:

selenium.click("//div[@title='required title']");

Другие способы нацеливания:

selenium.click("css=div[title='required title']");
selenium.click("css=.someclass:nth-child(4)"); //must be 4th child of parent element

Является ли div вашим фактическим целевым элементом? Отвечает ли он на событие клика? Если есть дочерний элемент, который реагирует на щелчок, вам нужно вместо этого настроить таргетинг. Также вы можете попробовать устранить неполадки с помощью следующих команд:

mouseDown
mouseUp
fireEvent
2 голосов
/ 18 сентября 2009

Однажды у нас возникла проблема с выражениями XPath при запуске тестов Selenium в Firefox.

  • Вы пробовали запускать одинаковые тесты с другим браузером?
  • Я помню, мы заменили все имена элементов на звездочки (*), и это помогло. т.е. * +1008 *

    // * [@ ид = 'someid1'] / * [@ класс = 'SomeClass'] / * [@ ид = 'someid2']

0 голосов
/ 17 января 2012

Возможно, ваш скрипт работает быстрее, чем веб-страница. Поэтому постарайтесь подождать некоторое время. как вы можете использовать waitForCondition("selenium.isElementPresent("ElementID")","20000");

Как кажется, с xpath.try это не поможет.

0 голосов
/ 18 сентября 2009

Вы уверены, что страница загружена правильно с RC, т.е. вы видите, что браузер открыт и страница загружается?

...