Вопросы по ТС7
#41
Отправлено 31 августа 2009 - 10:03
Дерево в вашем приложении, по всей видимости, долго обновлятеся, и когда ТС пытается с ним работать, оно ещё не готово. В этом случае надо найти какой-нибудь признак, свидетельствующий о том, что дерево готово, и в скрипте проверять этот признак чтобы задержать выполнение на нужное время.
Дмитрий
#42
Отправлено 31 августа 2009 - 14:16
#43
Отправлено 02 сентября 2009 - 07:39
Function IsProcessResponding(p)
Dim process
Set process = dotNET.System_Diagnostics.Process.GetProcessById(p.ProcessId)
IsProcessResponding = process.Responding
End Function
Перешла на TestComplete 7.0
В ObjectBrowser указано, что проперти ProcessId заменен на Id.
Поменяла:
Function IsProcessResponding(p)
Dim process
Set process = dotNET.System_Diagnostics.Process.GetProcessById(p.Id)
IsProcessResponding = process.Responding
End Function
Все равно не работает.
Теперь вижу, что в версии TestComplete 7.0 из иерархии вообще исчез Process.
#44
Отправлено 02 сентября 2009 - 08:41
Добавьте в список CLR Bridge в свойствах проекта ассемблю System.dll.В TestComplete 6.4 замечательно работала следующая функция:
Function IsProcessResponding(p)
Dim process
Set process = dotNET.System_Diagnostics.Process.GetProcessById(p.ProcessId)
IsProcessResponding = process.Responding
End Function
Перешла на TestComplete 7.0
В ObjectBrowser указано, что проперти ProcessId заменен на Id.
Поменяла:
Function IsProcessResponding(p)
Dim process
Set process = dotNET.System_Diagnostics.Process.GetProcessById(p.Id)
IsProcessResponding = process.Responding
End Function
Все равно не работает.
Теперь вижу, что в версии TestComplete 7.0 из иерархии вообще исчез Process.
#45
Отправлено 03 сентября 2009 - 06:16
Добавьте в список CLR Bridge в свойствах проекта ассемблю System.dll.В TestComplete 6.4 замечательно работала следующая функция:
Function IsProcessResponding(p)
Dim process
Set process = dotNET.System_Diagnostics.Process.GetProcessById(p.ProcessId)
IsProcessResponding = process.Responding
End Function
Перешла на TestComplete 7.0
В ObjectBrowser указано, что проперти ProcessId заменен на Id.
Поменяла:
Function IsProcessResponding(p)
Dim process
Set process = dotNET.System_Diagnostics.Process.GetProcessById(p.Id)
IsProcessResponding = process.Responding
End Function
Все равно не работает.
Теперь вижу, что в версии TestComplete 7.0 из иерархии вообще исчез Process.
Ассамблея System.dll уже добавлена, причем и для TestComplete 6.4 и для TestComplete 7 используется один и тот же файл System.dll.
#46
Отправлено 04 сентября 2009 - 13:34
Когда я добавляю System.dll версии 2.0.0.0 в 'CLR Bridge' проекта, у меня ваш код работает без проблем. Попробуйте удалить ссылку на System.dll из проекта, а потом добавить её ещё раз.
Дмитрий
#47
Отправлено 28 октября 2009 - 14:19
#48
Отправлено 29 октября 2009 - 07:21
Подскажите, пожалуйста, как в проектах ТС7 ПРАВИЛЬНО организовать список глобальных НЕИЗМЕНЯЕМЫХ констант при написании скриптов на JScript?
Встроенный в ТС функционал совершенно не подходит, ибо позволяет менять даже Persistent variable направо и налево и измененные значения при переходе из юнита в юнит сохраняются.
Пытался создать отдельный юнит с глобальными константами (планировал потом кидать ссылки на него в другие проекты/группы проектов), но при работе с ним ТС7 кидает ошибки:
Syntax error
At "const XMLop = "C:\\XMLop.txt";"
error 100: SYNTAX ERROR while processing "const"
Unit: "uConsts" Line:1 Column: 6
Expected token yy_eof or Identifier or DecimalLiteral
or HexIntegerLiteral or OctalIntegerLiteral or StringLiteral
or RegLiteral or EXCLAM or TILDE
на строку такого вида:
const XMLop = "C:\\XMLop.txt";или такого:
const XMLop : String = "C:\\XMLop.txt";Хотя именно такую форму объявления констант предлагает MSDN: http://msdn.microsof...yks(VS.71).aspx
#49
Отправлено 29 октября 2009 - 08:52
shaen:
Можно убрать галку у теста в редаторе Test Items, но в логе тогда об этом тесте тоже не будет ни слова сказано.
Discovery:
В JScript нет возможности создвать константы. Тот синтаксис, который вы нашли, относится к JScript.NET, а не к JScript. Это разные языки.
Если вы просто боитесь ошибочно перетереть значение переменной, то получайте нужное значение через функцию, а не через переменную:
function getXMLop() { return "C:\\XMLop.txt"; }
Дмитрий
#50
Отправлено 29 октября 2009 - 09:18
Еще чтобы не случайно не перепутать глобальные "константы" и локальные переменные, можно объявить "константы" внутри специального класса или объекта. Имя класса/объекта будет своего рода нейспейсом для "констант":
Например:
function Constants() {} Constants.XMLOp = "C:\\XMLop.txt"; ... Log.Message(Constants.XMLOp);или так:
var Constants = { XMLOp : "C:\\XMLop.txt" }; ... Log.Message(Constants.XMLOp);
#51
Отправлено 29 октября 2009 - 12:40
Благодарю Вас за помощь
Правда ни один из вариантов modbear не подошёл :(
Всё равно при выполнении проекта из двух юнитов, во второй юнит приходило измененное в первом значение глобальной переменной Constants.XMLOp
Вариант Dmitry N мне кажется более правильным, потому что он на корню убивает саму возможность изменения "глобальной переменной"
P.S.: И всё же странно то, что пример объявления констант содержится именно в разделе JScript Language Tour MSDN'a, а дот Нету там посвящен JScript .NET Language Reference, с отдельными примерами объявления констант - http://msdn.microsof...47t(VS.71).aspx
#52
Отправлено 29 октября 2009 - 12:56
К сведению: этот раздел, включая JScript Language Tour, полностью посвящен JScript .NET. Описание обычного JScript находится в разделе JScript (Windows Script Technologies).P.S.: И всё же странно то, что пример объявления констант содержится именно в разделе JScript Language Tour MSDN'a, а дот Нету там посвящен JScript .NET Language Reference, с отдельными примерами объявления констант - http://msdn.microsof...47t(VS.71).aspx
:crazy:
#53
Отправлено 05 ноября 2009 - 14:29
#54
Отправлено 19 ноября 2009 - 08:49
Скорее всего, что-то изменилось в вашем приложении за это время, порядок и количество объектов стало другим, и ТС приходится использовать другие методы. Вообще, для тогда чтобы легко справляться с такими проблемами, можно использовать Name Mapping. Если тесты созданы с использованием Name Mapping, то при изменении имён объектов надо будет лишь поправить дерево Name Mapping, а тесты трогать не придётся.
Если при записи тестов вы не использовали Name Mapping, то вам придётся править тесты. Вы можете использовать диалог Find/Replace (Ctrl-H) чтобы ускорить этот процесс.
Дмитрий
#55
Отправлено 19 ноября 2009 - 14:42
Если я правлю тесты (изменяю индексы), то я могу добится работоспособности только на конкретном сеансе. После перезагрузки все сначала. Похоже прийдется переписывать, другого выхода нет. Все-таки немного странно. В тестируемом приложении и тесте (JS-коде) ничего не менялось, есть допустим 5 одинаковых объектов. В одном случае ТК7 нумерует их как 5,4,2,1,3 и я, заменив индексы, делают тест проходящим, а при следующем запуске (после перезагрузки) индексы другие.
#56
Отправлено 20 ноября 2009 - 08:29
Dmitry N, спасибо за ответ. К сожалению, тесты были записаны без использования Name Mapping. Это долгая история почему так сделали (часть тестов из болеее ранних версий и т.д.).
Если я правлю тесты (изменяю индексы), то я могу добится работоспособности только на конкретном сеансе. После перезагрузки все сначала. Похоже прийдется переписывать, другого выхода нет. Все-таки немного странно. В тестируемом приложении и тесте (JS-коде) ничего не менялось, есть допустим 5 одинаковых объектов. В одном случае ТК7 нумерует их как 5,4,2,1,3 и я, заменив индексы, делают тест проходящим, а при следующем запуске (после перезагрузки) индексы другие.
Как вариант причина может быть в том что контролы грузяться в зависимоти от действий (например таб контролу нумерует табы в зависимости от их открытия - если открыть после первой сразу n-ую вкладку, то она будет иметь индекс 2 а не n.). Ну и таких примеров можно много придумать...
#57
Отправлено 28 декабря 2009 - 14:46
Не знала куда написать, попробую в эту тему.
Есть два сьюта. Один сьют работает совершенно нормально, во втором же ничего не хочет записываться: создаются пустые функции без автоматически созданного кода... Может, нужно где-то галочку поставить или еще что-то в этом роде?
#58
Отправлено 04 января 2010 - 09:50
Сравнивайте настройки сьюит/проектов. Рекомендую обратить внимание на настройку проекта 'Open Applications | Process Filter'.
Дмитрий
#59
Отправлено 09 ноября 2016 - 04:52
continue passes control to the next iteration of a for or while loop. It skips any remaining statements in the body of the loop for the current iteration. The program continues execution from the next iteration.continue applies only to the body of the loop where it is called. In nested loops, continue skips remaining statements only in the body of the loop in which it occurs.
#60
Отправлено 25 июля 2019 - 12:24
Здравствуйте.
Написала в ТС скрипт, который генерирует строку из букв с регулярным выражением. С латиницей проблем нет, а вот кириллицу он не понимает. ТС сразу выдаёт ошибку на эти буквы.
Код на латинице:
var name = "name"+ (Math.random() / +new Date()).toString(36).replace(/[^a-z]+/g, '');
Вот это уже не работает:
var name = "name"+ (Math.random() / +new Date()).toString(36).replace(/[^а-я]+/g, '');
Как-то можно обойти или надо писать по-другому?
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных