javascript - Protractor browser.executeScript 抛出 'SyntaxError: missing ) after argument list' 异常

标签 javascript dom protractor domdocument

背景信息

我无法单击我当前正在自动化的 Angular Material 2 设计网站上的某些元素。因此,我必须实现使用 Protractor API 中提供的 JavaScriptExecutor 的解决方法。但是,当我想使用 Javascript 查询 dom 并单击元素时,我遇到了问题。

什么不起作用

  hardClickElement(by.css("input[placeholder='Search Accounts']"));

  function hardClickElement(by) {
    var locator = by.toString();
    if (locator.includes("css")) {
      console.log(`document.querySelector('${by.value}').click()`);
      browser.executeScript(`document.querySelector('${by.value}').click()`);
    }
  }

什么有效

hardClickElement(by.css(".mat-menu-content button"));

  function hardClickElement(by) {
    var locator = by.toString();
    if (locator.includes("css")) {
      console.log(`document.querySelector('${by.value}').click()`);
      browser.executeScript(`document.querySelector('${by.value}').click()`);
    }
  }

所以...

所以我的问题是为什么我会遇到异常

Failed: SyntaxError: missing ) after argument list

什么时候执行第一 block 代码?

最佳答案

您有这个模板字符串:

`document.querySelector('${by.value}').click()`

在将结果传递给 executeScript 之前使用 console.log 查看结果

您有 ' 字符来分隔作为属性值的字符串。

您提供的输入值:

input[placeholder='Search Accounts']

…还包含'字符。在用 ' 分隔的字符串内,它们需要转义。

关于javascript - Protractor browser.executeScript 抛出 'SyntaxError: missing ) after argument list' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554599/

相关文章:

javascript - 如何使 HTML5 Canvas 图案 fillstyle 随绘制对象一起移动?

javascript - Angular : A controller with this name is not registered

javascript - e2e 测试 Angular UI 网格的规范方法

javascript - 从 Protractor 中的页面对象获取元素

JavaScript DOM childNodes.length 也返回文本节点的数量

javascript - Protractor + Angular + requireJs

javascript数组对象分配给普通

javascript - JSON从EJS到JS中的JSON对象

java - 关于创建 XML 文件的问题

javascript - 获取父 <div> 的子 <div> 的值