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

Публикации Gaiver

10 публикаций создано Gaiver (учитываются публикации только с 29 апреля 2023)


#78182 RFT, JAVA и find()

Отправлено автор: Gaiver 22 сентября 2010 - 11:17 в IBM Rational - Functional Testing

Тема закрыта.



#78181 RFT, JAVA и find()

Отправлено автор: Gaiver 22 сентября 2010 - 11:17 в IBM Rational - Functional Testing

В общем, всё было гораздо проще.

Первая ошибка: надо искать не по всему browser_HtmlBrowser, а по отдельному объекту, включающему в себя нужный мне. В данном случае - объект "МЕНЮ". И искать в нём.
Вторая ошибка: зачем громоздить кучу лишнего, если можно использовать только atProperty(".text","Уведомление"). Идеологически выглядит так:
GuiTestObject menu = ...; //объект добавляется через ObjectMap -> Insert New Object
TestObject[] foundTOs = menu.find(atProperty(".text","Уведомление"));
System.out.println("kol-vo elementov = " + foundTOs.length);
GuiTestObject link_notice = new GuiTestObject(foundTOs[0]);
link_notice.hover();
link_notice.click();
Время выполнения кода - меньше секунды.



#76643 RFT, JAVA и find()

Отправлено автор: Gaiver 30 июня 2010 - 11:24 в IBM Rational - Functional Testing

День добрый. Подскажите, пожалуйста, в верном ли направлении копаю, и если нет, то как лучше сделать (идейно).

Есть вебприложение с меняющейся менюшкой. При наведении мыши на пункт меню появляется подменю с несколькими пунктами.

Проблема:
На определённой странице менюшка содержит пункт "Создать" -> "уведомление". На других страницах пункта "Создать" нет.
Я могу попасть на эту определённую страницу двумя способами, принципиально отличающимися (в одном случае "с нуля", во втором - грубо говоря "повторный приход").
Страница содержит контент для 24 типов договоров, с большинством из которых можно делать одно и то же с вариациями. То есть вариантов 2*24. На самом деле, больше, но не суть.

Сначала я написал скрипты для прохождения по одному пути с посещением этой страницы.
link_создать().hover();
link_уведомление().click();
Всё работало прекрасно со всеми 24 типами договоров, работало быстро, и я был доволен.

Потом приступил к скриптованию второго пути. Так как страница одна и та же, то и скрипт для выполнения действий на этой странице тот же. Логично. Однако RFT упорно не хотел видеть объект "link_уведомление()", хотя при выполнении первого пути этот момент проскакивал без сучка и без задоринки.

Решил добавить для второго пути своё определение нужного мне объекта:
link_создать().hover();
if (Constant.isRetro) {link_уведомление2().click();}
else {link_уведомление().click();}
Однако, на одном типе договора (на котором добавлял этот второй объект в RFT) объект виден и выполняется .click(). А на всех остальных типах RFT не видит его!

Решил пойти путём "из пушки по воробьям": чтобы не плодить количество объектов захотел использовать find() с параметрами.
Кусок исходника страницы:
<td style="white-space:nowrap;width:100%;"><a class="ctl00_MainMenu_1 MasterMenuSubItemStyle ctl00_MainMenu_6" href="OCInputForms/OCInput.aspx?Type=Decision" style="border-style:none;font-size:1em;"><img src="Images/mail_folder16.gif" alt="" style="border-style:none;vertical-align:middle;" /> Уведомление</a></td>
Скрипт:
link_создать().hover();
TestObject[] foundTOs = browser_htmlBrowser().find(atList(atProperty(".text","Уведомление"),atDescendant(".class", "Html.A")));

System.out.println("kol-vo elementov = " + foundTOs.length); //лично для себя выводил в процессе дебага
GuiTestObject link_notice = new GuiTestObject(foundTOs[0]);

link_niotice.hover();
link_notice.click();
Ура! RFT объект находит и выполняет клик! Но ищет 20 секунд :(((

Вопрос: Что я делаю не так? Или как можно ускорить FIND? Может быть (что скорее всего), я неправильно понимаю метод FIND? В смысле какие параметры в нём указывать для ускорения.

Посоветуйте, пожалуйста. Заранее благодарен.



#75568 Определение Web-приложения как Win:Window вместо Html:Browser

Отправлено автор: Gaiver 04 мая 2010 - 12:18 в IBM Rational - Functional Testing

К счастью, есть машина (ремоут сервер), на котором стоит RFT с вьюхой из ClearCase. На этой машине RFT с тестами работает идеально. Перешёл на неё. Правда, там немного устаревшие скрипты. Но всё же это лучше, чем полные переустановка + переписывание всего.

Актуальные скрипты тоже наверное хранятся в СС?! Что мешает их запускать, а не устаревшие?

В связи с производственной необходимостью нужны 2 вьюхи на одно и то же (с моей точки зрения - хз зачем). Одна из них динамическая для девелоперов. Вторая - для меня.

Сначала моя вьюха тоже была динамической. Но RFT начал валиться из-за наличия двух вьюх, и пошло ветвление версионных деревьев. Было очень неприятно выковыривать нужные версии. На каком-то форуме я нашёл эту ошибку один-в-один. Там же и было объяснено, что причина в двух вьюхах. Поэтому было решено сделать мне снапшот. А это хранение файлов на локальной машине. То есть никаких версионных пересечений и ветвлений быть не может.

При переходе на remote-сервер я решил не заморачиваться и сразу перенёс с динамической на снапшот (там вьюха была старая). В общем, скрипты новые, но половина объектов не определяется, т.к. отсутствует в ObjectMap. Моё "перелопачивание" скриптов будет заключаться в том, чтобы занести все недостающие объекты в ObjectMap. Муторная работа. Но хотя бы уверен, что объект найдётся и именно так, как он был найден раньше. Плюс это быстрее.

Заодно проверю скрипты на актуальность и, если что, проапгрейжу.

Всё равно спасибо PRYANIK-у за помощь! Узнал много нового. Например, что новая версия JRE может порушить/сделать неработоспособным то, что раньше работало. У меня была уверенность, что новое поддерживает всё старое плюс ещё какие-то возможности. Оказывается, это не так. Впредь буду осмотрительней при апгрейдах.

ТЕМА ЗАКРЫТА.

P.S. Когда решу (если решу) свою проблему, отпишусь здесь для будущих поколений.



#75566 Определение Web-приложения как Win:Window вместо Html:Browser

Отправлено автор: Gaiver 04 мая 2010 - 11:22 в IBM Rational - Functional Testing

У меня один выход: переустановить и переписать всё, да? :(

Чисто переустановка RFT, я так понимаю, не поможет, ибо юзаться будет та JRE, которая используется на машине в текущий момент. А если тесты написаны под какой-то другой, то они будут продолжать не работать. Да?

Сложно так говорить. Попробуйте...
Я бы вообще попробовал удалить JRE выше версии 1.5

К счастью, есть машина (ремоут сервер), на котором стоит RFT с вьюхой из ClearCase. На этой машине RFT с тестами работает идеально. Перешёл на неё. Правда, там немного устаревшие скрипты. Но всё же это лучше, чем полные переустановка + переписывание всего.

Текущую свою машину оставил для экспериментов над RFT + заодно буду продолжать пытаться вернуть в работоспособное состояние.



#75563 Определение Web-приложения как Win:Window вместо Html:Browser

Отправлено автор: Gaiver 04 мая 2010 - 07:20 в IBM Rational - Functional Testing

На форуме Rational была описана подобная проблема, но там объекты "не были видны".
http://www.ibm.com/d...sageID=14235173

Судя по вашим логам они все же видны.

В том топике решение было следующее: вернуться к той JRE, в которой тесты писались изначально.

Пошёл в Start - Control Panel - JAVA - Java - View.
Из длинного списка JRE выбрал "1.5.0 C:\Program Files\IBM\SDP70\jdk\bin\javaw.exe" - JRE, которая была поставлена вместе с RFT.

Перегрузился.
Делаю Highlight-поиск объекта => "Test Object may not be visible."

У меня один выход: переустановить и переписать всё, да? :(

Чисто переустановка RFT, я так понимаю, не поможет, ибо юзаться будет та JRE, которая используется на машине в текущий момент. А если тесты написаны под какой-то другой, то они будут продолжать не работать. Да?



#75458 Определение Web-приложения как Win:Window вместо Html:Browser

Отправлено автор: Gaiver 27 апреля 2010 - 08:47 в IBM Rational - Functional Testing

На форуме Rational была описана подобная проблема, но там объекты "не были видны".
http://www.ibm.com/d...sageID=14235173

Судя по вашим логам они все же видны.

Ух! Здорово!
Похоже, всё-таки, у них была моя проблема.

1) Симптомы похожие: при попытке подсветить объект из objectMap RFT сначала говорил, что "объект отсутствует", потом стал говорить, что "невидим". Я приравнял "невидимость" и "отсутствие объекта". Видимо, зря я без достаточного опыта пытался строить свои догадки.

2) Их решение включает в себя мои изменения, которые я сделал, но не вернул обратно. В промежутке "работает - не работает" я обновил JRE с 1.5 (на котором писались все предыдущие рабочие скрипты) до 1.7. Кто ж мог подумать, что это может повлиять! :)

Завтра отпишусь о результатах.

Огромное спасибо пользователю "Pryanik" за наводку!



#75455 Определение Web-приложения как Win:Window вместо Html:Browser

Отправлено автор: Gaiver 27 апреля 2010 - 08:24 в IBM Rational - Functional Testing

Попробуйте вернуть настройку (текст из Help):
1.Open the ivory.properties file available at: <Functional Tester install directory>\Functional Tester\bin\.
2.Set the rational.test.ft.html.ajax.autotrace option to false. For example: rational.test.ft.html.ajax.autotrace = false


Извините, не упомянул об этом в своём топике: я уже возвращал эту настройку. А также вновь апдейтил ScriptHelper. (т.е. вернул назад изменения).


Та ошибка из лога и из консоли, что вы описали до "возврата" или "после"?

После. Ошибка из лога сделана непосредственно перед обращением за помощью.
Пробовал, кстати, и из-под другой учётной записи - результат тот же :(



#75448 Определение Web-приложения как Win:Window вместо Html:Browser

Отправлено автор: Gaiver 27 апреля 2010 - 06:59 в IBM Rational - Functional Testing

Попробуйте вернуть настройку (текст из Help):
1.Open the ivory.properties file available at: <Functional Tester install directory>\Functional Tester\bin\.
2.Set the rational.test.ft.html.ajax.autotrace option to false. For example: rational.test.ft.html.ajax.autotrace = false


Извините, не упомянул об этом в своём топике: я уже возвращал эту настройку. А также вновь апдейтил ScriptHelper. (т.е. вернул назад изменения).



#75360 Определение Web-приложения как Win:Window вместо Html:Browser

Отправлено автор: Gaiver 22 апреля 2010 - 13:20 в IBM Rational - Functional Testing

Добрый день.

Столкнулся с проблемой неправильного определения типа приложения (а также объектов).

Что было: проект по тестированию Web-приложения на Functional Tester работал без запинок.
Web-приложение в ObjectMap определялось как HTML: Browser.
Все объекты, соответственно, валидные, определись и использовались тестером.

Что стало: объекты не определяются во всём проекте => не используются => тест падает.

Ошибка из консоли:
Exception occurred during playback of script [RP_FEE.Another_Objects] [CRFCN0019E: RationalTestScriptException on line 81 of script RP_FEE.Another_Objects - java.awt.HeadlessException: null.].
Ошибка из лога:
*** FAIL 22 апреля 2010 г. 15:51:25 GMT+04:00   RP_FEE.Another_Objects.testMain had an unhandled exception.
	exception_context = click() called on GuiTestObject(Name: button_userPng, Map: userPng).
	exception_name = java.awt.HeadlessException
	exception_message = null
	script_name = RP_FEE.Another_Objects
	script_id = RP_FEE.Another_Objects.java
	line_number = 81
	exception_stack = 	at sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.java:285)
	at com.rational.test.ft.domain.html.HtmlGuiProxy.getClippingParentRectangle(HtmlGuiProxy.java:1006)
	at com.rational.test.ft.domain.html.HtmlGuiProxy.isInView(HtmlGuiProxy.java:1216)
	at com.rational.test.ft.domain.html.HtmlGuiProxy.click(HtmlGuiProxy.java:158)
	at com.rational.test.ft.domain.html.HtmlGuiProxy.click(HtmlGuiProxy.java:147)
	------------------------------
	------------------------------
	at com.rational.test.ft.object.interfaces.GuiTestObject.click(GuiTestObject.java:418)
	at RP_FEE.Another_Objects.testMain(Another_Objects.java:81)
	at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
	at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
	at org.eclipse.core.launcher.Main.run(Main.java:996)
	at org.eclipse.core.launcher.Main.main(Main.java:971)
Скрипт с момента его работоспособного состояния не менял, ObjectMap у этого скрипта не трогал.

Что делал в промежутке между "работает - не работает":

Записал другой скрипт для тестирования страницы на AJAXe. Скрипт не выполнялся при дефолтных настройках
(просто не находились объекты).
В хелпе прочитал, что для этого надо сделать:

Open the functional test script that needs to be modified for enabling the AJAX support.
Click Script > Open Test Object Map. Select the Document control from the list and click Administrative tab.
Replace the Test Object Class Name value from GuiTestObject to DocumentTestObject. Save and close the Test Object Map.
Click Script > Update Script Helper

Сделал. Объекты не начали находиться. Причём заметил, что в ObjectMap приложение стало определяться как
"Win: Window:"
в то время как до этого приложение определялось верно:
"Html: Browser: "

Ещё изменения, которые возникли "вдруг":
1) Все объекты во всех скриптах стали определяться как
_ДругиеОбъектыlink().click(atName(" Другие объекты"), atPoint(22,7));
и при этом не обнаруживаются в приложении.
Раньше этот же объект в этом же скрипте определялся так:
link_ctl00_A1().click();
и обнаруживался в приложении. P.S. сейчас и он не обнаруживается.
2) добавление нового объекта в любом ранее рабочем скрипте добавляет его в новый тип приложения "Win: Window:" в ObjectMap

По поводу "неопределения объектов" делал поиск на этом форуме и нашёл только одну похожую тему: RFT и кириллица
Но от проблемы, к сожалению, не избавился.

Подскажите, пожалуйста, в чём я напортачил, и как хотя бы вернуть в рабочее состояние всё, что работало.
Или хотя бы в какую сторону рыть, чтобы вернуть всё, как было.

P.S. Если дал недостаточно информации или в не совсем удобоваримом виде, извините, это мой первый вопрос здесь. HOWTO читал.