最近,我注意到一个新的定位器被添加到量角器文档 –
by.js()
:
Locates an elements by evaluating a JavaScript expression,which may be either a function or a string.
我明白这个定位器提供了什么,但是当这个定位器可以使用时,我错过了真实的用例.我什么时候应该喜欢使用by.js而不是其他内置的定位器,如by.css?
解决方法
我觉得用例是使用核心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值,如颜色,字体等获取元素.虽然过滤器可以在这种情况下使用,但是by.js也支持它.
>如果元素不能被css或xpath或任何其他定位符访问,例如具有动画或转换的伪元素.
示例: –
假设有元素具有:before和:在转换之后 –
.element:before { color: rgb(255,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)');
希望它有帮助.