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

Фотография

FullName объекта


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

#1 dguminsk

dguminsk

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

  • Members
  • Pip
  • 44 сообщений
  • ФИО:Серебрянников Валентин Олегович


Отправлено 02 мая 2012 - 08:03

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

#2 sawoy

sawoy

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

  • Members
  • Pip
  • 51 сообщений
  • ФИО:Alex Savchuk

Отправлено 02 мая 2012 - 08:29

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

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;
}
?
  • 0

#3 dguminsk

dguminsk

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

  • Members
  • Pip
  • 44 сообщений
  • ФИО:Серебрянников Валентин Олегович


Отправлено 02 мая 2012 - 08:37

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

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

#4 NightSpirit

NightSpirit

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

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


Отправлено 07 мая 2012 - 08:38

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

#5 NightSpirit

NightSpirit

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

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


Отправлено 07 мая 2012 - 08:40

Или даже ...Page("http://site.ru/id*")...
  • 1

#6 dguminsk

dguminsk

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

  • Members
  • Pip
  • 44 сообщений
  • ФИО:Серебрянников Валентин Олегович


Отправлено 07 мая 2012 - 08:42

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

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

#7 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 08 мая 2012 - 15:16

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

Выкидывать элементы из иерархии нельзя, иначе ТС не сможет найти те объекты, с которыми вы хотите работать. Однако, есть варианты:

1. Если иерархия объектов в приложении не меняется, а вы просто не хотите видеть в коде имена кучи промежуточных объектов, то вы можете использовать Name Mapping и его дерево Aliases. Из этого дерева можно удалять промежуточные объекты, так как все объекты в нём связаны с объектами в дереве Mapped Objects, из которого промежуточные объекты не удаляются. В этом случае, к объекту можно будет обращаться одним из таких способов:
Sys.Process("firefox").Page("123").Panel("123").Panel("321")
NameMapping.firefox.myPage.panel123.panel321
Aliases.firefox.panel321

2. Искать нужный объект в дереве тестируемого процесса/страницы. Это можно сделать из кода используя FindChild (Sys.Process("firefox").Page("*").FindChild("idStr", "321", 5)) или в Name Mapping используя фичу Extended Find.
  • 0
С уважением,
Дмитрий

#8 dguminsk

dguminsk

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

  • Members
  • Pip
  • 44 сообщений
  • ФИО:Серебрянников Валентин Олегович


Отправлено 25 мая 2012 - 12:51

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

#9 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 26 мая 2012 - 13:51

Использование '*' возможно только со строковыми параметрами. Иногда с целочисленными параметрами можно делать примерно то же самое, указав в значениях '-1', однако в случае с Table и Cell это вряд ли сработает. Если индексы нужной вам таблички или ячейки постоянно меняются, то без использования кастомного Name Mapping или FindChild не обойтись.
  • 1
С уважением,
Дмитрий


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

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