browser.driver.findElement VS browser.findElement

时间:2017-08-08 19:07:29

标签: protractor

我们可以将browser.findElement()方法用于非Angular应用程序,而不是使用browser.driver.findElement()方法吗?

3 个答案:

答案 0 :(得分:2)

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

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

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

此外,您始终可以使用WebElement访问基础element(locator).getWebElement(),但您不需要,因为您也可以使用browser.element(locator)方法进行非Angular应用。

答案 1 :(得分:0)

是的,当然你可以对角度和非角度应用使用browser.findElement()方法@Vinod

答案 2 :(得分:0)

您只需使用 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;
});