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

Аудит и оптимизация QA-процессов
онлайн, начало 24 декабря
Автоматизация функционального тестирования
онлайн, начало 27 ноября
Логи как инструмент тестировщика
онлайн, начало 30 ноября
Тестирование REST API
онлайн, начало 30 ноября
Фотография

Написать несложный скрипт


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

#1 vitlage

vitlage

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

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Гладкий Виталий

Отправлено 02 марта 2011 - 11:23

Здравствуйте, нужно автоматизировать обычный Windows калькулятор, написать скрипт в SilkTest, который будет делать такие действия:
1. проверить sqrt
2. 2+2
3. 1/х
Очень нужно, заранее благодарю)
  • 0

#2 Int_21h

Int_21h

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Александр

Отправлено 17 октября 2011 - 11:28

Выглядеть код должен примерно так:

[ ] window Calc = MainWin("$C:\WINDOWS\system32\calc.exe")
[-] testcase Calculator() appstate none
	[ ] Calc.SetActive()
	[ ] //Standard skin
	[ ] Calc.Menu("#2").MenuItem("#1").Pick()
	[ ] //SQRT
	[ ] Calc.PushButton("#3").Click()
	[ ] Calc.TextField("#1").SetText("16")
	[ ] sleep(2)
	[ ] INTEGER iFirst = Val(Calc.TextField("#1").GetText())
	[ ] Calc.PushButton("#9").Click()
	[ ] sleep(2)
	[ ] INTEGER iLast=Val(Calc.TextField("#1").GetText())
	[ ] INTEGER iRes=iLast*iLast
	[-] if(iFirst==iRes)
		[ ] Print("sqrt passed! {iLast} * {iLast} = {iFirst}")
	[-] else
		[ ] Print("sqrt failure! {iLast} * {iLast} != {iFirst}")
	[ ] //2+2
	[ ] Calc.PushButton("#3").Click()
	[ ] sleep(2)
	[ ] Calc.TextField("#1").SetText("2")
	[ ] Calc.PushButton("#26").Click()
	[ ] sleep(2)
	[ ] Calc.TextField("#1").SetText("2")
	[ ] INTEGER iValue = Val(Calc.TextField("#1").GetText())
	[ ] Calc.PushButton("#27").Click()
	[ ] sleep(2)
	[ ] INTEGER iSum = Val(Calc.TextField("#1").GetText())
	[ ] INTEGER iEtalon = 4
	[-] if(iEtalon == iSum)
		[ ] Print("Passed! {iValue} + {iValue} = {iSum}")
	[-] else
		[ ] Print("Failured! {iValue} + {iValue} != {iSum}")
	[ ] //1/x
	[ ] Calc.PushButton("#3").Click()
	[ ] Calc.TextField("#1").SetText("1")
	[ ] sleep(2)
	[ ] INTEGER iUp = Val(Calc.TextField("#1").GetText())
	[ ] Calc.PushButton("#8").Click()
	[ ] sleep(2)
	[ ] LIST of INTEGER liValue = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
	[ ] INTEGER i = RandInt(1, ListCount(liValue))
	[ ] Calc.TextField("#1").SetText("{liValue[i]}")
	[ ] sleep(2)
	[ ] INTEGER iDown = Val(Calc.TextField("#1").GetText())
	[ ] Calc.PushButton("#27").Click()
	[ ] sleep(2)
	[ ] INTEGER iCalcRes = Val(Calc.TextField("#1").GetText())
	[ ] INTEGER iResult = iUp/iDown
	[-] if(iResult == iCalcRes)
		[ ] Print("Passed! {iUp} / {iDown} = {iResult}")
	[-] else
		[ ] Print("Failured! {iUp} / {iDown} != {iResult}")



Или так:


[ ] //included files
[ ] use "decl.inc"
[ ] use "product.inc"
[ ] 
[ ] 
[ ] //project scripts
[ ] 
[ ] 
[-] testcase db0000() appstate none //Set Standard mode, Move to 0,0 desctop coordinates
	[ ] wMain.SetActive()
	[ ] wMain.Menu("#2").MenuItem("#1").Check()
	[ ] RECT rPosition = wMain.GetRect()
	[ ] Desktop.BeginDragAt(1, rPosition.xPos+50, rPosition.yPos+10)
	[ ] Desktop.EndDragAt(50, 10)
[ ] 
[-] testcase db0001() appstate none //test SQRT function. Use SetText()
	[ ] wMain.SetActive()
	[ ] wMain.PushButton("#3").Click()
	[ ] wMain.TextField("#1").SetText("16")
	[ ] INTEGER iFirst = Val(wMain.TextField("#1").GetText())
	[ ] wMain.PushButton("#9").Click()
	[ ] INTEGER iRes = Val(wMain.TextField("#1").GetText())
	[ ] INTEGER iEtalon = iFirst/iRes
	[-] if(iEtalon == iRes)
		[ ] Print("SQRT passed! {iRes} * {iRes} = {iFirst}")
	[-] else
		[ ] Print("SQRT failured! {iRes} * {iRes} != {iFirst}")
	[ ] 
[-] testcase db0002() appstate none //test "+" function. Use LIST
	[ ] wMain.SetActive()
	[ ] wMain.PushButton("#3").Click()
	[ ] INTEGER i
	[-] for i=1 to 3
		[ ] LIST of STRING liButton= {"#5", "#6", "#7", "#11", "#12", "#13", "#17", "#18","#19","#23"}
		[ ] INTEGER iID = RandInt(1, ListCount(liButton))
		[-] if(i==1)
			[ ] wMain.PushButton("{iID}").Click()
			[ ] INTEGER iValue1 = Val(wMain.TextField("#1").GetText())
			[ ] wMain.PushButton("#26").Click()
		[-] else
			[ ] wMain.PushButton("{iID}").Click()
			[ ] INTEGER iValue2 = Val(wMain.TextField("#1").GetText())
			[ ] wMain.PushButton("#27").Click()
			[ ] INTEGER iRes = Val(wMain.TextField("#1").GetText())
	[ ] INTEGER iEtalon = iValue1+iValue2
	[-] if(iRes == iEtalon)
		[ ] Print("' + ' passed! {iValue1} + {iValue2} = {iEtalon}")
	[-] else
		[ ] Print("' + ' failured! {iValue1} + {iValue2} = {iEtalon}")
		[ ] 
[-] testcase db0003() appstate none //test "/" function. Use CaptureBitmap(). Etalon made by myself
	[ ] wMain.SetActive()
	[ ] // 100 / 85
	[ ] wMain.PushButton("#3").Click()
	[ ] wMain.PushButton("#17").Click() 
	[ ] wMain.PushButton("#23").Click() 
	[ ] wMain.PushButton("#23").Click()
	[ ] wMain.PushButton("#8").Click() 
	[ ] wMain.PushButton("#6").Click() 
	[ ] wMain.PushButton("#12").Click()
	[ ] wMain.PushButton("#27").Click()
	[ ] //Screen
	[ ] wMain.TextField("#1").CaptureBitmap("c:\res.bmp")
	[ ] BOOLEAN bValue = SYS_CompareBitmap ("c:\res.bmp", "c:\etalon.bmp")
	[-] if(bValue)
		[ ] Print(" '/'  passed!")
	[-] else
		[ ] Print("' / ' failured!")


  • 1

#3 Enki

Enki

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

  • Members
  • Pip
  • 7 сообщений

Отправлено 02 ноября 2011 - 18:16

Int_21h
Здравствуйте! Возникло пару вопросов..
Во фрейме вы используете мультитеги? Или тут {iID} чудно преобразуется в #iID? Выглядит как обращение по кепшену..

			[ ] wMain.PushButton("{iID}").Click()
			...
			[ ] wMain.PushButton("#26").Click()


И ещё.. В соседней теме вы писали:

Код далеко не идеален, но для старта пойдет.

Что можно сделать, чтобы приблизить этот код к идеалу? =) Во втором варианте, например.
Спасибо.
  • 0

#4 Int_21h

Int_21h

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Александр

Отправлено 06 ноября 2011 - 16:07

Рассмотрим весь блок кода:

for i=1 to 3
                [ ] LIST of STRING liButton= {"#5", "#6", "#7", "#11", "#12", "#13", "#17", "#18","#19","#23"}
                [ ] INTEGER iID = RandInt(1, ListCount(liButton))
                [-] if(i==1)
                        [ ] wMain.PushButton("{iID}").Click()
                        [ ] INTEGER iValue1 = Val(wMain.TextField("#1").GetText())
                        [ ] wMain.PushButton("#26").Click()

Тут оглашен лист айдишек кнопок калькулятора. Элементы этого листа рандомно вставляются в переменную iID. Так у нас получится:
wMain.PushButton("#5").Click()
wMain.PushButton("#6").Click()
......
wMain.PushButton("#19").Click()
wMain.PushButton("#23").Click()

Последняя строка данного куска кода нажимает на кнопку "+".
Обращаться по кепшену не советую ибо несет за собой много проблем.


Что можно сделать, чтобы приблизить этот код к идеалу? =) Во втором варианте, например.


Для второго варианта - переписать весь код:))
  • 1

#5 Enki

Enki

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

  • Members
  • Pip
  • 7 сообщений

Отправлено 08 ноября 2011 - 15:10

Рассмотрим весь блок кода:
...

Да, спасибо, был невнимателен.

Обращаться по кепшену не советую ибо несет за собой много проблем.

И тем не менее в данном случае кажется весьма удобным использовать кепшены для набора чисел (передаваемых в функцию, например). Разве нет?
Хотя другой такой пример придумать тяжело, да.

Для второго варианта - переписать весь код:))

Вооот как.. А не могли бы вы хотя бы очертить основные направления? =)
  • 0

#6 Int_21h

Int_21h

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

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Александр

Отправлено 11 ноября 2011 - 22:21

То что удобно не всегда хорошо)
все что пришло в голову - использовать локаторы, передача айди, кепшенов, вин айди, сделать с помощью ВинАпи, работать со статическим набором. Думаю. еще можно выделить множество способов, но зачем через зад лазить?

Хотя, как писать, это дело каждого. Вопрос не завалит ли проект такой скрипт?

======================================
Ну как сказать) Садитесь да пишите)))
Направления как такого нет)))
  • 0


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн



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

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

Яндекс.Метрика
Реклама на портале