在Python、Java和其他几个selenium绑定中,对select-有一个非常方便的抽象
例如,假设有以下
Select
标签:
<select id="fruits" class="select" name="fruits">
<option value="1">Banana</option>
<option value="2">Mango</option>
</select>
下面是我们如何在Python中操作它:
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_id('fruits'))
# get all options
print select.options
# get all selected options
print select.all_selected_options
# select an option by value
select.select_by_value('1')
# select by visible text
select.select_by_visible_text('Mango')
换句话说,它是一个非常透明且易于使用的抽象。
是否可以以类似方式操纵量角器中的
选择
标记?
这不是如何在下拉量角器e2e测试中选择选项或如何在量角器测试中选择框中点击选项的重复?。
使用Typescript进行编码:
标记名:
按.tagName('选项')
按.tagName('md-option')
by.tag名称
selectOption(selector: string, item: string) {
let selectList: any;
let desiredOption: any;
selectList = element(by.css(selector));
selectList.click();
selectList.findElements(by.tagName('option'))
.then(function findMatchingOption(options: any) {
options.some(function (option: any) {
option.getText().then(function doesOptionMatch(text: string) {
if (item === text) {
desiredOption = option;
return true;
}
});
});
})
.then(function clickOption() {
if (desiredOption) {
desiredOption.click();
}
});
}
使用:
selectOption('//select[@id="food"]', 'Pizza');
启动量角器v.0.22.0,您只需使用新的By.css ContainingText
定位器:
element(by.cssContainingText('option', 'Mango'));
请参阅API参考。
量角器中没有这样的东西,但我们可以写自己的:
select-wrapper.js
'use strict';
var SelectWrapper = function(selector) {
this.webElement = element(selector);
};
SelectWrapper.prototype.getOptions = function() {
return this.webElement.all(by.tagName('option'));
};
SelectWrapper.prototype.getSelectedOptions = function() {
return this.webElement.all(by.css('option[selected="selected"]'));
};
SelectWrapper.prototype.selectByValue = function(value) {
return this.webElement.all(by.css('option[value="' + value + '"]')).click();
};
SelectWrapper.prototype.selectByPartialText = function(text) {
return this.webElement.all(by.cssContainingText('option', text)).click();
};
SelectWrapper.prototype.selectByText = function(text) {
return this.webElement.all(by.xpath('option[.="' + text + '"]')).click();
};
module.exports = SelectWrapper;
用法
var SelectWrapper = require('select-wrapper');
var mySelect = new SelectWrapper(by.id('fruits'));
# select an option by value
mySelect.selectByValue('1');
# select by visible text
mySelect.selectByText('Mango');
注意,选择是JavaScript中的保留字
问题内容: 在Python,Java和其他几种硒绑定中,在HTML结构(class)上有一个非常方便的抽象。 例如,假设有以下标记: 这是我们如何在Python中操作它的方法: 换句话说,这是一个 非常透明且易于使用的抽象 。 可以类似的方式 在量角器* 中操纵标签吗? * 这与下拉式量角器e2e测试中的“如何选择选项”或量角器测试中的“选择”框中的如何单击选项不是重复的?。 问题答案: 在量角器
我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码:
更新代码
问题内容: 我想设置一个先前选择的要在页面加载时显示的选项。我用以下代码尝试了它: 与 但这是行不通的。有任何想法吗? 问题答案: 这绝对应该工作。确保已将代码放入:
我想调用一个函数时,选择的任何选项。类似于这样: 但不知何故不起作用。有人能帮忙吗。 请注意 我不想捕获更改事件,如果我选择已经选择选项,则不会触发更改事件
下列选项是根据在第一步选择的文件格式而有所不同。 包含列的标题 如果勾选了这个选项,字段名将会包含在导出的文件。 如果零,留空白 如果字段内容是 0,留空白。 追加 将记录追加至现有的文件。 遇到错误时继续 在导出进程中忽略遇到的错误。 在 XML 中使用属性格式 属性格式 <RECORDS> <RECORD OrderNo="1003" ItemNo="1" PartNo="1313" Qty=