Ответ 1
Попробуйте использовать xpath:
element(by.xpath('//div[@my-unique-id="abc123"]'))
или только по атрибуту
element(by.xpath('//div[@my-unique-id]'))
Я использую Selenium WebDriver и Protractor для запуска тестов e2e в моем проекте angular. Скажем, у меня есть элемент вроде:
<div my-directive my-unique-id="abc123"></div>
Как найти элемент выше.
Я попытался с element(by.css('div[my-unique-id="abc123"]'));
, но он дает NoSuchElementError.
Если я попробую с атрибутами HTML, например, я хочу найти:
<a title="myTitle" href="">Click me</a>
Мне удалось правильно найти элемент, используя element(by.css('a[title="myTitle"]'))
Как найти элемент с настраиваемыми атрибутами, если у него нет стандартных атрибутов HTML?
Попробуйте использовать xpath:
element(by.xpath('//div[@my-unique-id="abc123"]'))
или только по атрибуту
element(by.xpath('//div[@my-unique-id]'))
попробуйте использовать:
element(by.css('[my-unique-id="abc123"]'))
это проще и читабельнее, чем xpath для простых случаев.
больше о синтаксисе xpath и когда это полезно: http://www.w3schools.com/xml/xml_xpath.asp