目前我有一个包含10个字段的表单,我需要做sendkeys>存储值并在保存表单后断言此值。对于这些字段中的每一个,我需要创建一个函数并将值存储在变量中,还是有更好的方法?
我的实际代码:
var email = driver.findElement(By.name('email'));
email.sendKeys('info@domain.com');
email.getAttribute("value").then(function(email_text) {
var email = email_text;
});
干杯, 圣拉斐尔
答案 0 :(得分:0)
如果我理解正确,过程看起来应该填写一些字段,记住它们的值并在提交表单后检查值。
对于这样的任务,没有一个标准的决定,这取决于开发人员。
因此,我们知道我们需要哪些值,并可以将其存储在例如map
中{
'email':'example@email.com',
'telephone':111222333
}
Key是查找元素的名称,值 - 用于sendKey和checkValue方法。
您应该编写两个方法,这些方法将与测试数据映射一起使用,并将按地图键填充输入并按周期检查值。
答案 1 :(得分:0)
你的意思是你想把它作为数组吗?
// you can represent each field as an object
var fields = [
{ elementName: 'email', expectedText: 'info@domain.com' },
{ elementName: 'password', expectedText: 'bla bla bla' }
];
// sendKeys to each field with the specified text
fields.forEach(function(field) {
browser.driver.findElement(by.name(field.elementName)).sendKeys(field.expectedText);
});
// to get all the field text (from promises) and store it as an array
browser.controlFlow().execute(function() {
var textArray = [];
fields.forEach(function(field) {
browser.driver.findElement(by.name(field.elementName)).getAttribute('value').then(function(actualText) {
textArray.push({elementName: field.elementName, actualText: actualText});
});
});
return textArray;
}).then(function(storedTextArray) {
// do something with the stored text array here
});