我在尝试:
while(browser.assert.elementPresent("div[school-addlimit='2']>button[disabled='disabled']")!=null){
createSchoolPage
.click_add_button();
}
如果我在不使用条件的情况下使用for循环,它可以正常工作。
我在这里做错了什么?
答案 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