问题
- Why we need
element(...).getWebElement()
overelement(...)
when both works exactly the same - Why two APIs for the same functionality
回答1:
Protractor
is a convenient wrapper around WebDriverJS
- javascript selenium bindings.
element(...)
would result into an ElementFinder instance introduced in Protractor- element(...).getWebElement() would result into a
WebElement
instance fromWebDriverJS
. Basically, this gives you access to the pure "bare-metal"WebElement
.
The most common use-case for using getWebElement()
is when you need to pass an ElementFinder
as a script argument - currently you have to call getWebElement()
for this to work:
var elm = element(by.id("myid"));
browser.executeScript("arguments[0].click()", elm.getWebElement());
There is an open feature-request to be able to pass ElementFinder directly:
browser.executeScript("arguments[0].click()", elm); // not gonna work as of now
来源:https://stackoverflow.com/questions/39026997/difference-between-element-and-element-getwebelement-in-protractor