Ответ 1
Я считаю, что использование элементов с использованием основных функций javascript, когда css
и другие локаторы элементов не помогут или не имеют свойств, которые мы могли бы использовать. Сценарии -
- Если вы получаете элемент, использующий основные функции javascript, передавая его в
browser.executeScript
, тогдаby.js
может быть использован для его замены.
Пример: -
Предположим, вам нужно было получить элемент, который отображается сверху между ними, вы можете получить его таким образом -
var ele = element(by.js(function(){
var ele1 = document.getElementById('#ele1');
var ele2 = document.getElementById('#ele2');
var val = ele1.compareDocumentPosition(ele2);
if(val === 4) return ele1;
else return ele2;
}));
- Если вы хотите получить элемент, используя его значения css, такие как цвет, шрифт и т.д. Хотя в этом случае можно использовать
filter
, ноby.js
также поддерживает его. - Если элементы недоступны css или xpath или любые другие локаторы, например псевдоэлементы, которые имеют анимации или переходы.
Пример: -
Предположим, что если элемент, имеющий переходы :before
и :after
-
.element:before {
color: rgb(255, 0, 0);
}
Чтобы проверить цвет элемента, мы могли бы использовать by.js
, проходящий в выражении javascript, чтобы получить элемент -
var ele = element(by.js(function(){
return window.getComputedStyle(document.querySelector('.element'), ':before');
}));
expect(ele.getCssValue('color')).toEqual('rgb(255, 0, 0)');
Надеюсь, что это поможет.