【问题标题】:Cannot locate the element include "anchor" using Nightwatch (Selenium2)使用 Nightwatch (Selenium2) 找不到包含“锚”的元素
【发布时间】:2015-05-18 17:25:14
【问题描述】:

如标题所述,我使用 Nightwatch 进行一些浏览器操作测试。但是,每当我需要在“锚”中使用 id 定位元素时,总是会发生故障。 例如:

<span class="recaptcha-checkbox goog-inline-block recaptcha-checkbox-unchecked rc-anchor-checkbox" role="checkbox" aria-checked="false" id="recaptcha-anchor" tabindex="0" dir="ltr" aria-labelledby="recaptcha-anchor-label"><div class="recaptcha-checkbox-border" role="presentation"></div><div class="recaptcha-checkbox-borderAnimation" role="presentation"></div><div class="recaptcha-checkbox-spinner" role="presentation"></div><div class="recaptcha-checkbox-spinnerAnimation" role="presentation"></div><div class="recaptcha-checkbox-checkmark" role="presentation"></div></span>

这是我要查找的元素,所以

.click("#recaptcha-anchor") 被使用了,但这不起作用。

另一个例子是:

<a class="jstree-anchor" href="#" tabindex="-1" id="6_anchor"><i class="jstree-icon jstree-checkbox" role="presentation"></i><i class="jstree-icon jstree-themeicon ace-icon fa fa-circle-thin green jstree-themeicon-custom" role="presentation"></i>Test</a>

同样的事情刚刚发生。

【问题讨论】:

  • 所以我想基本上你想调用那个元素的编程点击,对吧?
  • 你能显示其他 nightwatch.js 代码(点击 a 元素)吗?您也可以在“#”之前加上 span,(span#recaptcha-anchor) - 最后,如果您可以控制 HTML,我不会在 内嵌套 div 标签(块元素),它们是内联元素。
  • 最后我发现第一个例子是一个谷歌recaptcha组件。所以也许不可见是属性。
  • 但是其他组件我仍然无法弄清楚为什么夜班永远看不到它。我使用 chrome 来获取 css,它给了我“#\36 _anchor”。那个“\3”是什么意思?

标签: javascript html css selenium-webdriver nightwatch.js


【解决方案1】:

你的选择器看起来不错, 但在调用之前单击检查元素的存在:

'Your Test' : function (browser) {
    browser
        .waitForElementPresent('#recaptcha-anchor', 1000)
        .click('#recaptcha-anchor')
        .end()
    ;
}

如果你使用旧版本的 NightWatch,也许你应该使用这个功能来强制 CSS 选择器:

browser.useCss().click('#recaptcha-anchor')

【讨论】:

  • 是的,我以前尝试过这种方式。但是该组件也无法被捕获。
  • 好的...你能分享你的测试用例的完整源代码吗?
  • 最后我意识到recaptcha试图做的是阻止机器人,比如我的测试用例进入网站。还是要谢谢你的帮助!但是,我还有另一个我无法弄清楚的测试用例。下面是我的测试用例代码和网站部分的链接。
  • &lt;a class="jstree-anchor" href="#" tabindex="-1" id="7278_anchor"&gt;&lt;i class="jstree-icon jstree-checkbox" role="presentation"&gt;&lt;/i&gt;&lt;i class="jstree-icon jstree-themeicon ace-icon fa fa-circle-thin green jstree-themeicon-custom" role="presentation"&gt;&lt;/i&gt;test&lt;/a&gt; 使用此代码 .click("#\37 278_anchor")
【解决方案2】:

我看不到第一个给定代码中的锚标记。 但是对于您在评论中给出的代码,我刚刚注意到,您的 CSS id 以数字开头,根据约定 ID 不应以数字开头,这可能是 Nightwatch 也不处理以数字开头的 ID 的原因号码,尝试从ID中删除号码,然后尝试点击

&lt;a class="jstree-anchor" href="#" tabindex="-1" id="anchor"&gt;&lt;i class="jstree-icon jstree-checkbox" role="presentation"&gt;&lt;/i&gt;&lt;i class="jstree-icon jstree-themeicon ace-icon fa fa-circle-thin green jstree-themeicon-custom" role="presentation"&gt;&lt;/i&gt;test&lt;/a&gt;
.click("#anchor")

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多