При клике на элемент списка возникает ошибка
#1
Отправлено 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#.
#2
Отправлено 12 декабря 2011 - 11:16
Можете подробнее рассказать, как это случается? Показать код теста и страницу, где возникает такая ошибка?
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#3
Отправлено 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();//Появляется ошибка, список при этом закрывается(то есть возможно что клик был)
#4
Отправлено 12 декабря 2011 - 12:59
Хотя бы расскажите, как построен этот список, или приведите код списка. Похоже, что это не простой select, а какой-то ajax-виджет?
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#5
Отправлено 12 декабря 2011 - 13:37
<option>none</option>
<option>System</option>
<option>SystemAnnouncements</option>
<option>SystemComponent</option>
</select>
Вот на этой странице дроп дауна - селект работает исправно, может и Вам поможет?
select.selectByVisibleText(fieldName);
User Input - Filling In Forms
#6
Отправлено 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>Вот такой список.
#7
Отправлено 13 декабря 2011 - 06:15
Не верю! Если бы он был такой, поиск элементов By.LinkText ничего бы не находил вообще (потому что этот локатор ищет только ссылки, <a>) и вместо описанной ошибки был бы NullReferenceException.Вот такой список.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#8
Отправлено 13 декабря 2011 - 06:51
Список действительно такой.Не верю! Если бы он был такой, поиск элементов By.LinkText ничего бы не находил вообще (потому что этот локатор ищет только ссылки, <a>) и вместо описанной ошибки был бы NullReferenceException.
Вот такой список.
Я решил проблему с выбором элемента списка. Сделал как описано в примере,ссылка на страницу с примером находится в посте Serzhant.
Правда всё равно не получается найди нужный объект по тексту(пробовал PartialLinkText(а он тоже только ссылки ищет?)), пришлось использовать XPath.
А можно ли зная текст элементов списка получать их XPath ?
#9
Отправлено 13 декабря 2011 - 07:08
Этот способ самый правильный, потому что он учитывает свойство multiple (то есть возможность выбора нескольких опций из списка), нормализует пробелы в тексте опций и ещё делает всякие полезные штуки.
И по прежнему для меня остаётся загадкой, как же воспроизвести исходный дефект "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsINativeEvents.click]" :(
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#10
Отправлено 13 декабря 2011 - 09:02
А что нужно подключить чтобы класс Select был доступен. Потому что у меня не получилось его использовать(не находит).Если это обычный список (select), рекомендуется использовать вспомогательный класс, который так и называется -- Select.
Этот способ самый правильный, потому что он учитывает свойство multiple (то есть возможность выбора нескольких опций из списка), нормализует пробелы в тексте опций и ещё делает всякие полезные штуки.
И по прежнему для меня остаётся загадкой, как же воспроизвести исходный дефект "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsINativeEvents.click]" :(
#11
Отправлено 13 декабря 2011 - 10:35
Вот этого мне было достаточно, и интересно как у вас работает переключение в меню если у вас не получилось использовать класс Select?
#12
Отправлено 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();
Я вот так сделал. Спасибо нашел кажется этот класс :)
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных