【问题标题】:How would you compare the value of element.getAttribute() to a String in protractor?您如何将 element.getAttribute() 的值与量角器中的字符串进行比较?
【发布时间】: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") 的结果,然后将结果与我期望的字符串进行比较,而不是在方法中执行所有操作并期望这是真的。

【问题讨论】:

    标签: typescript selenium selenium-webdriver automated-tests protractor


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      调试时保持一致。

      1. .getAttribute("value") 回报承诺
      2. Promise 是一个对象
      3. Object.toString() 返回"[object Object]"
      4. 最后你将"[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 这样的东西

      【讨论】:

        猜你喜欢
        • 2015-01-22
        • 1970-01-01
        • 2016-03-03
        • 2021-03-29
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        相关资源
        最近更新 更多