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

Публикации dguminsk

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



#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



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



#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



#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



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

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

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



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

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

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



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

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

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



#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().
Думаю, Вы поняли мою мысль =)



#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)
Пример, что я привел, понятное дело не рабочий, т.к. это для переменных Стринговых.
Буду очень благодарен, если вы поймете о чем я и поможете.
Спасибо



#105988 FullName объекта

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

Спасибо, с Page разобрался, а возможно ли использовать такое в частях пути Table(0) например и Cell(0, 1) ?
Пробовал и Cell("*") и Cell("*","*") не выходит.
Спасибо за Ваша ответы



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



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

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



#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 стояло, так я так и разрабатывал. Тогда возникает след. вопрос - а реально менять модель внутри скрипта?



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

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

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

Options.Web.TreeModel = "Tag";

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

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



#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, первая стационарная.
Как это осуществить?

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



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

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

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



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

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

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



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

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



#104434 Ftp+testcomplete

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

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



#104452 Ftp+testcomplete

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

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

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



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

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



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