2015-05-28 2 views
0

я буду использовать robotframework для тестирования приложения, которые используют библиотеку Сенча ExtJS, моя проблема заключается в том, что с этой библиотекой идентификаторы генерируются динамически каждый раз, когда это добавлять новые компоненты, поэтому мой robotframework скрипт изменит но это плохая идея. кто-то сказал мне, что другие тестовые рамки у него есть плагины для этой задачи, но я не могу найти их в robotframework. благодарит заранее.robotframework с Сенча ExtJS

+0

Рассмотрите возможность использования [Siesta] (http://www.bryntum.com/products/siesta/). Ни в коем случае не добавляйте ручные идентификаторы. – Saki

ответ

0

Это не отличное решение, поэтому, надеюсь, кто-то еще сможет найти плагин или что-то, что легко реализовать. Однако, если вы не найдете другого способа, вы можете предоставить каждому из своих элементов Ext.js идентификатор вручную, установив для свойства «id» на каждый из ваших элементов уникальный идентификатор самостоятельно. Это не займет слишком много работы, и если вы назовете им что-то, что действительно связано с тем, что они есть, это сделает идентификатор более понятным для человека.

Из документов Сенча:

ID: String

Уникальный идентификатор этого экземпляра компонента.

Не следует использовать эту конфигурацию, за исключением одиночных объектов в приложении. Компоненты, созданные с идентификатором, могут быть доступны глобально, используя Ext.getCmp.

Вместо использования назначенных идентификаторов используйте конфигурацию itemId и ComponentQuery, которая обеспечивает выборочный поиск компонентов Sencha, аналогичных запросу DOM. Класс Container содержит методы ярлыков для запроса своих дочерних компонентов по селектору.

Обратите внимание, что этот идентификатор также будет использоваться как идентификатор элемента для содержащего HTML-элемента, который отображается на странице этого компонента. Это позволяет вам писать правила CSS на основе идентификатора, чтобы однозначно идентифицировать конкретный экземпляр этого компонента, а также выбирать подэлементы, используя идентификатор этого компонента в качестве родителя.

Источник: http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.AbstractComponent-cfg-id

0

Есть много способов доступа к элементам на странице, используя идентификатор только один путь. Предполагая, что вы используете Selenium2Library, вы можете использовать любого из следующих стратегий локаторов (от Selenium2Library documentation):

Strategy  Example         Description 
--------------- --------------------------------------- --------------------------------- 
identifier  Click Element | identifier=my_element Matches by @id or @name attribute 
id    Click Element | id=my_element   Matches by @id attribute 
name   Click Element | name=my_element   Matches by @name attribute 
xpath   Click Element | xpath=//div[@id='my_element'] Matches with arbitrary XPath expression 
dom    Click Element | dom=document.images[56] Matches with arbitrary DOM express 
link   Click Element | link=My Link   Matches anchor elements by their link text 
partial link Click Element | partial link=y Lin  Matches anchor elements by their partial link text 
css    Click Element | css=div.my_class  Matches by CSS selector 
jquery   Click Element | jquery=div.my_class  Matches by jQuery/sizzle selector 
sizzle   Click Element | sizzle=div.my_class  Matches by jQuery/sizzle selector 
tag    Click Element | tag=div     Matches by HTML tag name 
default*  Click Link | default=page?a=b  Matches key attributes with value after first '=' 

Обратите внимание, что даже если некоторые примеры (например, XPath) показывают использование идентификатора, идентификатор может не требуется строго (за исключением, очевидно, для id = и identifier =). xpath обычно является стратегией последнего, потому что вы можете ссылаться почти на что угодно в документе. Для получения дополнительной информации о xpath вы можете начать здесь: http://en.wikipedia.org/wiki/XPath

0

С выпуском Selenium2Library 1.7 пользователи теперь могут создавать свои собственные локаторы. Вы можете использовать это, чтобы создать схему расположения, основанную на компоненте запроса ext. Пока общая структура приложения не так сильно изменится, этого может быть достаточно. Для получения дополнительной информации о пользовательских локаторах см. Selenium2Library docs.

Я запустил дополнительную библиотеку для S2L на github, которую вы можете проверить для справки, но она еще не закончена.

Кроме того, Ext позволяет размещать уникальные идентификаторы компонентов, просто указывая атрибут id.Я бы рекомендовал применять идентификаторы ко всем элементам, с которыми вы хотите взаимодействовать, посредством своих тестов, тем самым устраняя необходимость в сложном поведении для автоматизации интерфейса.

Смежные вопросы