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

Фотография

При клике на элемент списка возникает ошибка


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

#1 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 12 декабря 2011 - 05:37

Здравствуйте! Возникла такая проблема. Нужно выбрать элемент списка, пытаюсь сделать это следующим образом:
1)Клик на список, появляется список с элементами списка
2)Клик на нужный элемент

При клике на элемент списка возникает ошибка:
[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsINativeEvents.click]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/.../.../.../Local/Temp/anonymous1135661876.webdriver-profile/extensions/fxdriver@googlecode.com/components/driver-component.js -> file:///C:/.../.../.../Local/Temp/anonymous1135661876.webdriver-profile/extensions/fxdriver@googlecode.com/components/wrappedElement.js :: anonymous :: line 108" data: no]

Как можно исправить эту ошибку, или как данную задачу можно реализовать иначе?
Использую Selenium 2 (WebDriver)
Язык C#.
  • 0

#2 barancev

barancev

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

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


Отправлено 12 декабря 2011 - 11:16

Это похоже на известный дефект 2864
Можете подробнее рассказать, как это случается? Показать код теста и страницу, где возникает такая ошибка?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 12 декабря 2011 - 12:47

Это похоже на известный дефект 2864
Можете подробнее рассказать, как это случается? Показать код теста и страницу, где возникает такая ошибка?

Страницу не могу указать, к сожалению. А вот код могу:
IWebDriver driver= new FirefoxDriver();
IWebElement Element;
Element = driver.FindElement(By.Id([указываю id списка]));
Element.Click();//Список появляется
Element = driver.FindElement(By.LinkText([указываю текст элемента списка]));
Element.Click();//Появляется ошибка, список при этом закрывается(то есть возможно что клик был)

  • 0

#4 barancev

barancev

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

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


Отправлено 12 декабря 2011 - 12:59

Совсем не можете показать страницу? Если она не содержит конфиденциальной информации, а просто недоступна извне, можно упаковать её в MAFF.

Хотя бы расскажите, как построен этот список, или приведите код списка. Похоже, что это не простой select, а какой-то ajax-виджет?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#5 Serzhant

Serzhant

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

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Сергей К
  • Город:Минск

Отправлено 12 декабря 2011 - 13:37

select id="" style="" tabindex="" name="" size="">
<option>none</option>
<option>System</option>
<option>SystemAnnouncements</option>
<option>SystemComponent</option>
</select>

Вот на этой странице дроп дауна - селект работает исправно, может и Вам поможет?

select.selectByVisibleText(fieldName);

User Input - Filling In Forms
  • 0

#6 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 13 декабря 2011 - 05:10

<select id="idselect" name="nameselect">
 
 <option value="2">Text 1</option>
 <option value="3">Text 2</option>
 <option value="5">Text 3</option>
 <option value="6">Text 4</option>

</select>
Вот такой список.
  • 0

#7 barancev

barancev

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

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


Отправлено 13 декабря 2011 - 06:15

Вот такой список.

Не верю! Если бы он был такой, поиск элементов By.LinkText ничего бы не находил вообще (потому что этот локатор ищет только ссылки, <a>) и вместо описанной ошибки был бы NullReferenceException.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#8 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 13 декабря 2011 - 06:51


Вот такой список.

Не верю! Если бы он был такой, поиск элементов By.LinkText ничего бы не находил вообще (потому что этот локатор ищет только ссылки, <a>) и вместо описанной ошибки был бы NullReferenceException.

Список действительно такой.
Я решил проблему с выбором элемента списка. Сделал как описано в примере,ссылка на страницу с примером находится в посте Serzhant.
Правда всё равно не получается найди нужный объект по тексту(пробовал PartialLinkText(а он тоже только ссылки ищет?)), пришлось использовать XPath.
А можно ли зная текст элементов списка получать их XPath ?
  • 0

#9 barancev

barancev

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

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


Отправлено 13 декабря 2011 - 07:08

Если это обычный список (select), рекомендуется использовать вспомогательный класс, который так и называется -- Select.
Этот способ самый правильный, потому что он учитывает свойство multiple (то есть возможность выбора нескольких опций из списка), нормализует пробелы в тексте опций и ещё делает всякие полезные штуки.


И по прежнему для меня остаётся загадкой, как же воспроизвести исходный дефект "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsINativeEvents.click]" :(
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#10 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 13 декабря 2011 - 09:02

Если это обычный список (select), рекомендуется использовать вспомогательный класс, который так и называется -- Select.
Этот способ самый правильный, потому что он учитывает свойство multiple (то есть возможность выбора нескольких опций из списка), нормализует пробелы в тексте опций и ещё делает всякие полезные штуки.


И по прежнему для меня остаётся загадкой, как же воспроизвести исходный дефект "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsINativeEvents.click]" :(

А что нужно подключить чтобы класс Select был доступен. Потому что у меня не получилось его использовать(не находит).
  • 0

#11 Serzhant

Serzhant

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

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Сергей К
  • Город:Минск

Отправлено 13 декабря 2011 - 10:35

import org.openqa.selenium.support.ui.Select;

Вот этого мне было достаточно, и интересно как у вас работает переключение в меню если у вас не получилось использовать класс Select?
  • 0

#12 Lemur

Lemur

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

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Левиков Владимир Владимирович

Отправлено 13 декабря 2011 - 11:10

import org.openqa.selenium.support.ui.Select;

Вот этого мне было достаточно, и интересно как у вас работает переключение в меню если у вас не получилось использовать класс Select?

Element = driver.FindElement(By.TagName("select"));//клик на сам select
Element.Click();
Element = Element.FindElement(By.XPath(Path));//клик на элемент списка
Element.Click();

Я вот так сделал. Спасибо нашел кажется этот класс :)
  • 0


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

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