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

Фотография

Selenium RC не находит элемент


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

#1 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 20 мая 2010 - 07:59

В общем записываю тест с помощью Selenium IDE и получаю такой вот код на C#:

selenium.Open("/admin/");
selenium.Click("link=Статьи");
selenium.WaitForPageToLoad("30000");
Код прост и без проблем воспроизводится с помощью Selenium IDE. Этот же код вставленный в Visual Studio отказывается работать, т.е. NUnit пишет:
ERROR: Element link=Статьи not found

Вот код страницы в виде скрина (не знаю как скопировать только нужное):
Изображение

Серым выделен нужный элемент.

Пробовал указать полный XPath к элементу разными способами. Т.к. с Селениумом работаю только неделю, на ум пришли только такие варианты, они вполне могут быть неправильными:
selenium.Click("link=Статьи");							 - собственно, это вариант из Selenium IDE, не работает
selenium.Click("//html/body/div/ul/li/div/ul/li/a");  - этот путь к элементу выдал мне огненный жук, тоже не работает
selenium.Click("//div[@id='page-box']/ul[@id='nav']/li[@id='AdminMenuItem3' | @class='active']/div/ul/li[@id='AdminMenuItem5']/a");  - это мой вариант, скорее всего неправильный, естественно не работает
Думаю, что всё гораздо проще, но я уже ничё придумать не могу.
Подскажите как локализовать эту ссылку и сделать всё айс?
Повторюсь - Selenium IDE воспроизводит без проблем, и светит зелёным, как светофор
  • 0

#2 enki86

enki86

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

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


Отправлено 20 мая 2010 - 08:49

вероятнее всего,
ссылка просто не успевает подгрузиться
попробуйте поставить паузу в N секунд после открытия старницы
если поможет, - вставте проверку на наличие элемента
  • 0

#3 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 20 мая 2010 - 09:41

Не хочется признавать, но это всё моя невнимательность. При воспроизведении тестов Selenium IDE использует уже существуюий инстанс ФФ, Selenium RC напротив открывает новый, в новом инстансе нужно заново проходить аутентификацию. А поскольку всё это происходит быстро - я не замечал этого.
Извините за беспокойство.
  • 0

#4 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 20 мая 2010 - 09:51

Чтобы не плодить темы, оформлю тут ещё одну ситуацию:
Необходимо ввести текст в текстовое поле редактора tinyMCE. Ни Selenium IDE ни RC не хотят находить это поле и тем более не пишут туда текст.
Вот код страницы:
Изображение

IDE вообще никак не определяет, а путь
selenium.Type("//html/body/div/div/div/form/div[2]/div/span/table/tbody/tr[2]/td/iframe/html/body[@id='tinymce']/p", "adawdawd");
работать не хочет.
Там ближе к элементу есть несколько tr, возможно tr[2] тут не подходит, хотя других идентификаторов у него нет...
Подскажите в чём может быть проблема?
  • 0

#5 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 20 мая 2010 - 15:37

Вопрос всё ещё актуален.
  • 0

#6 barancev

barancev

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

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


Отправлено 20 мая 2010 - 19:00

public class Untitled extends SeleneseTestCase {

	public void setUp() throws Exception {

		setUp("http://tinymce.moxiecode.com/", "*chrome");

	}

	public void testUntitled() throws Exception {

		selenium.open("/examples/full.php");

		selenium.selectFrame("content_ifr");

		selenium.focus("tinymce");

		selenium.type("tinymce", "Some text");

		selenium.selectFrame("relative=parent");

	}

}

  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 21 мая 2010 - 12:01

public class Untitled extends SeleneseTestCase {
	public void setUp() throws Exception {
		setUp("http://tinymce.moxiecode.com/", "*chrome");
	}
	public void testUntitled() throws Exception {
		selenium.open("/examples/full.php");
		selenium.selectFrame("content_ifr");
		selenium.focus("tinymce");
		selenium.type("tinymce", "Some text");
		selenium.selectFrame("relative=parent");
	}
}

Огромное спасибо, никуда оно не делось - отлично всё заработало!
  • 0

#8 Forve Avar

Forve Avar

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Лесейко Богдан

Отправлено 09 июля 2010 - 13:02

Не хочется признавать, но это всё моя невнимательность. При воспроизведении тестов Selenium IDE использует уже существуюий инстанс ФФ, Selenium RC напротив открывает новый, в новом инстансе нужно заново проходить аутентификацию. А поскольку всё это происходит быстро - я не замечал этого.
Извините за беспокойство.



если можно напишите как вы решили данную ситуацию подробнее, я сейчас столкнулся с такой же проблемой и никак не могу решить

если поможет вот мой код
[TestFixture]
	public class LoginSearch2
	{
		private ISelenium selenium;
		private StringBuilder verificationErrors;
		
		[SetUp]
		public void SetupTest()
		{
			selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://localhost");
			selenium.Start();
			verificationErrors = new StringBuilder();
		}
		
		[TearDown]
		public void TeardownTest()
		{
			try
			{
				selenium.Stop();
			}
			catch (Exception)
			{
				// Ignore errors if unable to close the browser
			}
			Assert.AreEqual("", verificationErrors.ToString());
		}
		
		[Test]
		public void TheLoginSearch2Test()
		{
			selenium.Open("/TheraSimplicity/Default.aspx");
			selenium.Click("_contentHeader__loginButton");
			selenium.WaitForPageToLoad("30000");
			selenium.Click("_loginControl__loginButton");
			selenium.WaitForPageToLoad("30000");
//тут возврат на Default.aspx и клин на кнопку Search...Тут оно и падает(((
			selenium.Click("_contentHeader__searchButon");
			selenium.WaitForPageToLoad("30000");
//тут все происходит на странице Search
			selenium.Type("_search__keywordsTextBox", "en");
			selenium.Click("_search__doSearchButton");
			selenium.WaitForPageToLoad("30000");
			selenium.Click("_resourceList__resourceDataList__ctl0__ctl0_resourceSelectedInput");
			selenium.Click("_resourceList__resourceDataList__ctl2__ctl0_resourceSelectedInput");
			selenium.Click("_resourceList__resourceDataList__ctl6__ctl0_resourceSelectedInput");
			selenium.Click("_resourceList__resourceDataList__ctl18__ctl0_resourceSelectedInput");
		}

  • 0

#9 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 09 июля 2010 - 14:00

В чём у Вас проблема, опишите подробнее. Как я понял Вы нажимаете кнопку логина, после чего Вас возвращает на стартовую... Что должно происходить далее?
  • 0

#10 Forve Avar

Forve Avar

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Лесейко Богдан

Отправлено 09 июля 2010 - 14:04

В чём у Вас проблема, опишите подробнее. Как я понял Вы нажимаете кнопку логина, после чего Вас возвращает на стартовую... Что должно происходить далее?



оно должно оттуда при клике на кнопку Search перейти на страницу Search.aspx, там заполнить поле словом поиска и нажать кнопку выполнить

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

а проблема заключаетса в том что оно пишет-мол нет такого контрола "_contentHeader__searchButon".
  • 0

#11 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 09 июля 2010 - 14:13

В чём у Вас проблема, опишите подробнее. Как я понял Вы нажимаете кнопку логина, после чего Вас возвращает на стартовую... Что должно происходить далее?



оно должно оттуда при клике на кнопку Search перейти на страницу Search.aspx, там заполнить поле словом поиска и нажать кнопку выполнить

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

Вы не можете кликнуть кнопку Search? Не находит элемент с соответствующим локатором? Вас не перекидывает на страницу поиска? В каком месте тест останавливается, каков текст ошибки? Если не находит кнопку, то сделайте скрин с кодом страницы и прикрепите к сообщению.
  • 0

#12 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 09 июля 2010 - 14:14

а проблема заключаетса в том что оно пишет-мол нет такого контрола "_contentHeader__searchButon".

код страницы в студию
  • 0

#13 Forve Avar

Forve Avar

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Лесейко Богдан

Отправлено 09 июля 2010 - 14:17

В чём у Вас проблема, опишите подробнее. Как я понял Вы нажимаете кнопку логина, после чего Вас возвращает на стартовую... Что должно происходить далее?



оно должно оттуда при клике на кнопку Search перейти на страницу Search.aspx, там заполнить поле словом поиска и нажать кнопку выполнить

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

Вы не можете кликнуть кнопку Search? Не находит элемент с соответствующим локатором? Вас не перекидывает на страницу поиска? В каком месте тест останавливается, каков текст ошибки? Если не находит кнопку, то сделайте скрин с кодом страницы и прикрепите к сообщению.



1. запускаю все через NUnit(незваю важно ли)
2. падает оно после того как залогинелось и пробует перейти на страницу поиска, переход из главной страници с помощу кнопки Search
3. текст ошибки - SeleniumTests.LoginSearch2.TheLoginSearch2Test : Selenium.SeleniumException : ERROR: Element _contentHeader__searchButon not found

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using Selenium;

namespace SeleniumTests
{
	[TestFixture]
	public class LoginSearch2
	{
		private ISelenium selenium;
		private StringBuilder verificationErrors;
		
		[SetUp]
		public void SetupTest()
		{
			selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://localhost");
			selenium.Start();
			verificationErrors = new StringBuilder();
		}
		
		[TearDown]
		public void TeardownTest()
		{
			try
			{
				selenium.Stop();
			}
			catch (Exception)
			{
				// Ignore errors if unable to close the browser
			}
			Assert.AreEqual("", verificationErrors.ToString());
		}
		
		[Test]
		public void TheLoginSearch2Test()
		{
			selenium.Open("/TheraSimplicity/Default.aspx");
			selenium.Click("_contentHeader__loginButton");
			selenium.WaitForPageToLoad("30000");
			selenium.Click("_loginControl__loginButton");
			selenium.WaitForPageToLoad("30000");

			selenium.Click("_contentHeader__searchButon");

			selenium.WaitForPageToLoad("30000");
			selenium.Type("_search__keywordsTextBox", "en");
			selenium.Click("_search__doSearchButton");
			selenium.WaitForPageToLoad("30000");
			selenium.Click("_resourceList__resourceDataList__ctl0__ctl0_resourceSelectedInput");
			selenium.Click("_resourceList__resourceDataList__ctl2__ctl0_resourceSelectedInput");
			selenium.Click("_resourceList__resourceDataList__ctl6__ctl0_resourceSelectedInput");
			selenium.Click("_resourceList__resourceDataList__ctl18__ctl0_resourceSelectedInput");
		}
	}
}

  • 0

#14 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 09 июля 2010 - 14:22

Дайте посмотреть на код элемента, который не находит ваш скрипт...

И еще, вот что показалось странным

selenium.Click("_contentHeader__searchButon");

вы уверены что слово Buton пишется с 1 буквой "t"??? Правильно будет Button

пробуйте кликнуть на _contentHeader__searchButton :) может поможет :) если нет, то просите девелоперов, исправить эту "помарку" :)
  • 0
Алексей Булат
Про Тестинг

#15 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 09 июля 2010 - 14:22

Не код Вашего теста, а HTML-код страницы, с которой вы работаете :angel:
  • 0

#16 Forve Avar

Forve Avar

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Лесейко Богдан

Отправлено 09 июля 2010 - 14:27

Не код Вашего теста, а HTML-код страницы, с которой вы работаете :angel:



хм....с страницей посложней она состоим из нескольких UserControl-ов.....ето очень много кода будет.....мне не жалко но достаточно много :)
я думал ето такаяже как і у вас jurteg

"При воспроизведении тестов Selenium IDE использует уже существуюий инстанс ФФ, Selenium RC напротив открывает новый, в новом инстансе нужно заново проходить аутентификацию"

я просто етот код втупую скопировал из Selenium IDE чтоб проверить, а он начал меня обижать..((((


ну если без кода никак то канеш я его сюда заброшу
  • 0

#17 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 09 июля 2010 - 14:32

Не код Вашего теста, а HTML-код страницы, с которой вы работаете :angel:



хм....с страницей посложней она состоим из нескольких UserControl-ов.....ето очень много кода будет.....мне не жалко но достаточно много :)
я думал ето такаяже как і у вас jurteg

"При воспроизведении тестов Selenium IDE использует уже существуюий инстанс ФФ, Selenium RC напротив открывает новый, в новом инстансе нужно заново проходить аутентификацию"

я просто етот код втупую скопировал из Selenium IDE чтоб проверить, а он начал меня обижать..((((

Всё равно нужен код страницы. Выделите нужный элемент в ФФ, используя FireBug, иначе ничего путёвого не выйдет, потому как телепатия - это способность, которая развита разве что у людей, которые несколько собак на этом съели... :crazy:
  • 0

#18 Forve Avar

Forve Avar

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Лесейко Богдан

Отправлено 09 июля 2010 - 14:37

ну вот собственно Default.aspx
<td></td>
	<td colspan="2" align="left">
			<table width="100%" border="0" cellpadding="0" cellspacing="0">
				<tbody><tr>
					
					<td id="_contentHeader__logoutCell"><input name="_contentHeader:_blankButton" id="_contentHeader__blankButton" src="Images/Core/clear.gif" alt="." type="image" align="AbsBottom" border="0"><input name="_contentHeader:_logoutButton" id="_contentHeader__logoutButton" onkeypress="return true;" src="Images/Core/Logout.gif" alt="Logout" type="image" align="AbsBottom" border="0"></td>
	
					<td id="_contentHeader__notesCell"><input name="_contentHeader:_notesButton" id="_contentHeader__notesButton" src="Images/Core/TheraNotes.gif" alt="TheraNotes" type="image" align="AbsBottom" border="0"></td>
	
					<td id="_contentHeader__filesCell"><input name="_contentHeader:_filesButton" id="_contentHeader__filesButton" src="Images/Core/TheraFiles.gif" alt="TheraFiles" type="image" align="AbsBottom" border="0"></td>
	
					<td id="_contentHeader__seachCell"><input name="_contentHeader:_searchButon" id="_contentHeader__searchButon" src="Images/Core/Search.gif" alt="Search" type="image" align="AbsBottom" border="0"></td>
	
					<td width="100%">&nbsp;&nbsp;</td>
				</tr>
			</tbody></table>
		</td>

  • 0

#19 jurteg

jurteg

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

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 09 июля 2010 - 14:45

ну вот собственно Default.aspx

<td></td>
	<td colspan="2" align="left">
			<table width="100%" border="0" cellpadding="0" cellspacing="0">
				<tbody><tr>
					
					<td id="_contentHeader__logoutCell"><input name="_contentHeader:_blankButton" id="_contentHeader__blankButton" src="Images/Core/clear.gif" alt="." type="image" align="AbsBottom" border="0"><input name="_contentHeader:_logoutButton" id="_contentHeader__logoutButton" onkeypress="return true;" src="Images/Core/Logout.gif" alt="Logout" type="image" align="AbsBottom" border="0"></td>
	
					<td id="_contentHeader__notesCell"><input name="_contentHeader:_notesButton" id="_contentHeader__notesButton" src="Images/Core/TheraNotes.gif" alt="TheraNotes" type="image" align="AbsBottom" border="0"></td>
	
					<td id="_contentHeader__filesCell"><input name="_contentHeader:_filesButton" id="_contentHeader__filesButton" src="Images/Core/TheraFiles.gif" alt="TheraFiles" type="image" align="AbsBottom" border="0"></td>
	
					<td id="_contentHeader__seachCell"><input name="_contentHeader:_searchButon" id="_contentHeader__searchButon" src="Images/Core/Search.gif" alt="Search" type="image" align="AbsBottom" border="0"></td>
	
					<td width="100%">&nbsp;&nbsp;</td>
				</tr>
			</tbody></table>
		</td>

Попробуйте вместо строки:
selenium.Click("_contentHeader__searchButon");
строку:
selenium.Click("//img[@alt='Search']");
  • 0

#20 Forve Avar

Forve Avar

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

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Лесейко Богдан

Отправлено 09 июля 2010 - 14:48

непошло
ошибка: SeleniumTests.LoginSearch2.TheLoginSearch2Test : Selenium.SeleniumException : ERROR: Element //img[@alt='Search'] not found

а ето точно не такаяже ошибка как била у вас, а то шото очень для меня похоже(телепатически=))
  • 0


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

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