Protractor browser.executeScript throws Failed: javascript error: missing ) after argument list
Protractor browser.executeScript throws Failed: javascript error: missing ) after argument list
当运行下面的量角器脚本
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;
我收到 失败:javascript 错误:缺少 ) 参数列表 错误。请帮我解决这个问题。
要创建多行字符串常量,您应该将字符串括在反引号中,而不是在字符串中使用反斜杠。有关差异,请参见下面的代码片段。 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
之前有一个换行符时,您通常不需要分号。
我不是很确定,为什么你会收到有关缺少 )
的错误,也许你有一个不同的脚本也失败了?。实际上上面脚本的错误应该是
Uncaught SyntaxError: Unexpected token 'var'
尝试
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;
`)
当运行下面的量角器脚本
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;
我收到 失败:javascript 错误:缺少 ) 参数列表 错误。请帮我解决这个问题。
要创建多行字符串常量,您应该将字符串括在反引号中,而不是在字符串中使用反斜杠。有关差异,请参见下面的代码片段。 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
之前有一个换行符时,您通常不需要分号。
我不是很确定,为什么你会收到有关缺少 )
的错误,也许你有一个不同的脚本也失败了?。实际上上面脚本的错误应该是
Uncaught SyntaxError: Unexpected token 'var'
尝试
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;
`)