2

我正在使用 Nightwatch.js 来测试一个网站。我希望 Nightwatch.js 单击网站上的选项卡,但单击不起作用。至少没有影响...

要单击的元素的 HTML 代码如下所示。

<div>
    <ul id="tabs">
        <li id="tiresTab">
            <a href="#tires">Word</a>
        </li>
    </ul>
</div>

在 Nightwatch.js 中,我写道:

.waitForElementVisible('li[id="tiresTab"]', 10000)
.click('li[id="tiresTab"]')

但什么也没有发生。选项卡未打开。Nightwatch 中的下一个命令失败了。这意味着 Nightwatch 正在执行单击,但选项卡未打开。但是,当我手动单击它时,我可以打开它。这里可能是什么问题?

4

3 回答 3

2

您可以做一件事,尝试以下代码并运行。

.waitForElementVisible('#tabs li#tiresTab a', 1000);
.click('#tabs li#tiresTab a', function (clickStatus) {
  console.log(clickStatus.status);
});

如果上面的代码不起作用,请在点击回调中再做一件事,再次执行点击,如下所示。

.waitForElementVisible('#tabs li#tiresTab a', 1000);
.click('#tabs li#tiresTab a', function (clickStatus) {
   browser.click('#tabs li#tiresTab a');
   console.log(clickStatus.status);
});

它会工作,快乐的测试!:)

于 2016-04-14T06:45:42.670 回答
1
<div>
    <ul id="tabs">
        <li id="tiresTab">
            <a href="#tires" name="tires">Word</a>
        </li>
    </ul>
</div>

在 Nightwatch.js 你写:

.waitForElementVisible('li[id="tiresTab"]', 10000)
.click('a[name="tires"]')

我认为这会奏效。

于 2015-07-02T11:58:40.123 回答
1

可能您正在尝试单击用户不可见的元素。例如,您单击一个下拉选项,然后 -

  1. 等待下拉菜单可见
  2. 单击下拉菜单,现在在回调中执行以下操作:
    1. 等待下拉选项可见(不要提及完整的 CSS 路径!)
    2. 现在单击下拉选项

示例代码在这里 -

    .waitForElementVisible('.someClass > .btn-group:nth-child(3)',6000)
    .click('.someClass > .btn-group:nth-child(3)',function(){
        this.waitForElementVisible('#idOfOption',10000);
        this.click('#idOfOption')
    })
于 2016-06-01T15:05:53.420 回答