Protractor browser.driver.findElement与browser.findElement

Protractor browser.driver.findElement与browser.findElement,protractor,Protractor,对于非角度应用程序,我们是否可以使用browser.findElement()方法,而不是使用browser.driver.findElement()方法?您只需要使用browser.driver来访问webdriver实例即可: browser.driver.findElement(by.css('[data-ptor="submit-btn"]')); 在您的config.js中,它甚至可以更优雅: onPrepare: function() { global.dvr = brows

对于非角度应用程序,我们是否可以使用
browser.findElement()
方法,而不是使用
browser.driver.findElement()
方法?

您只需要使用browser.driver来访问webdriver实例即可:

browser.driver.findElement(by.css('[data-ptor="submit-btn"]'));
在您的config.js中,它甚至可以更优雅:

onPrepare: function() {
   global.dvr = browser.driver;
}
在您的测试中:

dvr.findElement(by.css('[data-ptor="submit-btn"]'));
量角器等待Angular完成其工作,但您可以告诉它不要对非Angular应用程序那么聪明:

beforeEach(function() {
   return browser.ignoreSynchronization = true;
});

我猜你的问题是针对
browser.driver.findElement
vs
browser.element

browser.driver.findElement
方法返回
webElement
,它是由
webDriver
(Selenium)提供的 当您调用
browser.driver.findElement(locator)
时,WebDriver会立即向浏览器发送一个命令,要求浏览器定位元素。这些
WebElement
提供了可用于与浏览器交互的操作方法

browser.element
方法返回
ElementFinder
对象,该对象由
量角器提供

与调用
browser.element(locator)
时的
WebElement
不同,
ElementFinders
只存储定位器信息,但在调用操作方法之前不会要求浏览器查找元素。
这对于创建页面对象非常有用,因为我们可以重用安装程序中定义的内容(在加载页面之前)。
所有
WebElement
操作都是包装的,并且可以在
ElementFinder
上使用,此外还有由量角器提供的一些其他辅助方法

此外,您还可以始终使用
元素(定位器).getWebElement()
访问底层
WebElement
,但您不需要这样做,因为您也可以使用
浏览器.element(定位器)
方法进行非角度应用