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

Фотография

Unicode и NameMapping


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

#1 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 01 апреля 2011 - 09:17

Здравствуйте!

У меня TestComplete версии 7.0.409.7.
Хочу создать в NameMapping-е ряд конфигураций для тестирования локализованного приложения, где каждая конфигурация будет соответствовать своему языку. Столкнулся с тем, что невозможно задать wndCaption-ы для контролов на разных языках, отображаются знаки вопроса.
Сам файл NameMapping-а 'NameMapping.tcNM' в формате UTF-8, так что и руками в него тоже не вставишь. Как заставить NameMapping работать с другими языками?
  • 0

#2 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 09:44

Насчёт того, что нельзя вставить прямо в файл - это я погорячился. Можно, только толку всё равно нет.
  • 0

#3 TC_Noob

TC_Noob

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

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

Отправлено 04 апреля 2011 - 10:13

Я уже интересовался на форуме AQA по поводу динамического изменения NameMapping - они предлагаю "китайский вариант программирования" и вот что нужно:
1. каждый объект "зарулить" на переменную проекта
2. все необходимые значения содержать в скрипте
3. в нужный момент: <переменная_проекта>=<Значение_из_скрипта>
  • 0

#4 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 10:28

Я не ставлю себе задачи менять Name Mapping динамически. Меня вполне устраивает набор конфигураций.
  • 0

#5 TC_Noob

TC_Noob

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

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

Отправлено 04 апреля 2011 - 12:05

Так, о том и речь

Вы, в скрипте, прописываете на каждую конфигурацию набор текстовок, а далее, в один и тот же параметр проекта кидаете эту текстовку, в зависимости от конфигурации, и когда будет очередь обращения к объекту в NameMapping, свойство объекта должно быть variant и "зарулено" на параметр проекта, то должно, этот объект обработать.
  • 0

#6 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 12:20

Понял. Но я не могу увидеть юникодный объект через Object Browser. Отображаются знаки вопроса. То есть, когда я для NameMapping-а предоставлю корректное значение, он всё равно не сможет замаппиться, потому что у объекта знаки вопроса в WndCaption. В прикреплённом файле у меня Notepad с арабским заголовком и текстом, который не распознаётся через Object Browser.
  • 0

#7 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 12:22

Прикрепленный файл  Clipboard01.jpg   252,23К   27 Количество загрузок:
  • 0

#8 TC_Noob

TC_Noob

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

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

Отправлено 04 апреля 2011 - 12:37

А в Windows включена поддержка такой кодировки?
  • 0

#9 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 12:40

В Notepad-е же всё работает!
  • 0

#10 TC_Noob

TC_Noob

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

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

Отправлено 04 апреля 2011 - 12:44

Тогда, дорогой друг, нужны "танцы с бубном":
Пишем Func/Proc для получения Caption c окна по Handle (Думаю, идея ясна)
  • 0

#11 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 13:05

Caption c окна по Handle можно было бы получить функцией
int WINAPI GetWindowText(
__in HWND hWnd,
__out LPTSTR lpString,
__in int nMaxCount
);
Но к сожалению, 2-й параметр не прокатит в TestComplete...
  • 0

#12 TC_Noob

TC_Noob

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

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

Отправлено 04 апреля 2011 - 13:16

а в модуле "Win32API" (ctrl+space) у TestComplete, что нибудь поэтому поводу имеется?
  • 0

#13 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 13:18

Так это она и есть, просто я привёл полное описание с MSDN.
  • 0

#14 TC_Noob

TC_Noob

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

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

Отправлено 04 апреля 2011 - 13:20

Если оно имеется, то почему такая уверенность, что не прокатит?
  • 0

#15 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 13:26

Уже сталкивался с подобным: "JScript and other scripting languages based on it (C++Script and C#Script) do not support parameters passed by reference".
  • 0

#16 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 04 апреля 2011 - 13:40

Но я не могу увидеть юникодный объект через Object Browser. Отображаются знаки вопроса. То есть, когда я для NameMapping-а предоставлю корректное значение, он всё равно не сможет замаппиться, потому что у объекта знаки вопроса в WndCaption. В прикреплённом файле у меня Notepad с арабским заголовком и текстом, который не распознаётся через Object Browser.

Насчет вопросительных знаков. Выставите нужный язык (в данном случае - арабский) в Control Panel > Regional and Language Options > Language for non-Unicode programs. После этого TestComplete будет нормально показывать текст на этом языке.


  • 0

#17 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 04 апреля 2011 - 14:24

Судя по описанию, это действует для неЮникодных программ. Но моё тестируемое приложение Юникодное, локализованное, его локализацию мне и нужно проверять.
Допустим, с арабским языком вопрос решу подобным образом. А с остальными языками что делать?
  • 0

#18 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

Отправлено 05 апреля 2011 - 04:33

К тому же, вы будете смеяться, но арабского языка, оказывается, вообще нет в этом списке!
  • 0

#19 yelageen

yelageen

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

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Елагин Иван

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

Нашёл в хелпе ключевую фразу: «However, despite the fact that TestComplete lets you test Unicode applications, it is not a complete Unicode program. Its panels and dialogs (except for the fully Unicode-compatible Code Editor) are created with non-Unicode functions. So, like the user interface of any other non-Unicode program, TestComplete’s user interface supports only one Unicode language at a time. For example, the Object Browser can display English characters and either Japanese or Chinese hieroglyphs, but not both Japanese and Chinese.»
  • 0


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

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