2015-03-09 2 views
0

Пожалуйста, предложите мне локатор для определения области текста в веб-приложении.Selenium Locator for Angular JS Text Area не работает

<div contenteditable="true" id="taTextElement9662867992554610" ta-bind="ta-bind" ng-model="html" placeholder="Enter Role Requirements" class="ng-isolate-scope ng-pristine ng-valid ta-bind placeholder-text"><p><br></p></div> 

Я пробовал с //div[@ng-isolate-scope ng-pristine ng-valid ta-bind'].

ответ

2

я бы полагаться на атрибут id (при условии, 9662867992554610 часть является динамическим):

//div[starts-with(@id, "taTextElement")] 

Или, в случае, если вы используете protractor, вы можете использовать by.model() локатор:

element(by.model('html')) 
0

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

Как было отмечено выше, вы можете использовать:

//div[starts-with(@id, "taTextElement")] 

Но я не думаю, что это хороший выход. Лучшее решение ИМО попросить веб-разработчикам создавать специальный атрибут для тех видов элементов, например:

<div data-hook="my-special-text"</div> 

Этот атрибут данных крючок будет служить в качестве контракта между вами и разработчиком, он знайте, что как только он его изменит, это может повлиять на тесты автоматизации. Более того, он может (должен) использовать этот атрибут в своих клиентских тестах (Protractor).

+0

Привет, Спасибо за ответ. Я попытался с ID, но я не смог ввести данные, разработчики добавили id, но приложение генерирует динамический идентификатор, и они говорят, что это угловой JS-плагин. Есть ли альтернативное решение для ввода данных в угловой js-плагин с использованием selenium webdriver с Java. –

+0

@BhaskarReddy, добавить * совершенно новый * атрибут. Например - «привязка данных» (как показано в ответе). Поощряйте разработчиков использовать этот атрибут для своих тестов интеграции. Таким образом, вы создадите атрибут, который будет действовать как контракт между вами обоими. – Stas