量角器的预期条件
Expected conditions in protractor
在用 Python 编写 selenium 测试时,我习惯于使用 Explicit Waits 大量等待页面加载,或等待元素变得可见或可点击等:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
这里的关键概念是提供一个预期条件等待,有多种类型:
与使用具有硬编码时间间隔的 sleep
相比,使用预期条件使代码更清晰、更可靠。
现在,我们正在将我们的端到端测试基础架构大量切换到 protractor
。
量角器中是否有与 python-selenium
中相似的 Expected Conditions
或
java-selenium
?如果不是,在 protractor
中显式等待条件的规范方法是什么?
我已经查看了 protractor documentation,但一无所获。
在量角器中您可以使用 browser.wait(fn, timeout)
。
示例:
var element = by.id('myDynamicElement');
browser.wait(function() {
return ptor.isElementPresent(element);
}, 10000);
expect(ptor.isElementPresent(element)).toBeTruthy();
一旦 feat(expectedConditions) 进入(可能是量角器 1.7),您可以:
var EC = protractor.ExpectedConditions;
var e = element(by.id('xyz'));
browser.wait(EC.presenceOf(e), 10000);
expect(e.isPresent()).toBeTruthy();
不过请注意,如果您正在使用 Angular 应用程序并且您的测试需要这些有条件的等待,那么对于您正在做的事情来说这是一个很大的危险信号,因为量角器应该在本机处理等待。
waitForControlVisible(locator: string, timeout: number) {
try {
const element = this.findElement(locator);
const condition = browser.ExpectedConditions;
browser.wait(condition.visibilityOf(element), timeout);
} catch (e) {
console.log(e.message);
console.error('Control not visible.', e);
}
}
也许可以帮助您,等待 DOM 中的元素可见性。
在用 Python 编写 selenium 测试时,我习惯于使用 Explicit Waits 大量等待页面加载,或等待元素变得可见或可点击等:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
这里的关键概念是提供一个预期条件等待,有多种类型:
与使用具有硬编码时间间隔的 sleep
相比,使用预期条件使代码更清晰、更可靠。
现在,我们正在将我们的端到端测试基础架构大量切换到 protractor
。
量角器中是否有与 python-selenium
中相似的 Expected Conditions
或
java-selenium
?如果不是,在 protractor
中显式等待条件的规范方法是什么?
我已经查看了 protractor documentation,但一无所获。
在量角器中您可以使用 browser.wait(fn, timeout)
。
示例:
var element = by.id('myDynamicElement');
browser.wait(function() {
return ptor.isElementPresent(element);
}, 10000);
expect(ptor.isElementPresent(element)).toBeTruthy();
一旦 feat(expectedConditions) 进入(可能是量角器 1.7),您可以:
var EC = protractor.ExpectedConditions;
var e = element(by.id('xyz'));
browser.wait(EC.presenceOf(e), 10000);
expect(e.isPresent()).toBeTruthy();
不过请注意,如果您正在使用 Angular 应用程序并且您的测试需要这些有条件的等待,那么对于您正在做的事情来说这是一个很大的危险信号,因为量角器应该在本机处理等待。
waitForControlVisible(locator: string, timeout: number) {
try {
const element = this.findElement(locator);
const condition = browser.ExpectedConditions;
browser.wait(condition.visibilityOf(element), timeout);
} catch (e) {
console.log(e.message);
console.error('Control not visible.', e);
}
}
也许可以帮助您,等待 DOM 中的元素可见性。