Click на линк в Angular - как решить задачу?


(Alex Shats) #1

Пришлось мне писать автомацию на сайт который построен на Angular.
И есть на этом чудо сайте такая кнопочка как "Выход".
В коде она выглядит следующе:

<a href="" ng-click="LogOff()" ng-bind="Resources('Exit')" class="ng-binding">Выход</a>

Обычный Click() ничего не делает, только фокус на этот линк создает.
И как же его нажать?
Подумал может вызвать LogOff() будет достаточно, написал следующее

IJavaScriptExecutor javascript = driver as IJavaScriptExecutor;
if (javascript == null)
       throw new ArgumentException("element", "Element must wrap a web driver that supports javascript execution");

javascript.ExecuteScript("Logoff();");

Но оно не срабатыват. Может я не правильно вызываю этот метод Logoff()?

Может быть как то через javascript произвести клик на линк? Подскажите как решить задачу.


(Алеся) #2

как обращаетесь к элементу используя обычный Click?


(sidelnikovmike) #3

Через Actions пробовали?


(Oleg V) #4

Когда нам было необходимо писать автотесты (писали на JavaScript) для сайта на AngularJS, мы использовали платформу node.js Тестировали через protractor (обертка вокруг Selenium ) внутри использовали фреймворк для тестирования Jasmine
Возможно Вам как-то поможет...
https://docs.angularjs.org/api
http://nodejs.org/
https://github.com/angular/protractor
http://jasmine.github.io/1.3/introduction.html


(Dmitry Cheremushkin) #5

+1. Весьма известный и популярный tool для тестирования AngularJS. Интеграция с WebDriver.


(Alex Shats) #6

Что вы имеете ввиду под Actions?


(Alex Shats) #7

А альтернатива на C#?


(Dmitry Cheremushkin) #8

Т.е. что-то вроде

using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Interactions.Internal;
using OpenQA.Selenium.Support.UI;

var elem = driver.FindElement(By.Id("someId"));
Actions action  = new Actions(driver);
action.Click(elem).Perform()

(sidelnikovmike) #9

anym0us ответил верно. Это я и имел в виду.


(Oleksandr Khotemskyi) #10

Такой скрипт не отработает, мне кажется LogOff() находится в другом скопе чем выполняемый скрипт.

Если честно сложно сказать в чем именно проблема. Я использовал библиотеку Protractor для автоматизации сайта на Angular.

Можете привести пример кода с обычным кликом по линке?


(Alex Shats) #11

Странно, но обычный клик вдруг начал работать.