Перейти к содержимому

Фотография

Работа с элементом из множества


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 VitalyD

VitalyD

    Опытный участник

  • Members
  • PipPipPipPip
  • 285 сообщений
  • Город:Санкт-Петербург

Отправлено 14 марта 2011 - 16:22

Добрый день.

Обращаюсь к вам с таким вот вопросом:

int checkCount = selenium.getXpathCount("//input[@type='checkbox']").intValue();
-возвращает 4.

При этом следующая строка
selenium.click("(//input[@type='checkbox'])[1]");
или
selenium.click("(//input[@type='checkbox'])[last()]");

падает с сообщением 'Element not found'.

Как такое может быть??
  • 0

#2 SMakc

SMakc

    Новый участник

  • Members
  • Pip
  • 56 сообщений
  • ФИО:Максим
  • Город:Москва

Отправлено 14 марта 2011 - 16:40

Добрый день.

Обращаюсь к вам с таким вот вопросом:

int checkCount = selenium.getXpathCount("//input[@type='checkbox']").intValue();
-возвращает 4.

При этом следующая строка
selenium.click("(//input[@type='checkbox'])[1]");
или
selenium.click("(//input[@type='checkbox'])[last()]");

падает с сообщением 'Element not found'.

Как такое может быть??

Не правильный XPAth

//input[@type='checkbox'][1]
или
//input[@type='checkbox'][last()]

  • 0

#3 VitalyD

VitalyD

    Опытный участник

  • Members
  • PipPipPipPip
  • 285 сообщений
  • Город:Санкт-Петербург

Отправлено 15 марта 2011 - 07:31

спс, можно закрывать
  • 0

#4 fantom_as

fantom_as

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • Город:Харьков

Отправлено 06 апреля 2011 - 16:02

та же проблема
нормально отрабатывает только индекс [1] на остальное в Watch-е даёт Exception
пробовал
getText("//em[@class='roleSubNavigationItem'][" + i + "]")
и
getText("(//em[@class='roleSubNavigationItem'][" + i + "])")
и
"//div[@id='ext-gen150']/dl/dt/em[" + i + "]"
ну и в комбинации

собственно код:
public void selectRole(String RoleName) throws Exception
    {
        int RolesCount = (Integer) getXpathCount("//em[@class='roleSubNavigationItem']");//возвращает 7
        for (int i=1 ; i < RolesCount ; i++)
        {
            if (getText("//em[@class='roleSubNavigationItem'][" + i + "]") == RoleName)//падает с "element  not found", тут правда обёртка на getText одета, но пробовал и прямым selenium-овским методом - та же проблема
            {
                click("//em[@class='roleSubNavigationItem'][" + i + "]");
            }
        }
    }

ну и всё это selenium + eclipse + TestNG

Прикрепленные файлы

  • Прикрепленный файл  111111.jpg   36,69К   22 Количество загрузок:

  • 0

#5 enki86

enki86

    Постоянный участник

  • Members
  • PipPipPip
  • 231 сообщений


Отправлено 08 апреля 2011 - 05:04

а так:

for (int i=1 ; i < RolesCount.intValue() ; i++)

Интересно вы сравниваете int с объектом...
  • 0

#6 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 08 апреля 2011 - 05:53

а так:

for (int i=1 ; i < RolesCount.intValue() ; i++)

Интересно вы сравниваете int с объектом...

Там вот такая конструкция есть:
int RolesCount = (Integer) getXpathCount
  • 0

#7 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 08 апреля 2011 - 06:02

Локатор неправильно построен. Надо так:
getText("//dl[" + i + "]//em[@class='roleSubNavigationItem']")
Индексация работает только для элементов, находящихся в одном контексте, то есть для тех, у которых общий родительский нод.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#8 fantom_as

fantom_as

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • Город:Харьков

Отправлено 08 апреля 2011 - 11:16


а так:

for (int i=1 ; i < RolesCount.intValue() ; i++)

Интересно вы сравниваете int с объектом...

Там вот такая конструкция есть:
int RolesCount = (Integer) getXpathCount


Совершенно верно. именно эта конструкция была использована выше. Да и не дошёл бы я до цикла если бы не привёл типы.

Локатор неправильно построен. Надо так:

getText("//dl[" + i + "]//em[@class='roleSubNavigationItem']")
Индексация работает только для элементов, находящихся в одном контексте, то есть для тех, у которых общий родительский нод.


Спасибо, работает. Теперь буду знать. Теперь точно можно закрывать.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных