【问题标题】:nightwatch failed to select element by its idnightwatch 无法通过其 id 选择元素
【发布时间】:2017-01-09 19:57:15
【问题描述】:

我的页面上有以下 HTML dom。我使用 ngithwatch 编写测试用例。

<td class="GPNWDJGHV" id="gwt-debug-MenuItem/mongo-true">Mongo Extension</td>

如果我使用下面的代码来选择 dom 的 id,它将找不到元素:

.waitForElementVisible('#gwt-debug-MenuItem/mongo-true', 10000)

但如果我使用类名,它将如下所示。

.waitForElementVisible('GPNWDJGHV', 10000)

唯一不同的是id包含一个字符'/'。这是问题夜班没有拿起它吗? id名称带特殊字符的使用方法是什么?

EDIT1

我尝试在 id 中添加“\”,如下所示:

.waitForElementVisible('#gwt-debug-MenuItem\/mongo-true', 10000)

还是不行。但是这个选择器在 css 中工作。不知道守夜人有什么不同。

【问题讨论】:

    标签: javascript selenium nightwatch.js


    【解决方案1】:

    这不是 Selenium 或 Nightwatch 的问题,而只是 HTML ID 的问题。 / 不是 ID 的有效字符。

    XPath 使用/ 从父节点中选择子节点: http://www.w3schools.com/XML/xml_xpath.asp

    w3schools 有一个非常简单的示例来测试:http://www.w3schools.com/cssref/tryit.asp?filename=trycss_sel_id

    编辑:您可能可以使用\/ 转义CSS 选择器中的斜线。 (注意:我只在 w3schools 演示中测试过(使用id="first/name")。)

    HTML:

    <td class="GPNWDJGHV" id="gwt-debug-MenuItem/mongo-true">Mongo Extension</td>
    

    JS:

    .waitForElementVisible('#gwt-debug-MenuItem\/mongo-true', 10000);
    

    【讨论】:

    • 我发现 id 包含 /(正斜杠)没有问题。我使用 Java 绑定对其进行了测试。
    • 我再次测试了 w3schools 演示:显然您可以使用转义的正斜杠。刚刚更新了答案。您的 Java 绑定示例如何处理正斜杠?
    • 我只是尝试在 id 上使用 \。它适用于 css 选择器,但不适用于 nightwath
    • 从设计的角度来看,我会尽量避免 HTML ID 中的正斜杠。尽管如此,如果您想更深入地了解,可能您想看看 nightwatch 如何在内部处理这些字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2020-08-21
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多