用量角器按文本选择
Selecting by text with Protractor
我对java selenium比较熟悉,对JS和Protractor都是新手。假设我正在尝试从具有公共标识符的选项列表中单击一个选项…
var options = $('.options');
我怎样才能得到所有具有相同标识符的元素,然后根据其文本选择一个呢?我不会开车。像我可以在java中查找元素,因为没有对驱动程序的引用。
这是我到目前为止尝试过的,但它不起作用,我认为这是由于我对JS缺乏经验
this.selectCompanyCode = function(companyCode) {
dropDownMenus[0].click();
var companyCodeOptions = $('[ng-bind-html="companyCode"]');
companyCodeOptions.filter(function (elem) {
return elem.getText().then(function text() {
return text === companyCode;
});
}).first().click();
};
Select all elements with common identifier: $$('.options');
选择所有具有.options
类的元素——相当于element.all(by.css('.options'))
。这将返回一个ElementArrayFinder。关于如何从ElementArrayFinder中通过索引选择元素,请参见.get()。
通过文本查找,可以使用cssContainingText(css, text)
。例如,var loginBtn = element(by.cssContainingText('button.ng-scope', 'Login'));
但是,如果由于某种原因,这些没有提供预期的结果,您可以在ElementArrayFinder上使用.filter()
(文档在这里)来遍历元素数组并根据您指定的条件查找元素。例如,
var allOptions = $$('.options');
allOptions.filter(function (elem) {
return elem.getText().then(function (text) {
return text === 'What you want';
});
}).first().click();
而且,虽然我从未使用过常规Java Selenium(所以我不知道这是否相同),但确实有browser
参考(因此findElements
函数):http://www.protractortest.org/#/api?view=ProtractorBrowser。
希望有帮助!
编辑:使用你的代码:
this.selectCompanyCode = function(companyCode) {
// where is dropDownMenus defined? This has function no reference to it.
dropDownMenus.get(0).click(); // should be this
var companyCodeOptions = $$('[ng-bind-html="' + companyCode + '"]');
return companyCodeOptions.filter(function (elem) {
return elem.getText().then(function text() {
return text === companyCode;
});
}).first().click();
};
第二个编辑:假设公司代码是唯一的,您可能不需要使用过滤器。试试这个:
this.selectCompanyCode = function(companyCode) {
dropDownMenus.get(0).click();
var companyCodeOptions = $('[ng-bind-html="' + companyCode + '"]');
return companyCodeOptions.click();
};
使用cssContainingText
element(by.cssContainingText(".option", "text")).click();
http://www.protractortest.org//api ?视图= ProtractorBy.prototype.cssContainingText
- 用于选择/文本框操作的JavaScript
- 以编程方式选择文本Mobile Safari
- Firefox输入可以't在选择文本时滚动
- 如何在javascript中取消选择文本框
- 如何在html中打印选择文本
- SVG元素——处理和选择文本
- 选择文本并添加到本地存储
- 选择“p文本jquery”
- 为什么火狐在我更改 innerHTML 时会选择文本
- 根据换行符选择文本
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 单击按钮时选择文本
- JavaScript 触发器事件在 Android 上选择文本
- .val() 选择文本而不是值字符串,当网页动态编辑源 html
- 为什么不用特殊字符替换选择文本,以及如何删除此特殊字符
- 使用链接多次选择文本
- 使用jQuery在焦点上选择文本框是't在移动浏览器中工作
- Safari存在文本输入问题,用户输入时会选择文本,导致文本丢失
- Bootstrap下拉菜单-仅复选框不选择文本
- 使用.on的多个下拉菜单选择文本仅适用于第一个下拉菜单