“More than one element found for locator” warning

2019-01-25 02:10发布

In one of my tests, I'm locating an element using a CSS selector:

element(by.css("ul.nav button"))

There is more than one element matching the query, but, since I need only the first one, I'm okay with the selector.

The problem is, protractor throws a warning:

WARNING - more than one element found for locator By.cssSelector("ul.nav button") - the first result will be used

Is it possible to suppress the warning? In other words, how can I let protractor know that I'm aware of the problem and don't want the warning to be shown anymore?


Using protractor development version (installed directly from the master branch).

3条回答
可以哭但决不认输i
2楼-- · 2019-01-25 02:49

Less code:

$$("ul.nav button").first()
查看更多
SAY GOODBYE
3楼-- · 2019-01-25 02:51

Try this instead:

element.all(by.css("ul.nav button")).first()

Basically, this tells Protractor that you already know there's more than one element, and you just want the first one (like you said in your question).

查看更多
Animai°情兽
4楼-- · 2019-01-25 03:07

The warning is there for a reason. You've tied your tests too closely to your data. The selector is too general & you should be more specific. Either by saying element(by.css("ul.nav button:nth-child(1)")) or scoping your search differently. Protractor tests aren't supposed to be testing style or dom, they're supposed to be testing business logic.

查看更多
登录 后发表回答