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

Публикации dguminsk

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



#110053 Хотелось бы понять: в чём причина неудачи

Отправлено автор: dguminsk 21 сентября 2012 - 13:37 в Начинающему тестировщику

Знакомое до боли задание =)))
Если все еще интересует что ,почему и как, пишите в ЛС, все поясню



#110365 Как нажать кнопку [Down] n раз

Отправлено автор: dguminsk 27 сентября 2012 - 13:15 в SmartBear (AutomatedQA) - Functional Testing

Доброго времени суток.
Собственно вопрос: есть цикл в котором нужно нажать например кнопку [Down] n раз, при чем значение n наращивается. Можно как то это сделать?

Если я правильно понял ваш вопрос, то код примерно такой:

var a, count = 1;
//Ваш цикл
while(true) {
 a = 0;
  //Цикл для нажатия на кнопку
  while (a < count){ 
   Sys.Keys("[Down]");
   a++;
  }
 count++;
}
И все конечно же зависит от вашего объекта. Т.е. если например вы хотите делать нажатия в своем приложении, тогда метод Keys надо писать как-то так:
NameMapping.Sys.Process("notepad").bla-bla-bla.Keys("[Down]");



#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



#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")
} 



#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



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

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



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

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

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

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

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

  • 123.jpg



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

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

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



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

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

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



#106992 Как получить часть пути объекта?

Отправлено автор: dguminsk 22 июня 2012 - 09:51 в SmartBear (AutomatedQA) - Functional Testing


Здравствуйте. Надеюсь на вашу помощь.
Скажем есть 2 объекта.
Путь к первому: Aliases.firefox.Page("*").Panel(0).Cell(1, 6).Link(0) - данный объект мы находим через FindChild и получаем его путь
Путь ко второму: Aliases.firefox.Page("*").Panel(0).Cell(2, 6).Link(0) - Путь к этому объекту необходимо составить вручную, выдрав значение Cell(1, 6) и изменив в нем первую цифру на заведомо известную
Сразу оговорюсь, что путь к первому может меняться (меняться именно вторая цифра значения Cell, первая стационарная.
Как это осуществить?

Надеюсь я нормально объяснил.
Спасибо

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

мдааааа.... спасибо большое. Сейчас почитал про ТЭГ модель и понял, что все мои наработанные тесты, могли бы быть намного проще =)))) Честно сказать, даже не задумывался об этом, стандартом tree стояло, так я так и разрабатывал. Тогда возникает след. вопрос - а реально менять модель внутри скрипта?



#106941 Как получить часть пути объекта?

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

Здравствуйте. Надеюсь на вашу помощь.
Скажем есть 2 объекта.
Путь к первому: Aliases.firefox.Page("*").Panel(0).Cell(1, 6).Link(0) - данный объект мы находим через FindChild и получаем его путь
Путь ко второму: Aliases.firefox.Page("*").Panel(0).Cell(2, 6).Link(0) - Путь к этому объекту необходимо составить вручную, выдрав значение Cell(1, 6) и изменив в нем первую цифру на заведомо известную
Сразу оговорюсь, что путь к первому может меняться (меняться именно вторая цифра значения Cell, первая стационарная.
Как это осуществить?

Надеюсь я нормально объяснил.
Спасибо



#107001 Как получить часть пути объекта?

Отправлено автор: dguminsk 22 июня 2012 - 12:29 в SmartBear (AutomatedQA) - Functional Testing

а реально менять модель внутри скрипта?

Options.Web.TreeModel = "Tag";

Но если вы планируете переходить на TC9, то Tag-модель не стоит использовать, т.к. она там deprecated, и для нее не работают кросс-браузерные плюшки.

Спасибо всем большое, очень помогли. На ТС9 ближайшие пол года-год перехода точно не будет, поэтому буду писать.



#106947 Как получить часть пути объекта?

Отправлено автор: dguminsk 21 июня 2012 - 11:40 в SmartBear (AutomatedQA) - Functional Testing

Может, так?

var colIdx = obj1.Parent.ColumnIndex;
var obj2 = obj1.Parent.Parent.Cell(2, colIdx).Link(0);
 

Спасибо, то, что надо!



#106428 Проверка редиректов

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

Здравствуйте. Подскажите пожалуйсте, возможно ли сделать следующую проверку:
есть урл http://test.ru/ и в .htaccess прописаны 301 редиректы.
Т.е. при заходе на http://test.ru/ идет редирект на http://test.ru (в конце без слеша).
Вопрос: Возможно ли как-то проверить прошел ли редирект по средствам ТС? Понятно, что можно сделать ToUrl а потом считать новый урлик и проверить, но дело в том, что необходимо проверить именно код ответа 301! А вот как его проверить, я вообще ума не приложу.
Надеюсь на Вашу помощь, спасибо



#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>




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

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

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

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

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

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



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

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

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



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

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

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

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

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



#107788 Скриншот случае ошибки

Отправлено автор: dguminsk 19 июля 2012 - 13:20 в SmartBear (AutomatedQA) - Functional Testing

Здравствуйте, возможно данный вопрос поднимался, но не нашел.
В тесте бывают ошибки, связанные с ненахождением элемента, например стоит такой if
if (Aliases.firefox.Page(*).Panel(0).Exists)
и вдруг у нас возникает whitepage и поэтому в лог идет ошибка о ненахождении элемента. Так вот вопрос:
Реально ли как-нибудь автоматически делать скриншот окна браузера, если вдруг произошла данная ошибка.
Спасибо

РЕШЕНИЕ:
Все-таки нашел ответ на форуме.
Проще всего в свойствах проекта (правый клик на имени проекта, Edit - Properties) на вкладке Playback поставить галочку Post image on error, тогда в случае ошибки будет создаваться скриншот всего экрана



#104452 Ftp+testcomplete

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

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

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



#104434 Ftp+testcomplete

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

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



#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?



#105253 Ftp+testcomplete

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

По-идее, можно даже обойтись без bat-файла, как-то так:

Sys.OleObject("WScript.Shell").Run("ftp -s:C:\\commands.txt", 1, true);

Отлично, спасибо, так работает =)



#106767 Постоянно выходит задержка выполнения скрипта в testcomplete 7.

Отправлено автор: dguminsk 15 июня 2012 - 13:55 в SmartBear (AutomatedQA) - Functional Testing


Какое значение параметра "Auto-wait timeout, ms:" установлено в свойствах проекта в разделе "PlayBack" ?

Там стоит значение 10000 мс, так что это, получается, другой параметр.

Исходя из документации, сообщение: Delays the script execution for * milliseconds выводится при использовании aqUtils.Delay в коде. Таймаут отображается по другому. Возможно где-то в коде стоят данные дилеи, посмотрите внимательно, если нет, то будем тогда еще думать)



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

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

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

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