使用 xpath 和 nightwatch.js 单击动态文本
clicking dynamic text using xpath and nightwatch.js
我希望在我的应用程序中单击带有动态文本的元素。通常要单击带有文本的元素,我会执行以下操作:
.useXpath().click("//*[contains(text(), 'some text')]")
对于具有动态名称的测试,我尝试以下操作:
.useXpath().click("//*[contains(text(), "${name}")]")
其中 name 是一个变量,其中包含新创建的帐户的名称。但是,当我尝试 运行 我的测试时,我得到以下信息:
.useXpath().click("//*[contains(text(), "${name}")]")
^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: missing ) after argument list
我错过了什么吗?我看不出我错过了 ) 的地方。我也尝试了各种 single/double 引号等,但似乎无法正常工作。
我也曾尝试使用此处概述的字符串连接:([=17=]),因此我的代码如下所示:
var selector = "\'//*[contains(text(), \'" + name + "\')]\'";
.useXpath().click(selector)
当我 运行 使用此方法进行测试时,我得到以下结果:
ERROR: Unable to locate element: "'//*[contains(text(), '7ayhopt3ijhcwuo')]'" using: xpath
“7ayhopt3ijhcwuo”是可以点击的正确文字,但是好像没有找到。有趣的是,如果我像这样硬编码值:
.useXpath().click("//*[contains(text(), '7ayhopt3ijhcwuo')]")
nightwatch 可以毫无问题地点击文本。
任何关于我在这两种方法中出错的地方的帮助都会很棒!我正在使用节点 v7.8.0
在字符串周围使用反引号字符来嵌入变量:
.useXpath().click(`//*[contains(text(), "${name}")]`)
或者使用单双引号组合:
.useXpath().click('//*[contains(text(), "' + name + '")]')
"\'//*[contains(text(), \'" + name + "\')]\'"
应该是
"//*[contains(text(), '" + name + "')]"
您不需要对双引号字符串中的单引号进行转义。
我希望在我的应用程序中单击带有动态文本的元素。通常要单击带有文本的元素,我会执行以下操作:
.useXpath().click("//*[contains(text(), 'some text')]")
对于具有动态名称的测试,我尝试以下操作:
.useXpath().click("//*[contains(text(), "${name}")]")
其中 name 是一个变量,其中包含新创建的帐户的名称。但是,当我尝试 运行 我的测试时,我得到以下信息:
.useXpath().click("//*[contains(text(), "${name}")]")
^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: missing ) after argument list
我错过了什么吗?我看不出我错过了 ) 的地方。我也尝试了各种 single/double 引号等,但似乎无法正常工作。
我也曾尝试使用此处概述的字符串连接:([=17=]),因此我的代码如下所示:
var selector = "\'//*[contains(text(), \'" + name + "\')]\'";
.useXpath().click(selector)
当我 运行 使用此方法进行测试时,我得到以下结果:
ERROR: Unable to locate element: "'//*[contains(text(), '7ayhopt3ijhcwuo')]'" using: xpath
“7ayhopt3ijhcwuo”是可以点击的正确文字,但是好像没有找到。有趣的是,如果我像这样硬编码值:
.useXpath().click("//*[contains(text(), '7ayhopt3ijhcwuo')]")
nightwatch 可以毫无问题地点击文本。
任何关于我在这两种方法中出错的地方的帮助都会很棒!我正在使用节点 v7.8.0
在字符串周围使用反引号字符来嵌入变量:
.useXpath().click(`//*[contains(text(), "${name}")]`)
或者使用单双引号组合:
.useXpath().click('//*[contains(text(), "' + name + '")]')
"\'//*[contains(text(), \'" + name + "\')]\'"
应该是
"//*[contains(text(), '" + name + "')]"
您不需要对双引号字符串中的单引号进行转义。