背景信息
我无法在我当前正在自动化的角材料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()`);
}
}
所以...
所以我的问题是为什么我会得到例外
失败:语法错误:缺少),位于参数列表后
何时执行第一段代码?
答案 0 :(得分:2)
您有以下模板字符串:
`document.querySelector('${by.value}').click()`
在将结果传递给console.log
之前,先用executeScript
查看结果。
您有'
个字符来分隔作为属性值的字符串。
您提供的输入值:
input[placeholder='Search Accounts']
…还包含'
个字符。在以'
分隔的字符串中,需要转义。
答案 1 :(得分:2)
这将解决问题:
hardClickElement(by.css('input[placeholder="Search Accounts"]'));
在单引号内使用双引号