javascript - Nightwatch 无法通过 css id 或类选择器定位元素

标签 javascript css-selectors nightwatch.js

我们正在使用 Nightwatch 来自动化我们的一些 UI 测试。目前的一些测试相当脆弱,主要与奇怪的 CSS 选择器有关,我正在努力简化它们。但是,我希望可以使用的一些简单的 CSS 选择器,嗯,不是。

我试图找到这个深度嵌套的 <a>标签:

<a class="btn btn-quote btn-crm" href="/crm/" id="btnEndSession" style="display: inline-block;">End Session</a>

这里有一些有效的代码:

.waitForElementVisible('#quoteSummary > div > div > div > div > a:nth-child(2)', 1000)
.click('#quoteSummary > div > div > div > div > a:nth-child(2)')

但这是一个讨厌的 CSS 选择器,我想用这个替换它:

.waitForElementVisible('#btnEndSession', 1000)
.click('#btnEndSession')

作为 <a>我感兴趣的元素实际上具有 btnEndSession 的 ID ,这似乎应该有效。但事实并非如此:nightwatch 出错,其中一条消息“等待元素 <#btnEndSession> 可见 10000 毫秒时超时”消息。

我也试过:

.waitForElementVisible('.btn-crm', 10000)
.waitForElementVisible('a[id=btnEndSession]', 10000)
.waitForElementVisible('a#btnEndSession', 10000)

但是那些也不起作用。知道为什么这些更简单的选择器没有选择元素吗?

编辑:

好吧,奇怪的是,这有效:

.waitForElementVisible('a.btn-crm', 1000)

然而,在同一个测试中,寻找这个元素:

<select class="custom-form-control crm-result-visit select-hidden" id="crm-result-visit" name="crmResultVisit">
    <option value=" ">Select</option>
    <option value="Not Home">Not Home</option>
</select>

所有这些不同的选择器都找不到元素:

.waitForElementVisible('select.crm-result-visit', 10000)
.waitForElementVisible('select#crm-result-visit', 10000)
.waitForElementVisible('#crm-result-visit', 10000)
.waitForElementVisible('.crm-result-visit', 10000)
.waitForElementVisible('select[id=crm-result-visit]', 10000)

我有点不情愿地得出这样的结论:nightwatch 中的 CSS 选择器支持有很多问题。

FWIW,我们使用的是 nightwatch 的 0.6.7 版本。

最佳答案

不管怎样,我们最终放弃了 Nightwatch,直接转向 Selenium(在我们的例子中是 C#),它似乎没有这些问题,并且可以更好地集成到我们环境的其余部分。不是一个很好的答案,但我不再有这个问题了:-)。

关于javascript - Nightwatch 无法通过 css id 或类选择器定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30059337/

相关文章:

javascript - Angularjs $http 在第一次调用后未返回 ng-click 调用

javascript - 在大型 DOM 中使用 document.querySelector 更快地搜索元素

css - 如何让HTML5标记元素在IE中正常显示

javascript - 在 Nightwatch 中运行 "traditional"单元测试

javascript - Nightwatch.js - 使用变量供以后在另一个函数中使用将不起作用

javascript - 尝试调用数组中的对象,返回未定义

javascript - 从纬度经度获取国家

javascript - JSON 成功时用字符串回复函数

javascript - 如何在多个预先声明的 jQuery 对象上绑定(bind) jQuery 事件

selenium - 如何针对 Safari 运行 Nightwatch 测试?