我们可以将browser.findElement()
方法用于非Angular应用程序,而不是使用browser.driver.findElement()
方法吗?
答案 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;
});