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

nightwatchjs: using while loop gives "- process out of memory"

我正在尝试:

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

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

我做错了什么?

browser.assert.elementPresent returns 对 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 但它是 not clickable 时,我看到 3 种可能性:
* 按钮被其他元素悬停
* 按钮被禁用
* 按钮在 DOM 但不可见

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

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

第三种情况,使用browser.waitForElementVisible