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

Публикации dguminsk

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



#100884 Selenium RC обработка Alert

Отправлено автор: dguminsk 11 февраля 2012 - 10:04 в Selenium - Functional Testing

Всем привет. Я только начал познавать автоматизацию в RC (Java). Столкнулся с проблемой обработки Alert. Надеюсь на вашу помощь.

Исходные данные - есть страница с формой Логин, пароль, мыло и кнопкой сабмит. После ввода всех данных и нажатия кнопки выскакивает Alert.

задача - считать алерт и сравнить его с некоторым текстом. Т.е. если они совпадают, то тест выполнен правильно. Уже вторые сутки бьюсь, нифига не выходит, тесты не проходят. Т.е. не видит алерта и все.

В Eclipse мой код выглядит так:



package com.example.tests;



import com.thoughtworks.selenium.*;

import java.util.regex.Pattern;



public class test1 extends SeleneseTestCase {

public void setUp() throws Exception {

setUp("C:\testpage.html", "*googlechrome");

}

public void testTest1() throws Exception {

selenium.open("/");

selenium.type("name=email", "test@test");

selenium.type("name=login", "12345");

selenium.type("name=pass", "12345");

selenium.click("css=input[type=\"submit\"]");

selenium.waitForCondition("selenium.isAlertPresent()", "1000");

assertTrue( selenium.isAlertPresent() );

assertEquals( selenium.getAlert(), " Недопустимая длина поля " );

}

}

}




Привожу листинг тестируемой страницы:

<HTML>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<head>
</head>
<body>
<form id="myForm" action="add.php" method="post">
<table>
<tr><td>email</td><td><input type="text" name="email"></td></tr>
<tr><td>Логин</td><td><input type="text" name="login"></td></tr>
<tr><td>Пароль</td><td><input type="text" name="pass"></td></tr>
</table>
<input type="submit" value="Регистрация" />

</form>
<div id="result" style="padding:5px;">
</div>

<script type="text/javascript">
parts=String(document.location).split("?",2)[1].split("&");
GET={};
for (i=0; i<parts.length; i++) {
curr = parts[i].split('=');
GET[curr[0]] = curr[1];

if (curr[1] == 1) { alert('Вы успешно зарегестрированны')}
if (curr[1] == 2) { alert('Неверно ведён Логин')}
if (curr[1] == 3) { alert('Неверно ведён Пароль')}
if (curr[1] == 4) { alert('Заполните поле Логин')}
if (curr[1] == 5) { alert('Неправильно введён email')}
if (curr[1] == 6) { alert('Введите все поля')}
if (curr[1] == 7) { alert('Ошибка!')}
if (curr[1] == 8) { alert('Вы уже зарегестрированы')}
if (curr[1] == 9) { alert('Недопустимая длина поля')}
}

</script>

</script>
</body>

</html>




#100887 Selenium RC обработка Alert

Отправлено автор: dguminsk 11 февраля 2012 - 13:27 в Selenium - Functional Testing

Я только начал познавать автоматизацию в RC (Java).

Если сейчас попытаться продать вам патентованное средство для выращивания волос - это будет верхом цинизма?

Совсем не понял Вашего юмора...



#100889 Selenium RC обработка Alert

Отправлено автор: dguminsk 11 февраля 2012 - 13:30 в Selenium - Functional Testing

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



#100890 Selenium RC обработка Alert

Отправлено автор: dguminsk 11 февраля 2012 - 13:31 в Selenium - Functional Testing

У вас в заголовке указано

Уже все волосы на голове выдрал.

Крайне сочувствую, все такое.

Теперь понял =) :good: Просто в quote совсем другой кусочек текста был, поэтому не сообразил



#103734 Использование Project.Variables

Отправлено автор: dguminsk 09 апреля 2012 - 06:43 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте. Прошу Вашей помощи.
Использую в проекте Project.Variables (около 10 переменных).
Использую их, т.к. тест состоит из 10-12 скриптов (Unit'ов). В каждом юните проходит запись текста в свою переменную (текст об ошибке). А уже в main юните происходит сбор всех проектных переменных в одну, обычную и данная переменная отсылается как тело письма на e-mail.
Данная реализация меня устраивала до некоторых пор, пока не столкунулся с трудностью. Реализовал запуск скриптов с определенной периодичностью (командная строка + планировщик задач). Тесты проходили нормально, все ок, но однажды сработала ошибка и проэктная переменная изменилась. На мыло все прошло, но тест комплит не закрылся (в командной строке я ставил параметр /e) т.к. изменилась проектная переменная и перед закрытием TC спросил - а желаете ли вы сохранить изменения?! И так и повис.
Теперь вопрос - как можно реализовать автоматическое закрывание TC без подтверждения изменений (т.е. чтобы не спрашивало меня о том, хочу ли я сохранить), либо посоветуйте альтернативу проектным переменным. Просто мне реально необходимы такие переменные, которые будут работать во всех модулях, чтобы в одном юните объявил, во втором считал и использовал. Вариант с внесением всех функций в один юнит не катит, т.к. очень сложная архитектура и оооочень много кода.
Большое спасибо



#103742 Использование Project.Variables

Отправлено автор: dguminsk 09 апреля 2012 - 07:14 в SmartBear (AutomatedQA) - Functional Testing

Попробовал использовать SilenceMode - вроде бы получилось. Ну скажем так, время покажет. Спасибо



#103749 Проверка подключения к интернету

Отправлено автор: dguminsk 09 апреля 2012 - 07:53 в SmartBear (AutomatedQA) - Functional Testing

Еще раз Здравствуйте.
Задался себе вопросом - а как лучше всего организовать проверку подключения к интернету по средствам TC?
Данным инструментом провожу функциональное тестирование веб-страницы. так вопрос стоит в том, чтобы самым первым делом в тесте шла проверка на наличие интернета. Т.е. если проверка провалилась, тест дальше не шел.
В голове есть вариант (и он на данный момент реализован): Переход на определенный урл (скажем яндекс) и проверка по какому-нибудь элементу, скажем по caption окна браузера. Но тут тоже проверку не всегда можно назвать правдивой - ведь может и кэпшн поменяться и например сайт яндекса ляжет и т.д.
Поделитесь пожалуйста своими умными мыслями по данному поводу.
Спасибо



#103794 Проверка подключения к интернету

Отправлено автор: dguminsk 09 апреля 2012 - 14:49 в SmartBear (AutomatedQA) - Functional Testing

Про пинг теоритически понятно, а вот как это будет выглядеть на практике?
Я просто не представляю как это реализовать. запустить cmd команду на пинг из TC смогу, а вот как получить результат пинга и как его обработать?!



#103835 Проверка подключения к интернету

Отправлено автор: dguminsk 10 апреля 2012 - 06:25 в SmartBear (AutomatedQA) - Functional Testing


Про пинг теоритически понятно, а вот как это будет выглядеть на практике?
Я просто не представляю как это реализовать. запустить cmd команду на пинг из TC смогу, а вот как получить результат пинга и как его обработать?!


Хотя... вот красивый вариант по факу:
function isConnectionUp(){
  var shell = new ActiveXObject("WScript.Shell");
  var WshShellObj = new ActiveXObject("WScript.Shell");
  var WshShellExecObj = WshShellObj.Exec("cmd.exe");
 
  readTillChar(WshShellExecObj, ">");
 
  WshShellExecObj.StdIn.Write("ping ya.ru\n");
  var out = readTillChar(WshShellExecObj, ">");

  var lostPattern = /.*Lost = 0.*/;
  return lostPattern.test(out);
}

function readTillChar(WshShellExecObj, endChar){
  var out = "";
  var curChar;
  while (!WshShellExecObj.StdOut.AtEndOfStream)
  {
   curChar = WshShellExecObj.StdOut.Read(1);
   out += curChar;
   if (curChar == endChar) break;
  }
  return out;
}

function test(){
  Log.Message(isConnectionUp());  
}


Странно, просто скопировал данный пример и вставил в проект. запустил и всегда возвращает false



#103838 Использование Project.Variables

Отправлено автор: dguminsk 10 апреля 2012 - 06:54 в SmartBear (AutomatedQA) - Functional Testing

Можете пользоваться Temporary переменными. Они не хранят свои значения в файле проекта. Они их вообще не хранят после завершения теста.

Подскажите пожалуйста где про них почитать. Посмотрел в хелпе, не нашел temporary variables



#103842 Использование Project.Variables

Отправлено автор: dguminsk 10 апреля 2012 - 07:30 в SmartBear (AutomatedQA) - Functional Testing



Можете пользоваться Temporary переменными. Они не хранят свои значения в файле проекта. Они их вообще не хранят после завершения теста.

Подскажите пожалуйста где про них почитать. Посмотрел в хелпе, не нашел temporary variables

Project - Edit - Variables, там увидите 2 фрейма: Temprorary Variables ( <--то что надо) и Persistent Variables.

Большое спасибо, попробую заюзать



#103844 Проверка подключения к интернету

Отправлено автор: dguminsk 10 апреля 2012 - 07:37 в SmartBear (AutomatedQA) - Functional Testing




Про пинг теоритически понятно, а вот как это будет выглядеть на практике?
Я просто не представляю как это реализовать. запустить cmd команду на пинг из TC смогу, а вот как получить результат пинга и как его обработать?!


Хотя... вот красивый вариант по факу:
function isConnectionUp(){
  var shell = new ActiveXObject("WScript.Shell");
  var WshShellObj = new ActiveXObject("WScript.Shell");
  var WshShellExecObj = WshShellObj.Exec("cmd.exe");
 
  readTillChar(WshShellExecObj, ">");
 
  WshShellExecObj.StdIn.Write("ping ya.ru\n");
  var out = readTillChar(WshShellExecObj, ">");

  var lostPattern = /.*Lost = 0.*/;
  return lostPattern.test(out);
}

function readTillChar(WshShellExecObj, endChar){
  var out = "";
  var curChar;
  while (!WshShellExecObj.StdOut.AtEndOfStream)
  {
   curChar = WshShellExecObj.StdOut.Read(1);
   out += curChar;
   if (curChar == endChar) break;
  }
  return out;
}

function test(){
  Log.Message(isConnectionUp());  
}


Странно, просто скопировал данный пример и вставил в проект. запустил и всегда возвращает false

Если у вас локаль не английская, то паттерн "Lost = 0" надо заменить на локализованный.

До, Вы правы, русская версия винды. Но вот теперь возникает следующий вопрос - Вместо Lost=0 пишет потеряно = 0. Но русские символы в данную строчку кода не катят. Что-то я совсем невнимательный и не могу разобраться в чем дело

Прикрепленные изображения

  • Image123.jpg



#103847 Проверка подключения к интернету

Отправлено автор: dguminsk 10 апреля 2012 - 07:52 в SmartBear (AutomatedQA) - Functional Testing



До, Вы правы, русская версия винды. Но вот теперь возникает следующий вопрос - Вместо Lost=0 пишет потеряно = 0. Но русские символы в данную строчку кода не катят. Что-то я совсем невнимательный и не могу разобраться в чем дело

var lostPattern = new RegExp(".*потеряно = 0.*")

А вообще выше предложили вариант с WMI, который куда как лучше.

C WMI возможно стоит разобраться, правда фигово, что там Vbscript. А насчет данного кода (все таки хочется разобраться, и так сказать добить его) Все равно возвращает false. Пробовал только цифры вставлять - все ок, с русским текстом - никак. Возможно кодировки другие?

Прикрепленные изображения

  • Image1233.jpg



#103854 Проверка подключения к интернету

Отправлено автор: dguminsk 10 апреля 2012 - 08:56 в SmartBear (AutomatedQA) - Functional Testing



C WMI возможно стоит разобраться, правда фигово, что там Vbscript. А насчет данного кода (все таки хочется разобраться, и так сказать добить его) Все равно возвращает false. Пробовал только цифры вставлять - все ок, с русским текстом - никак. Возможно кодировки другие?

Ну, если хочется добить, то добивайте http://stackoverflow...lish-characters . Я забыл, что в JS с юникодом не так просто.

А что касается WMI, то я не очень понимаю в чем проблема. Если не знаете как им пользоваться, то найдите любой пример на JS и просто подставьте в него нужный запрос. Это будет самое надежное и быстрое решение.

Не серчайте пожалуйста, но с WMI что-то очень тяжко. Я немного не улавливаю логику (видимо не вспался + еще только начинаю разбираться в программинге) но тут такой момент, нашел пример, поштудировал хелп и собрал примерно такую солянку, как на скриншоте. Но отказывается работать. Дайте пожалуйста хотя бы намек, либо примерно готовый вариант. Хочется реально разобраться. Спасибо

Прикрепленные изображения

  • 123.jpg



#103855 Проверка подключения к интернету

Отправлено автор: dguminsk 10 апреля 2012 - 09:01 в SmartBear (AutomatedQA) - Functional Testing




C WMI возможно стоит разобраться, правда фигово, что там Vbscript. А насчет данного кода (все таки хочется разобраться, и так сказать добить его) Все равно возвращает false. Пробовал только цифры вставлять - все ок, с русским текстом - никак. Возможно кодировки другие?

Ну, если хочется добить, то добивайте http://stackoverflow...lish-characters . Я забыл, что в JS с юникодом не так просто.

А что касается WMI, то я не очень понимаю в чем проблема. Если не знаете как им пользоваться, то найдите любой пример на JS и просто подставьте в него нужный запрос. Это будет самое надежное и быстрое решение.

Не серчайте пожалуйста, но с WMI что-то очень тяжко. Я немного не улавливаю логику (видимо не вспался + еще только начинаю разбираться в программинге) но тут такой момент, нашел пример, поштудировал хелп и собрал примерно такую солянку, как на скриншоте. Но отказывается работать. Дайте пожалуйста хотя бы намек, либо примерно готовый вариант. Хочется реально разобраться. Спасибо


Все, разобрался, прошу у всех прощения за отобранное время. Спасибо за помощь.
Все дело в InstanceOf! (точно не выспался). Необходимо использовать ExecQuery.
Вот тебе называется и собрал солянку.
Если я правильно понял, то возвращаемое значение 0 в лог означает - норм. пинг?

Кстати мало ли кому пригодится код:
function Ping(host)
{
var wmi = GetObject("Winmgmts:");
var eStatus = new Enumerator(wmi.ExecQuery("Select StatusCode from Win32_PingStatus Where Address='" + host + "'"));
   if (eStatus.item().StatusCode == 0){
   Log.Message("Internet OK");
   }
   else{
   Log.Message("Internet Isn't OK");
   }
}

function Test()
{
  Ping("ya.ru")
} 



#104325 Работа с UserForms

Отправлено автор: dguminsk 17 апреля 2012 - 06:26 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте. Прошу Вашей помощи, т.к. все не могу разобраться.
Мне необходимо сделать форму, скажем с 10ю чекбоксами, которые выбирают разные тесты. Все это реализовал, все ок.
Но вот подумалось мне, что необходимо сделать 11й чекбокс, при выборе которого поставяться галочки на все остальные, соответственно при checked false галочки снимуться. Как это реализовать не понимаю. Причем даже логически, т.к. в голове одна идея заключать все в бесконечный цикл и постоянно опрашивать чекбокс. Понимаю, что это глупо, но другого варианта не вижу. Поэтому прошу Вашей подсказки/помощи. Заранее благодарен

Спасибо, помощь уже не нужна. Разобрался с обработчиками событий.


Решение оказалось очень простым, но, вполне возможно не совсем грамотным.
Есть обработчики событий в формах (Events). В одном чекбоксе выбираем Events OnClick и добавляем новый скрипт, в котором и будет идти обработка события.
Мой скрипт выглядит примерно так (На самом деле выглядит жутко, но работает):

function UserForm4_cxCheckBox12_OnMouseEnter(Sender)
{
 if (UserForms.UserForm4.cxCheckBox12.Checked == true){
 UserForms.UserForm4.cxCheckBox1.Checked = true;
 UserForms.UserForm4.cxCheckBox2.Checked = true;
 UserForms.UserForm4.cxCheckBox3.Checked = true;
 UserForms.UserForm4.cxCheckBox4.Checked = true;
 UserForms.UserForm4.cxCheckBox5.Checked = true;
 UserForms.UserForm4.cxCheckBox6.Checked = true;
 }
 else{
 UserForms.UserForm4.cxCheckBox1.Checked = false;
 UserForms.UserForm4.cxCheckBox2.Checked = false; 
 UserForms.UserForm4.cxCheckBox3.Checked = false; 
 UserForms.UserForm4.cxCheckBox4.Checked = false; 
 UserForms.UserForm4.cxCheckBox5.Checked = false; 
 UserForms.UserForm4.cxCheckBox6.Checked = false; 
 }
}



#104434 Ftp+testcomplete

Отправлено автор: dguminsk 18 апреля 2012 - 06:37 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте. Меня интересует вопрос по работе ТС с ФТП сервером. Т.е. необходимо в какой-то момент теста залить файл на фтп. Понятное дело, что можно данную операцию провернуть как бы визуально, скажем запустить фтп-клиент, выбрать файл, залить и т.д. Но это не совсем интересно. Меня интересует возможно ли обращение и заливка файла на фтп по средствам кода. Думаю суть ясна. Возможно кто-то сталкивался, просто гуглил ничего схожего не нашел.
Спасибо



#104450 Работа с UserForms

Отправлено автор: dguminsk 18 апреля 2012 - 08:36 в SmartBear (AutomatedQA) - Functional Testing

Мне кажется, лучше обрабатывать не OnClick/OnMouseEnter, а OnChange.

Также могу предложить более короткий, но чуть менее читабельный код:

var form = UserForms.UserForm4;
var state = form.cxCheckBox12.Checked;
for (var i = 1; i <= 6; i++)
  form["cxCheckBox" + i].Checked = state;

Просто отлично. У меня была идея насчет цикла, но делал неправильно. Делал примерно так:
var di = 1;
var form = UserForms.UserForm4.cxCheckBox12+di.Checked;
 while (di<=10){
 form;
 di++;
}
Но выпадала ошибка. Как я понял из-за несоответствия типов переменных. Крутил-вертел, да и плюнул на это.
Спасибо Вам большое за данный код. Теперь понял как объектные переменные обрабатывать



#104452 Ftp+testcomplete

Отправлено автор: dguminsk 18 апреля 2012 - 08:49 в SmartBear (AutomatedQA) - Functional Testing

Есть куча способов работать с FTP из скриптов, например:
* Командная утилита ftp, входящая в Windows; см. пример здесь;

Спасибо большое, особенно заинтересовал данный пункт. Буду на выходных пилить. Как добьюсь успеха - выложу примерчик



#104614 Отключить автодополнение (ala intellisense)

Отправлено автор: dguminsk 20 апреля 2012 - 07:41 в SmartBear (AutomatedQA) - Functional Testing

Уважаемые,
эта фича со всплывающей подсказкой, появляющаяся после каждой точки, сильно мешает.
Каким образом ее настроить что бы вызывалась исключительно по моему хотению?

tools/options/panel/code editor/editing/Auto Pop-up
отключаешь и будет тебе счастье =)



#104615 Отключить автодополнение (ala intellisense)

Отправлено автор: dguminsk 20 апреля 2012 - 07:44 в SmartBear (AutomatedQA) - Functional Testing


Уважаемые,
эта фича со всплывающей подсказкой, появляющаяся после каждой точки, сильно мешает.
Каким образом ее настроить что бы вызывалась исключительно по моему хотению?

tools/options/panel/code editor/editing/Auto Pop-up
отключаешь и будет тебе счастье =)

Ах да, забыл добавить - когда отключена опция данная, то в любой момент можешь вызвать, нажав ctrl+space



#105048 FullName объекта

Отправлено автор: dguminsk 02 мая 2012 - 08:03 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте. Подскажите пожалуйста, возможно ли такое:
Например есть FullName Объекта (веб тестирование, firefox): Sys.Process("firefox").Page("http://URL1").Panel("global").Panel(0).Link(3)
При переходе на данную ссылку, мы попадаем на страницу, в которой такая же структура меню, но путь уже к этой же ссылке будет:
Sys.Process("firefox").Page("http://URL2").Panel("global").Panel(0).Link(3)
Собственно вопрос - возможно ли как-то использовать конструкции вида: Sys.Process("firefox")."*".Panel("global").Panel(0).Link(3) ?
Т.е. чтобы данная конструкция работала для любого значения между Sys.Process("firefox") и Panel("global").Panel(0).Link(3)
Пример, что я привел, понятное дело не рабочий, т.к. это для переменных Стринговых.
Буду очень благодарен, если вы поймете о чем я и поможете.
Спасибо



#105051 FullName объекта

Отправлено автор: dguminsk 02 мая 2012 - 08:37 в SmartBear (AutomatedQA) - Functional Testing

Такое подойдет:

function third_link_at_webpage(url) {
  if (
    Sys.Process("firefox") && Sys.Process("firefox").Page(url) && Sys.Process("firefox").Page(url).Panel("global") &&
    Sys.Process("firefox").Page(url).Panel("global").Panel(0) && Sys.Process("firefox").Page(url).Panel("global").Panel(0).Link(3)
  ) {
    return Sys.Process("firefox").Page(url).Panel("global").Panel(0).Link(3);
  }
  return false;
}
?

Насколько я понял в данную функцию (при вызове) мы посылаем url и он его прописывает вместо url, находящегося в Page()?
В принципе неплохо, можно использовать, но вопрос еще в том, что скажем так, у нас урл рандомный, т.е. немного углублюсь:
Сайт состоит из меню, скажем 5 пунктов и кучи ссылок на другие страницы (скажем 100).
Так суть в том, что мне необходимо перейти на рандомную ссылку (делаю это по средствам FindChild из Array) и перехожу на ссылку. Но при этом каждый раз переход идет на первую попавшуюся ссылку и они вида http://site.ru/id666, в след. раз переход может произойти на http://site.ru/id555 и т.д.
При переходе на ссылку меню сверху остается, стеме же объектами и теме же путями, кроме Page().
Думаю, Вы поняли мою мысль =)



#105242 FullName объекта

Отправлено автор: dguminsk 07 мая 2012 - 08:42 в SmartBear (AutomatedQA) - Functional Testing

можно конечно :)
Sys.Process("firefox").Page("*")

Спасибо, сейчас опробую.
И еще - а что по поводу большего сокращения? Скажем чтобы не параметр Page любой, а прямо несколько Объектов из пути. Т.е.
Sys.Process("firefox").Page("123").Panel("123").Panel("321")
Как сделать таким же макаром кусок Page("123").Panel("123") ? Т.е. именно не в нутри параметр, а целый кусок пути, чтобы вышло Sys.Process("firefox")."сокращено".Panel("321")



#105243 Ftp+testcomplete

Отправлено автор: dguminsk 07 мая 2012 - 08:48 в SmartBear (AutomatedQA) - Functional Testing

Все-таки руки дошли, поэтому реализовал, что хотел.
Сделал следующим образом:
var CommandsVar = "open адрес\nлогин\nпароль\ncd test\nmput файл\ny\nbye";
      aqFile.WriteToTextFile("C:\\commands.txt", CommandsVar, 20, true);
      aqFile.WriteToTextFile("C:\\ftpload.bat", "ftp -s:commands.txt", 20, true); 
      TestedApps.ftpload.Run(1, true);
Т.е. создаем текстовый файл с командами, создаем батник, который запустит данные команды и непосредственно запускаем батник

Кстати, подскажите люди добрые, как можно из кода запустить бат файл? Я что-то не разобрался ,поэтому пришлось его добавлять как TestedApps?