Selenium 2.0 и findBy - Пользовательские свойства или Свойства Expando - PullRequest
0 голосов
/ 18 ноября 2011

У кого-нибудь есть предложение по поиску элементов на странице по пользовательскому свойству, например по свойству expando?

Проблема: Сайт использует много JSP и динамических изображений для кнопок. У них нет статических имен или идентификаторов. (Подумайте о процессе регистрации или оформления заказа, когда на каждой странице есть кнопка «Далее» или «Продолжить», но она динамически переносит вас куда-то в зависимости от текущего контекста)

Предлагаемое решение: На мои неоднократные запросы о невозможности их автоматизации недавно был получен ответ с помощью настраиваемого свойства expando "btn-tag-title".

Если каждый элемент на странице имеет уникальное (но настраиваемое) свойство с именем btn-tag-title =, может ли селен 2.0 найти его надежным каждый раз?

Другие предлагаемые решения?

    log.info(driver.getCurrentUrl());
    assertTrue(selenium.isElementPresent("btn-tag-title=Sign In"));
    selenium.type("name=username", "demo");
    selenium.type("name=password", "tester");
    selenium.click("btn-tag-title=Sign In");
    log.info(driver.getCurrentUrl());

1 Ответ

0 голосов
/ 18 ноября 2011

Конечно.Вы можете ссылаться на любой атрибут элемента в локаторе XPath или CSS.Например:

assertTrue(selenium.isElementPresent("//*[@btn-tag-title='Sign In']"));
...
selenium.click("//*[@btn-tag-title='Sign In']");

или

assertTrue(selenium.isElementPresent("css=*[btn-tag-title='Sign In']"));
...
selenium.click("css=*[btn-tag-title='Sign In']");

Для чего стоит, если ваши разработчики могут поставить пользовательское свойство с гарантированным уникальным значением на каждый интересующий элемент, вы должны спросить ихпочему они не поместят это значение в атрибут id=.Поскольку идентификаторы элементов являются особыми в HTML, DOM и Selenium, и элементы могут быть расположены намного быстрее по их идентификатору, чем любым другим способом.

...