nightwatchjs:使用while循环给出“ - 进程内存不足”

时间:2016-08-12 14:53:53

标签: javascript nightwatch.js

我在尝试:

while(browser.assert.elementPresent("div[school-addlimit='2']>button[disabled='disabled']")!=null){
            createSchoolPage
                .click_add_button();
        }

如果我在不使用条件的情况下使用for循环,它可以正常工作。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

browser.assert.elementPresent返回对browser对象的引用,因此您可以将命令链接为 browser.assert.elementPresent(".....") .click("......") .doAnotherAssertion("....") 因此,你的循环是不定式的

如果你想检查页面上是否有元素,如果是,那么点击它,就这样做:

var selector = "div[school-addlimit='2']>button[disabled='disabled']"; browser.element('css selector', selector, function(response) { if (response.status !== -1) { createSchoolPage.click_add_button(); } })

var selector = "div[school-addlimit='2']>button[disabled='disabled']"; browser.waitForElementVisible(selector, defaultMaximumWaitTime, false, function(result) { if (result.value) { createSchoolPage.click_add_button(); } }

更新

我看到element在DOM中有3种可能性,但它是not clickable
*按钮被其他元素徘徊 *按钮被禁用
*按钮在DOM中,但不可见

在第一种情况下,您可以使用https://developer.mozilla.org/en-US/docs/Web/API/Document/elementFromPoint检查按钮是否在顶部

在第二种情况下,您需要更新您的css选择器以查找element that is not disabled(例如https://stackoverflow.com/a/9207343/787828)(或查找任何元素,然后检查其属性)

在第三种情况下,使用browser.waitForElementVisible