量角器browser.executeScript在参数列表后引发'SyntaxError:missing)异常

时间:2018-11-30 09:23:10

标签: javascript dom protractor domdocument

背景信息

我无法在我当前正在自动化的角材料2设计网站上单击某些元素。结果,我必须实现使用量角器API中提供的JavaScriptExecutor的变通方法。但是,当我要查询dom并使用Javascript单击元素时遇到问题。

什么不起作用

  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()`);
    }
  }

所以...

所以我的问题是为什么我会得到例外

  

失败:语法错误:缺少),位于参数列表后

何时执行第一段代码?

2 个答案:

答案 0 :(得分:2)

您有以下模板字符串:

`document.querySelector('${by.value}').click()`
在将结果传递给console.log之前,先用executeScript

查看结果

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

您提供的输入值:

input[placeholder='Search Accounts']

…还包含'个字符。在以'分隔的字符串中,需要转义。

答案 1 :(得分:2)

这将解决问题:

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

在单引号内使用双引号