使用 CasperJS 从淘汰赛下拉列表中获取选定的值
Get selected value from knockout dropdown using CasperJS
我有一个使用 KnockoutJS 创建的下拉菜单。现在我正在编写 UI 测试,我想在下拉列表中为我的 UI 测试获取所选项目(我正在使用 CasperJS)。问题是,当我在下拉列表的选择器旁边写 > option[selected="selected"]
时,我得到了未定义。请注意,我想在不更改 .js 文件的情况下执行此操作,只更改测试。我该怎么做?
CasperJS 没有直接提供获取 selected 值的函数,但是您可以使用正常的 DOM 操作来获取数据
var selector = "select"; // use proper selector
casper.then(function(){
var selected = this.evaluate(function(selector){
var s = document.querySelector(selector);
var o = s.children[s.selectedIndex];
return {value: o.value, text: o.innerHTML};
}, selector);
this.echo("result: " + JSON.stringify(selected, undefined, 4));
});
您可能还需要等待 select 元素出现:
casper.waitForSelector(selector + " > option")
.then(function(){/* from above */});
我有一个使用 KnockoutJS 创建的下拉菜单。现在我正在编写 UI 测试,我想在下拉列表中为我的 UI 测试获取所选项目(我正在使用 CasperJS)。问题是,当我在下拉列表的选择器旁边写 > option[selected="selected"]
时,我得到了未定义。请注意,我想在不更改 .js 文件的情况下执行此操作,只更改测试。我该怎么做?
CasperJS 没有直接提供获取 selected 值的函数,但是您可以使用正常的 DOM 操作来获取数据
var selector = "select"; // use proper selector
casper.then(function(){
var selected = this.evaluate(function(selector){
var s = document.querySelector(selector);
var o = s.children[s.selectedIndex];
return {value: o.value, text: o.innerHTML};
}, selector);
this.echo("result: " + JSON.stringify(selected, undefined, 4));
});
您可能还需要等待 select 元素出现:
casper.waitForSelector(selector + " > option")
.then(function(){/* from above */});