如何在运行时突出显示量角器中的元素
How to highlight element in protractor at run time
在我的量角器框架中,我想突出显示UI中找到的元素。我尝试使用以下代码,如果我使用 locators(id,name,className,linkText,xpath)
它工作正常。当我使用locators (buttonText,repeater,model,binding)
以下代码不起作用并抛出"定位器无效"错误。
而不是"browser.driver.findElement(locator);
",如果我使用"element(locator);
"代码不起作用并抛出
"致命错误:CALL_AND_RETRY_LAST分配失败 - 进程超出 记忆"
节点版本---2.15.1
量角器版本 ---3.2.2
我如何调用函数:-
highlightElement(by.linkText('log In'));
---工作正常
highlightElement(by.buttonText('Place order'));
-- 抛出错误
highlightElement = function(locator){
console.log("highlight--");
console.log("locator---:"+locator);
var ele = browser.driver.findElement(locator);
return browser.driver.executeScript("arguments[0].setAttribute('style', arguments[1]);",ele, "color: Red; border: 2px solid red;").
then(function(resp){
browser.sleep(2000);
return ele;
},function(err){
console.log("error is :"+err);
});
};
请帮助我是否有任何其他方法可以突出显示量角器中的元素。
问候
迪帕克·库马尔·苏萨拉
你非常接近。 函数正在使用的所有这些定位符都是直接从 webDriver 继承的。 此列表包括 - className, css, id, linkTest, js, name, partialLinkText, tagName, and xpath
;
其他不起作用的是量角器的原型遗传。 此列表包括 - addLocator, binding, exactBinding, model, buttonText, partialButtonText, repeater, exactRepeater, cssContainingText, options, and deepCss
.
类似地 - 函数findElement
中的调用继承自 webDriver。 所以你本质上是在调用不支持的findElement(by.buttonText())
(量角器的element(by.buttonText())
会起作用)。
就您的代码而言,我修改了一些东西,它似乎对我有用:
highlightElement = function(el){
console.log("highlight--");
console.log("locator---:"+el.locator());
return browser.driver.executeScript("arguments[0].setAttribute('style', arguments[1]);",el.getWebElement(), "color: Red; border: 2px solid red;").
then(function(resp){
browser.sleep(2000);
return el;
},function(err){
console.log("error is :"+err);
});
};
注意 el.locator(), el.getWebElement(),而不是在函数var ele = browser.driver.findElement(locator);
中声明元素,你可以简单地将元素作为参数传递给它。 为了提供参考,这是我的示例代码:
describe('Protractor Demo App', function() {
it('changes the color', function() {
browser.get('http://juliemr.github.io/protractor-demo/');
var ely = element(by.model('first')); // using model
highlightElement(ely); // works with model
browser.sleep(5000); // just to see the header change color
expect(ely.getAttribute('style')).toContain('color: red');
});
});
来源: https://angular.github.io/protractor/#/api
- 无法从量角器测试中元素的值返回字符串
- 我如何选择/点击一个带有for=“”的元素"属性[量角器]
- 需要在量角器中找到使用ng中继器的li元素的数量
- 识别切换条元素文本并在量角器中单击它
- 量角器-如何从中继器而不是元素中获得实际值
- 如何使用量角器将文件上传到ng文件上传元素
- 量角器 - 根据条件识别嵌套下拉元素时超时
- 如何在运行时突出显示量角器中的元素
- 量角器无法定位元素/值
- 获取元素's用量角器偏移的位置
- 如何在没有明显可识别属性的量角器中识别页面元素
- 点击量角器中元素的给定坐标
- 量角器:获取元素's同上
- 量角器获取元素的比例或缩放的宽度和高度
- 鼠标悬停元素在使用量角器时不起作用
- 量角器 StaleElementReferenceError: 元素不再附加到 DOM
- 使用量角器获取伪元素的值
- 我应该从量角器中元素的 getText() 承诺中分配一个变量或返回变量
- 找出量角器元素的CSS链
- 量角器元素(.)从单独的文件返回未定义