FullName объекта
Автор dguminsk, 02 мая 2012 08:03
Сообщений в теме: 8
#1
Отправлено 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)
Пример, что я привел, понятное дело не рабочий, т.к. это для переменных Стринговых.
Буду очень благодарен, если вы поймете о чем я и поможете.
Спасибо
Например есть 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)
Пример, что я привел, понятное дело не рабочий, т.к. это для переменных Стринговых.
Буду очень благодарен, если вы поймете о чем я и поможете.
Спасибо
#2
Отправлено 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; }?
#3
Отправлено 02 мая 2012 - 08:37
Насколько я понял в данную функцию (при вызове) мы посылаем url и он его прописывает вместо url, находящегося в Page()?Такое подойдет:
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; }?
В принципе неплохо, можно использовать, но вопрос еще в том, что скажем так, у нас урл рандомный, т.е. немного углублюсь:
Сайт состоит из меню, скажем 5 пунктов и кучи ссылок на другие страницы (скажем 100).
Так суть в том, что мне необходимо перейти на рандомную ссылку (делаю это по средствам FindChild из Array) и перехожу на ссылку. Но при этом каждый раз переход идет на первую попавшуюся ссылку и они вида http://site.ru/id666, в след. раз переход может произойти на http://site.ru/id555 и т.д.
При переходе на ссылку меню сверху остается, стеме же объектами и теме же путями, кроме Page().
Думаю, Вы поняли мою мысль =)
#4
Отправлено 07 мая 2012 - 08:38
можно конечно :)
Sys.Process("firefox").Page("*")
Sys.Process("firefox").Page("*")
#6
Отправлено 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")
#7
Отправлено 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.
Выкидывать элементы из иерархии нельзя, иначе ТС не сможет найти те объекты, с которыми вы хотите работать. Однако, есть варианты:
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.
С уважением,
Дмитрий
Дмитрий
#8
Отправлено 25 мая 2012 - 12:51
Спасибо, с Page разобрался, а возможно ли использовать такое в частях пути Table(0) например и Cell(0, 1) ?
Пробовал и Cell("*") и Cell("*","*") не выходит.
Спасибо за Ваша ответы
Пробовал и Cell("*") и Cell("*","*") не выходит.
Спасибо за Ваша ответы
#9
Отправлено 26 мая 2012 - 13:51
Использование '*' возможно только со строковыми параметрами. Иногда с целочисленными параметрами можно делать примерно то же самое, указав в значениях '-1', однако в случае с Table и Cell это вряд ли сработает. Если индексы нужной вам таблички или ячейки постоянно меняются, то без использования кастомного Name Mapping или FindChild не обойтись.
С уважением,
Дмитрий
Дмитрий
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных