среда, 17 декабря 2008 г.

Снова о юзер контролах.

Как я уже писал ранее в заметке "Автологируемые контролы" что удобно использовать юзер контролы с функцией автологирования. Так же эти контролы удобно оснастить вспомогательными методами, которые могут очень сильно облегчить написание тестовых скриптов впоследствии. Такими вспомогательными методами могут быть:
1. Проверка текста в текстовом поле.
2. Проверка цвета текста для текста или ссылки.
3. Проверка существования текстового элемента или ссылки.
4. Выбор произвольного значения из выпадающего списка.
5. Проверка состояния чекбокса.
6. и т.д.

Рассмотрим пример несколько примеров.

1. Пример проверки текста в текстовом поле.

[-] winclass MyTextField : HtmlTextField
[+] void IsContain(string sValue, boolean bRaiseException optional)
[+] if (this.sValue == sValue)
[ ] Log.Write("Текст {sValue} существует в поле {this.sName()}.", "VERIFY")
[+] else
[+] if (bRaiseException == true)
[ ] raise 1, "Текст {sValue} не существует в поле {this.sName()}."
[+] else
[ ] Log.Write("Текст {sValue} не существует в поле {this.sName()}.", "ERROR")


2. Пример проверки цвета текста для текстового элемента.

[+] winclass MyText : HtmlText
[+] void VerifyTextColor(string sColor, boolean bRaiseException optional)
[ ] STRING sTextColor = this.GetTextProp("$TextColor")
[+] if(sTextColor != sColor)
[+] if (IsNull(bRaiseException) == true || bRaiseException == false)
[ ] Log.Write("Неверный цвет текста в {this.sName}! Ожидаемый: {sColor}, Реальный: '{sTextColor}'.", "ERROR")
[+] else
[ ] raise 1, "Неверный цвет текста в {this.sName}! Ожидаемый: '{sColor}', Реальный: '{sTextColor}'."
[+] else
[ ] Log.Write("Верный цвет текста в {this.sName}! Цвет текста: '{sTextColor}'", "VERIFY")


Теперь для того чтобы проверить содержимое текстового поля или проверить цвет текста достаточно вызвать соответствующий метод для объекта.


wMainWindow.MyTextField("$username").IsContain("admin")

Данный код проверяет содержится ли текст "admin" в текстовом поле "user name".

четверг, 4 декабря 2008 г.

Проверка значений в таблицах HtmlTable.

При тестирование веб приложений приходиться проверять значения в Html таблицах. Если же таких проверок значительное колличество, то удобно написать специальную функцию для такой проверки.
Для начала в фрейме мы описываем требуемую таблицу и все ее колонки. И пишем специальную функцию для проверки значиний в определенных колонках таблицы.

Описание таблицы в фрейме.

WINDOW wWebMailBox
tag "mailbox"

HtmlTable tlbLetters
tag "$mailList"

HtmlColumn clnFrom
tag "from"
HtmlColumn clnSubject
tag "subject"
HtmlColumn clnReceived
tag "received"


Реализация функции проверки.

void VerifyValueInColumn(WINDOW wColumn, STRING sText, INTEGER nRowNumber optional)
// --------- SPECS -----------------
//
// Функция делает проверку текстового значения в html таблице.
//
// args:
// wColumn - Обьект 'Колонка' в которой необходимо проверить текстовое значение.
// sText - Текст который необходимо проверить.
// nRowNumber - Номер строки таблицы в которой нужно проверить текст (По умолчанию равен 1).
// ----------- VARIABLES ------------
STRING sValue
STRING sColumnName
// ----------- STEPS ------------
// Column
if(IsNull(wColumn) || !IsSet(wColumn))
raise 1, "Need not null value for column."
// Text
if(IsNull(sText) || !IsSet(sText))
raise 1, "Need not null value for text."
// RowNumber
if(IsNull(nRowNumber) || !IsSet(nRowNumber))
nRowNumber = 1

do
BrowserPage.SetUserOption ("ShowBorderlessTables",0.75,USEROPT_DEFAULT)
if (wColumn.HtmlText("#{nRowNumber}").Exists(5))
sValue = wColumn.HtmlText("#{nRowNumber}").GetText()
else
sValue = wColumn.HtmlLink("#{nRowNumber}").GetCaption()
sColumnName = wColumn.GetCaption()

if(MatchStr("*{sText}*", sValue))
Log.Write ("Текст '{sText}' найден в колонке '{sColumnName}' в строке номер {nRowNumber}.", "Verify")
else
Log.Write ("Текст '{sText}' не найден в колонке '{sColumnName}' в строке номер {nRowNumber}.", "ERROR")
BrowserPage.SetUserOption ("ShowBorderlessTables",0.50,USEROPT_DEFAULT)
except
BrowserPage.SetUserOption ("ShowBorderlessTables",0.50,USEROPT_DEFAULT)


Пример использования функции.

//Проверяем что в колонке "From" в первой строке надпись "Иванов Иван Иванович".
VerifyValueInColumn(wWebMailBox.tlbLetters.clnFrom, "Иванов Иван Иванович")
//Проверяем что в колонке "Subject" в пятой строке надпись "Отчет за сентябрь".
VerifyValueInColumn(wWebMailBox.tlbLetters.clnSubject, "Отчет за сентябрь", 5)

Постоянные читатели