首页 > 解决方案 > 使用 javascript 在元素断言中引用变量

问题描述

作为我的 nightwatchjs 测试脚本的一部分,我有以下代码

var dealerName = sellerWebsiteAddressQueryPage.Website.filter(val => typeof val === 'string')

我想做的就是将其用作断言的一部分,如下所示

.assert.elementPresent('li.contact-seller__action a[href*="dealerName"]');

但我似乎找不到在此断言中包含变量dealerName的正确方法。

任何帮助将不胜感激。

标签: javascriptvariables

解决方案


我不太确定你的两个表达式是如何组合在一起的,所以在这里我假设dealerName 来自你正在过滤的数组。使用querySelectorArray.filter模板文字来获得dealerNames满足您条件的。

const sellerWebsiteAddressQueryPage = {
  Website: [1, "Alice", undefined, "Bob"]
};
const dealerNames = sellerWebsiteAddressQueryPage.Website.filter(
  val => typeof val === "string"
).filter(dealerName =>
  document.querySelector(`li.contact-seller__action a[href*="${dealerName}"]`)
);

console.log(dealerNames);
<ul>
  <li class="contact-seller__action">
    <a href="site.com/dealers/Bob">Bob</a>
  </li>
<ul>


推荐阅读