微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 XPath 或 CSS 选择器在 Nightwatch 测试中查找子字符串

如何解决如何使用 XPath 或 CSS 选择器在 Nightwatch 测试中查找子字符串

我必须对以下元素进行 Nightwatch 测试:

<textarea id="xxxxxxxx-971-condition" 
   type="text" placeholder="Enter condition" 
   required="required" aria-required="true" class="form-control">

这基本上很简单,除了我发现“-971-”或多或少是一个随机的 3 位数字,因为 textarea 可以在页面上多次出现。我不能简单地寻找“starts-with('xxxxxxxx-')”,因为还有很多其他的 共享该前缀的表单字段。出于同样的原因,我不能或多或少地使用“ends-with('-condition')”。我需要结合 他们俩。但是如何?这是我尝试过的,首先从简单的案例开始:

browser
  .useXpath() // every selector Now must be xpath
  .assert.visible("//textarea[ends-with(@id,'-condition')]") FAILS!
  .assert.visible("//textarea[@id[ends-with(text(),'-condition')]]") FAILS!
  .assert.visible("//textarea[@id=[ends-with(text(),'-condition')]]") FAILS!
  .assert.visible("//textarea[contains(@id,starts-with(text(),'xxxxxxxx-') and ends-with(text(),'-condition'))]") FAILS!
  .assert.visible("//textarea[contains(@id,'xxxxxxxx-'))]") FAILS!
  .assert.visible("//textarea[contains(@id,ends-with(text(),'-condition'))]") FAILS!
  .assert.visible("//id[contains(.,'-condition'))]") FAILS!
  .assert.visible("//textarea[@id[contains(.,'-condition'))]]") FAILS!
  .assert.visible("//textarea[@id[contains(.,'xxxxxxxx-'))]]") FAILS!

  .useCss() // we're back to CSS Now
  .assert.visible("textarea[id^='xxxxxxxx-']")  <==== THIS WORKS!!!!
  .assert.visible("textarea[id$='-condition']")  <==== THIS WORKS!!!!
  .assert.visible("textarea[id^='xxxxxxxx-' and id$='-condition']") <==== together this does NOT work

由于测试在进入本节之前运行了很长时间,我有很多时间去谷歌搜索。你也会 请注意,我使用 CSS 选择器的运气要好得多(但无法将它们组合成我需要的效果)。

有人有什么建议吗?

解决方法

textarea[id^='xxxxxxxx-' and id$='-condition'] 不起作用的原因是因为您暗示该元素包含 2 个不同的 ID 属性。

我相信这应该有效:

textarea[id^='xxxxxxxx-'][id$='-condition']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。