Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查列表是否包含javascript中传递的元素_Javascript_Node.js_Angularjs_Selenium_Protractor - Fatal编程技术网

如何检查列表是否包含javascript中传递的元素

如何检查列表是否包含javascript中传递的元素,javascript,node.js,angularjs,selenium,protractor,Javascript,Node.js,Angularjs,Selenium,Protractor,我想检查应用程序返回的列表是否包含预期元素。请告诉我哪里出错: this.verifyOptionsInDrpDwn = async function(){ var optionList = await drpDwn.all(by.tagName('option')).getText(); console.log(optionList); var expOptions=['a','b','c','d','e','f']; for (let i =

我想检查应用程序返回的列表是否包含预期元素。请告诉我哪里出错:

this.verifyOptionsInDrpDwn = async function(){
      var optionList = await drpDwn.all(by.tagName('option')).getText();
      console.log(optionList);
      var expOptions=['a','b','c','d','e','f'];
      for (let i = 0; i < expOptions.length; i++) {
           var bool=optionList.includes(expOptions[i]);
           console.log(bool);
      }
 }
 
 output :
     [
  '1-a',
  '2-b',
  '3-c',
  '4-d',
  '5-e',
  '6-f'
]

false
this.verifyOptionsInDrpDwn=async function(){
var optionList=await drpDwn.all(按.tagName('option')).getText();
控制台日志(选项列表);
var指数=['a'、'b'、'c'、'd'、'e'、'f'];
for(设i=0;i
确定数组的条目中是否包含某个值。但是在您的例子中,您需要检查该数组的元素是否包含指数的值

如果替换
var bool=optionList.includes(指数[i])
使用
var bool=optionList.some((a)=>a.includes(expOptions[i]),它应该可以工作。

确定数组的条目中是否包含某个值。但是在您的例子中,您需要检查该数组的元素是否包含指数的值

如果替换
var bool=optionList.includes(指数[i])

使用
var bool=optionList.some((a)=>a.includes(expOptions[i]),它应该可以工作。

我会用不同的方式来做

  • 定义一个获取所有值的方法
  • 在规范中定义期望的数组并执行断言
  • 这对应于最佳实践,并且您的函数是独立的,所有断言都是测试用例本身的一部分,这表明了常识


    但从JavaScript的角度来看,这是一条路要走

    this.verifyOptionsInDrpDwn = async function(){
      var optionList = await drpDwn.all(by.tagName('option')).getText();
      var expOptions=['a','b','c','d','e','f'];
      return optionList.length === expOptions.length 
        && optionList.every(elem => expOptions.includes(elem))
     }
    

    没有经过测试,但给了你一个想法

    我会用不同的方法

  • 定义一个获取所有值的方法
  • 在规范中定义期望的数组并执行断言
  • 这对应于最佳实践,并且您的函数是独立的,所有断言都是测试用例本身的一部分,这表明了常识


    但从JavaScript的角度来看,这是一条路要走

    this.verifyOptionsInDrpDwn = async function(){
      var optionList = await drpDwn.all(by.tagName('option')).getText();
      var expOptions=['a','b','c','d','e','f'];
      return optionList.length === expOptions.length 
        && optionList.every(elem => expOptions.includes(elem))
     }
    

    未测试,但给您一个想法

    您的optionList数组是['1-a','2-b','3-c','4-d','5-e','6-f',因此它不是预期的输出?我不确定你在问什么?是的,你的输出示例在实际列表中令人困惑,它有'1-a'(例如),但我只想知道'a'是否存在。你的optionList数组是['1-a','2-b','3-c','4-d','5-e','6-f',因此它不是预期的输出?我不知道你在问什么?是的,你的输出示例在实际列表中令人困惑,它有“1-a”(例如),但我只想在“a”是否存在的情况下进行验证。谢谢Sergey。。这对我有用。但它检查实际列表中的确切值。我想检查列表中是否包含该值。请更新此值。谢谢Sergey。。这对我有用。但它检查实际列表中的确切值。我想检查列表中是否包含该值。请更新此值
    this.verifyOptionsInDrpDwn = async function(){
      var optionList = await drpDwn.all(by.tagName('option')).getText();
      var expOptions=['a','b','c','d','e','f'];
      return optionList.length === expOptions.length 
        && optionList.every(elem => expOptions.includes(elem))
     }