您如何将 element.getAttribute() 的值与量角器中的字符串进行比较?

Posted

技术标签:

【中文标题】您如何将 element.getAttribute() 的值与量角器中的字符串进行比较?【英文标题】:How would you compare the value of element.getAttribute() to a String in protractor? 【发布时间】:2021-10-29 07:26:56 【问题描述】:

使用量角器和打字稿,我希望能够将element.getAttribute("value") 的结果值与字符串进行比较,以验证文本框中的文本是否已成功保存。 getText() 在这种情况下不起作用,因为输入到字段(可编辑文本框)中的文本没有保存为元素的文本属性。这是我的方法:

  async getName(option) 
    if(option == this.name.getAttribute("value").toString())
      return true;
    
    else
      return false;
    
  

这总是返回 false,即使传递了正确的值。但是我知道name.getAttribute("value") 正在返回正确的值,因为当我将结果输出到控制台时,它显示的是正确的值。

当我从上述方法中将option 输入为string 时,会出现以下错误:This condition will always return 'false' since the types 'String' and '() => string' have no overlap.ts(2367)。我假设这与 protracor 返回承诺有关,但我不确定将文本与预期值进行比较的任何其他方式。

编辑:我还应该注意,我也以另一种方式尝试过,该方法只返回 name.getAttribute("value") 的结果,然后将结果与我期望的字符串进行比较,而不是在方法中执行所有操作并期望这是真的。

【问题讨论】:

【参考方案1】:

getAttribute 将返回一个承诺,因此它应该被解析为捕获价值,我们应该能够使用下面的方法来验证这一点

expect(this.name.getAttribute("value")).toEqual('bar');

如果你想获得价值并将其分配给另一个你可以使用的变量

this.name.getAttribute("value").then(function (value) 
    foo = vale
);

【讨论】:

【参考方案2】:

调试时保持一致。

    .getAttribute("value") 回报承诺 Promise 是一个对象 Object.toString() 返回"[object Object]" 最后你将"[object Object]""result"进行比较,false

要解决此问题,请不要忘记解决 Promise。不要试图将所有内容放在一行中,这会使您的代码不可读且不可调试。顺便说一句,.getAttribute("value") 无论如何都会返回 String,无需调用toString()。并且不要使用==,始终使用===(我在从事自动化工作 4 年后得出的结论)

使用这个

async getName(option) 
  let value = await this.name.getAttribute("value")
  if(option === value)
    return true;
   else 
    return false;
  

// or even better
async getName(option) 
  let value = await this.name.getAttribute("value")
  return option === value

但是,您的代码仍然令人困惑。为什么?因为你的方法名为get name,但是返回的值根本不是名字,所以返回的是boolean。所以最好是明确的,例如nameEqualsValue 这样的东西

【讨论】:

以上是关于您如何将 element.getAttribute() 的值与量角器中的字符串进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

元素的属性相关操作element.getAttribute('xxx'),element.setAttribute('xxx','xxx'),eleme

使用 Selenium 修改 innerHTML

js方法不能与jquery方法同时用

WebAPI(part6)--自定义属性操作

第三章(jQuery中的DOM操作)

[JS DOM&BOM]自定义属性的操作