量角器 browser.executeScript 在参数列表后抛出 Failed: javascript error: missing )
Posted
技术标签:
【中文标题】量角器 browser.executeScript 在参数列表后抛出 Failed: javascript error: missing )【英文标题】:Protractor browser.executeScript throws Failed: javascript error: missing ) after argument list 【发布时间】:2021-09-24 10:21:38 【问题描述】:当运行下面的量角器脚本时
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 ) after argument list 错误。请帮我解决这个问题。
【问题讨论】:
按照说明尝试使用`:developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/…还有\符号怎么办? @ikiK 反斜杠\
可以在下一行继续字符串,而实际上字符串中没有换行符。当您使用反引号 `
将一个字符串跨越多行时,其中会有一个实际的换行符。
@derpirscher 有趣,谢谢,给我的消息。
【参考方案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;
`)
【讨论】:
【参考方案2】:要创建多行字符串常量,您应该将字符串括在反引号中,并且不要在字符串中使用反斜杠。有关差异,请参见下面的代码 sn-p。 s1
将不包含换行符,但 s2
将。
const s1 = "foo \
bar"
const s2 = `foo
bar`
console.log(s1);
console.log(s2);
因此,当应用于您的代码 sn-p 时,您实际上是在创建如下脚本
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 = [];
而下面的 sn-p 生成一个有效的脚本
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
之前有换行符时,您通常不需要分号。
我不太确定,为什么您会收到关于缺少 )
的错误,也许您有一个不同的脚本也失败了?实际上,上述脚本的错误应该是
Uncaught SyntaxError: Unexpected token 'var'
【讨论】:
以上是关于量角器 browser.executeScript 在参数列表后抛出 Failed: javascript error: missing )的主要内容,如果未能解决你的问题,请参考以下文章