背景信息
我无法单击我当前正在自动化的 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/