如何在executeScript方法中用变量表示javascript代码?
我通过使用executeScript方法执行javascript代码来实现selenium脚本。其中,在传递变量时使用单(')和双引号(“)会出现问题 不工作:如何在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
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上有双引号”“。这是因为您试图用空格传递值…请尝试更新答案。”