gpt4 book ai didi

javascript - 使用 Protractor 按文本选择

转载 作者:行者123 更新时间:2023-11-29 19:09:19 25 4
gpt4 key购买 nike

我主要熟悉java selenium,我对JS和Protractor都是新手。假设我正在尝试从具有公共(public)标识符的选项列表中单击一个选项..

var options = $('.options');

我怎样才能获得具有该公共(public)标识符的所有元素,然后通过其文本选择一个元素?我不能像在 java 中那样执行 driver.findElements,因为没有对驱动程序的引用..

这是我到目前为止尝试过的方法,但它不起作用,我认为这是由于我对 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();
};

最佳答案

选择具有公共(public)标识符的所有元素:$$('.options'); 选择具有类 .options 的所有元素——相当于 element.all(by.css('.options'))。这将返回 ElementArrayFinder .另见 .get()了解如何从 ElementArrayFinder 中按索引选择元素。

按文本查找,可以使用cssContainingText(css, text)。例如,var loginBtn = element(by.cssContainingText('button.ng-scope', 'Login'));

但如果出于某种原因这些没有提供预期的结果,您可以在 ElementArrayFinder 上使用 .filter() ( docs here ) 来遍历元素数组并找到基于元素的元素在您指定的条件下。例如,

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();
};

关于javascript - 使用 Protractor 按文本选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com