Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用xpath和nightwatch.js单击动态文本_Javascript_Selenium_Xpath_Selenium Webdriver_Nightwatch.js - Fatal编程技术网

Javascript 使用xpath和nightwatch.js单击动态文本

Javascript 使用xpath和nightwatch.js单击动态文本,javascript,selenium,xpath,selenium-webdriver,nightwatch.js,Javascript,Selenium,Xpath,Selenium Webdriver,Nightwatch.js,我希望在我的应用程序中单击具有动态文本的元素。通常,要单击包含文本的元素,请执行以下操作: .useXpath().click("//*[contains(text(), 'some text')]") .useXpath().click("//*[contains(text(), "${name}")]") ^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: missing ) after argument list E

我希望在我的应用程序中单击具有动态文本的元素。通常,要单击包含文本的元素,请执行以下操作:

.useXpath().click("//*[contains(text(), 'some text')]")    
.useXpath().click("//*[contains(text(), "${name}")]")
                    ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: missing ) after argument list
ERROR: Unable to locate element: "'//*[contains(text(), '7ayhopt3ijhcwuo')]'" using: xpath
对于具有动态名称的测试,我尝试以下操作:

.useXpath().click("//*[contains(text(), "${name}")]")  
其中name是一个变量,其中包含新创建帐户的名称。但是,当我尝试运行测试时,我得到以下结果:

.useXpath().click("//*[contains(text(), 'some text')]")    
.useXpath().click("//*[contains(text(), "${name}")]")
                    ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: missing ) after argument list
ERROR: Unable to locate element: "'//*[contains(text(), '7ayhopt3ijhcwuo')]'" using: xpath
我错过什么了吗?我看不出我在哪里错过了这场比赛)。我也尝试过各种单引号/双引号等,但似乎无法让它工作

我还尝试使用如下所述的字符串连接:(),因此我的代码如下所示:

 var selector = "\'//*[contains(text(), \'" + name + "\')]\'";
.useXpath().click(selector)
.useXpath().click("//*[contains(text(), '7ayhopt3ijhcwuo')]") 
使用此方法运行测试时,我得到以下结果:

.useXpath().click("//*[contains(text(), 'some text')]")    
.useXpath().click("//*[contains(text(), "${name}")]")
                    ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: missing ) after argument list
ERROR: Unable to locate element: "'//*[contains(text(), '7ayhopt3ijhcwuo')]'" using: xpath
“7ayhopt3ijhcwuo”是点击的正确文本,但它似乎找不到它。有趣的是,如果我硬编码如下值:

 var selector = "\'//*[contains(text(), \'" + name + "\')]\'";
.useXpath().click(selector)
.useXpath().click("//*[contains(text(), '7ayhopt3ijhcwuo')]") 
nightwatch可以毫无问题地点击文本


任何关于我在哪种方法上出了问题的帮助都会很好!我正在使用节点v7.8.0

或者在字符串周围使用回勾字符来嵌入变量:

.useXpath().click(`//*[contains(text(), "${name}")]`)
或者使用单引号和双引号的组合:

.useXpath().click('//*[contains(text(), "' + name + '")]')
应该是

"//*[contains(text(), '" + name + "')]"

不需要在双引号字符串中转义单引号

谢谢弗洛伦特B。这就成功了,两种方法对我都有效。谢谢马基!接受弗洛伦特的回答,因为他们比你早2分钟!