Как я могу идентифицировать элемент по модели или по имени в следующем примере?

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

element(by.name('Login')).click();

Он работает только тогда, когда я идентифицирую его с помощью css:

element(by.css('.login-button')).click();

or

  element(by.css('button[ng-disabled=clicked]')).click();

Но проблема: тест пройден, и пользователь не перенаправляется на домашнюю страницу, даже если я поставил browser.sleep (8000); Правильно ли обозначена кнопка входа с element(by.css('button[ng-disabled=clicked]')).click();?

Вы можете найти здесь html-код:

 <md-button type="submit" class="md-raised login-button" ng-disabled="clicked" translate="login.LOGIN">Login</md-button> </section>

 </div> </fieldset> </form> <md-divider></md-divider> <footer class="login-footer"> <div layout="row" layout-align="center center"> <md-button ng-click="goToCustomerCare()" class="login-footer-link" translate="login.CUSTOMER_CARE">Contact Customer Care</md-button> <div> | </div> <md-button ng-click="showDisclaimer()" class="login-footer-link" translate="login.DISCLAIMER">Disclaimer</md-button> </div> </footer> </div>

person Emna Ayadi    schedule 26.04.2016    source источник


Ответы (1)


В опубликованном вами HTML-коде есть несколько кнопок, но если вы пытаетесь нажать кнопку входа в систему, вы сможете сделать

$('.md-raised').click(); or $('.md-raised.login-button').click();

Это должно искать элемент по классу.

person reutsey    schedule 26.04.2016
comment
вы имеете в виду, что я остаюсь с css, но другим способом: element (by.css ('. md-raise.login-button]')). click (); ? - person Emna Ayadi; 26.04.2016
comment
Да, я бы попробовал. Вы должны найти кнопку по имени класса. $ - это сокращенный способ записи element (by.className ()). Вот статья, в которой обсуждаются некоторые из них: luxiyalu.com/protractor-locators-selectors - person reutsey; 26.04.2016
comment
До сих пор не работает !! Проблема в том, что ожидаемое равенство передается после щелчка, но при щелчке не выполняется никаких действий !!! - person Emna Ayadi; 26.04.2016
comment
Можете ли вы опубликовать код, который вы используете, чтобы нажать кнопку и ожидать, что вы будете использовать после этого? - person reutsey; 27.04.2016
comment
Вы можете попробовать сделать это: $ ('. Md-raise'). Click (). Then (function () {console.log (здесь); expect (). ToBe ();)}; Это гарантирует, что ожидание не будет выполнено до тех пор, пока не будет выполнен щелчок. - person reutsey; 27.04.2016
comment
Также вы можете попробовать сделать $ ('. Md-raise'). GetText (). Then (function (text) {console.log (text);}); Если он правильно размещает кнопку входа в систему, он должен распечатать текст входа в систему. - person reutsey; 27.04.2016
comment
Проблема становится более заметной, когда я помещаю console.log ('msg before send keys and after ...') я получаю все мои сообщения в консоли еще до того, как веб-сайт будет загружен в симулятор !!!! - person Emna Ayadi; 27.04.2016
comment
Ваше приложение угловое? если нет, вам нужно добавить операторы ожидания, чтобы страница загружалась первой. - person reutsey; 27.04.2016
comment
Позвольте нам продолжить это обсуждение в чате. - person Emna Ayadi; 27.04.2016