如何在executeScript方法中用变量表示javascript代码?

如何在executeScript方法中用变量表示javascript代码?,javascript,selenium,dom,selenium-webdriver,Javascript,Selenium,Dom,Selenium Webdriver,我通过使用executeScript方法执行javascript代码来实现selenium脚本。其中,在传递变量时使用单(')和双引号(“)会出现问题 不工作: js.executeScript("return document.querySelector('input[value=\" '"+group_name+"' \"]').value;").toString(); 使用静态值: js.executeScript("return document.querySelector('inpu

我通过使用executeScript方法执行javascript代码来实现selenium脚本。其中,在传递变量时使用单(')和双引号(“)会出现问题

不工作:

js.executeScript("return document.querySelector('input[value=\" '"+group_name+"' \"]').value;").toString();
使用静态值:

js.executeScript("return document.querySelector('input[value=\" DemoTest \"]').value;").toString();
这里
('input[value=\'“+group\u name+“\'”)
group\u name变量包含在Java变量引号中

所以从技术上讲,它的3个引号需要通过
1.在返回语句“”之前
2.在查询选择器“”上
3.将变量值传递给querySelector“”

请注意:DOM仅在通过带有内部字符串2和3的不同引号时才接受

这里我从DOM中得到SyntaxError:Its在参数列表后显示
SyntaxError:missing

所以,我如何以DOM以所需语法接受变量的方式传递变量。

尝试使用以下代码:

js.executeScript("return document.querySelector('input[value=\"' + arguments[0] + '\"]').value;", group_name).toString();
请尝试使用以下代码:

js.executeScript("return document.querySelector('input[value=\"' + arguments[0] + '\"]').value;", group_name).toString();


此处的
值=\”“+”组名+“”\“
太多了,不是吗?可能是类型转换问题。如果看到动态代码,则在变量值之前使用单引号,而不是在静态值中显示。可能您可以尝试通过更改单引号使用selenium,您可以利用`
js.executeScript(`return${group\u name}`)
--至少在node.js中使用它时是这样。如果你在Java中,我不确定。@Andersson“而且你还需要对这些引号做些什么”这就是重点…为什么不简单地调用
driver.findelelement(by.css('input[value='+JSON.stringify(group_name)+']')).getAttribute('value')
?这将更容易维护,如果元素丢失,您将得到一个显式错误。此处的
值=\“'”+group\u name+“\”
太多了,不是吗?可能是类型转换问题。如果看到动态代码,则在变量值之前使用单引号,而不是在静态值中显示。可能您可以尝试通过更改单引号使用selenium,您可以利用`
js.executeScript(`return${group\u name}`)
--至少在node.js中使用它时是这样。如果你在Java中,我不确定。@Andersson“而且你还需要对这些引号做些什么”这就是重点…为什么不简单地调用
driver.findelelement(by.css('input[value='+JSON.stringify(group_name)+']')).getAttribute('value')
?这将更易于维护,如果缺少元素,则会出现显式错误。您需要删除
+
参数[0]旁边的
和空格,否?e、 g.
[value='arguments[0]]
。否。JavaScript中的字符串连接的作用类似于
“String”+stringVariable+“String”
。。。或者你是说别的什么?是的,你是对的。。。我从字符串的开头开始考虑字符串concat with
”,但它是字符串concat with
,用于JS。我的坏…@Andersson它不工作,它的值与其他选项一样,它说“无效元素状态:无法对“文档”执行“querySelector”:“输入[value=AutoTest Group]'不是有效的选择器。“这意味着DOM仍然需要变量value.Yep上的双引号”“。这是因为您正在尝试用空格传递值…尝试更新的答案您需要删除
+
s和
参数[0]
旁边的空格,否?例如
[value='arguments[0]]]
。否。JavaScript中的字符串串联与
字符串一样有效。”“+stringVariable+”字符串“
。。。或者你是说别的什么?是的,你是对的。。。我从字符串的开头开始考虑字符串concat with
”,但它是字符串concat with
,用于JS。我的坏…@Andersson它不工作,它的值与其他选项一样,它说“无效元素状态:无法对“文档”执行“querySelector”:“输入[value=AutoTest Group]'不是有效的选择器。“这意味着DOM仍然希望变量value.Yep上有双引号”“。这是因为您试图用空格传递值…请尝试更新答案。”