1

运行下面的量角器脚本时

let resultantArr = [];

resultantArr = await browser.executeScript("var elements = document.querySelectorAll('ul[class=\'wbs-droplist-container\'][id*=\'droplist\'] li[class=\'wbs-droplist-item\'][id*=\'droplistitem\']') \
var arr = []; \
for (var i = 0; i < elements.length; i++) { \
  arr.push(elements[i].innerText); \
  } \
return arr;")

return resultantArr;

在参数列表错误后出现 Failed: javascript error: missing )。请帮我解决这个问题。

4

2 回答 2

1

尝试

return await browser.executeScript(`
  var elements = document.querySelectorAll("ul[class='wbs-droplist-container'][id*='droplist'] li[class='wbs-droplist-item'][id*='droplistitem']");
  var arr = [];
  for (var i = 0; i < elements.length; i++) {
    arr.push(elements[i].innerText);
  }
  return arr;
`)
于 2021-07-15T14:12:58.973 回答
0

要创建多行字符串常量,您应该将字符串括在反引号中,并且不要在字符串中使用反斜杠。有关差异,请参见下面的代码片段。s1将不包含换行符,但s2会。

const s1 = "foo \
bar"

const s2 = `foo
bar`

console.log(s1);
console.log(s2);

因此,当应用于您的代码片段时,您实际上是在创建如下脚本

var script = "var elements = document.querySelectorAll('...') \
var arr = []; \
for (var i = 0; i < elements.length; i++) { \
  arr.push(elements[i].innerText); \
  } \
return arr;"

console.log(script);

这是无效的,因为您有以下内容(请注意第二个之前缺少的分号var

var elements = document.querySelector(...)   var arr = [];

而下面的代码片段产生一个有效的脚本

var script = `var elements = document.querySelectorAll('...')
var arr = [];
for (var i = 0; i < elements.length; i++) {
  arr.push(elements[i].innerText);
}
return arr;`

console.log(script);

因为,当你在下一个之前有一个换行符时,var你通常不需要分号。

我不太确定,为什么你会收到一个关于 missing 的错误),也许你有一个不同的脚本也失败了?实际上,上述脚本的错误应该是

未捕获的 SyntaxError:意外的标记 'var'

于 2021-07-15T14:07:26.373 回答