Javascript 在量角器中:如何创建只发送指定键的方法
我有一个名为populateProvidedValuesForNewMandate的方法,如下所示Javascript 在量角器中:如何创建只发送指定键的方法,javascript,selenium,protractor,Javascript,Selenium,Protractor,我有一个名为populateProvidedValuesForNewMandate的方法,如下所示 exports.populateProvidedValuesForNewMandate = (team, assignee, disputeValue, lawField, subjectOfDispute, party, fileReference, costUnit, clientUnit, sideEffect, comment) => { const teamInput = e
exports.populateProvidedValuesForNewMandate = (team, assignee, disputeValue, lawField,
subjectOfDispute, party, fileReference, costUnit, clientUnit, sideEffect, comment) => {
const teamInput = element(by.css('div#team input'));
const assigneeInput = element(by.css('div#assignee input'));
const disputeValueInput = element(by.id('dispute_value'));
const lawFieldInput = element(by.css('div#law_field input'));
const subjectOfDisputeInput = element(by.id('subject_of_dispute'));
const partyInput = element(by.id('party'));
const fileReferenceInput = element(by.id('file_reference'));
const costUnitInput = element(by.css('div#cost_unit input'));
const clientUnitInput = element(by.id('client_unit'));
const sideEffectInput = element(by.css('div#side_effect input'));
const mandateComment = element(by.id('mandate_comment'));
// TODO: Figure out how to choose these dynamically as well
// relevantCase, risReportRelevant, economicRelevance, activePassive
const relevantCaseInput = element(by.css(".relevant_case input[value='no']"));
const riskReportRelevantInput = element(by.css(".risk_report_relevant input[value='no']"));
const economicRelevanceInput = element(by.css("label[for='economic_relevance']"));
const activePassiveInput = element(by.css(".active_passive input[value='passive']"));
teamInput.sendKeys(team);
assigneeInput.sendKeys(assignee);
disputeValueInput.sendKeys(disputeValue);
lawFieldInput.sendKeys(lawField);
subjectOfDisputeInput.sendKeys(subjectOfDispute);
partyInput.sendKeys(party);
fileReferenceInput.sendKeys(fileReference);
costUnitInput.sendKeys(costUnit);
clientUnitInput.sendKeys(clientUnit);
sideEffectInput.sendKeys(sideEffect);
mandateComment.sendKeys(comment);
// TODO: Figure out how to choose these dynamically as well
// relevantCase, risReportRelevant, economicRelevance, activePassive
browser.actions().mouseMove(relevantCaseInput).doubleClick().perform();
browser.actions().mouseMove(riskReportRelevantInput).click().perform();
browser.actions().mouseMove(economicRelevanceInput).click().perform();
browser.actions().mouseMove(activePassiveInput).click().perform();
};
下面是它的一个用例示例
values.populateProvidedValuesForNewMandate(texts.DISPUTE_VALUE, texts.PARTY, texts.CLIENT_UNIT,
texts.SIDE_EFFECT, texts.COMMENT);
该方法将位于名为text.js的文件中的指定值填充到适当的字段中。问题是我得到了错误消息:“每个键必须是一个字符串的数字;Get undefined'表示此方法不起作用,因为我必须发送方法中每个指定变量的键
我真的希望避免为这个方法发送空字符串(特别是因为它不起作用,我已经尝试过了->我从应用程序本身得到了一个错误,而不是从量角器/selenium)
如何将此方法转换为只考虑测试用例中指定变量的方法。
从我的评论中你也可以看到,我正试图找出如何对复选框和单选按钮执行此操作。如果有人能给我一个提示,我真的很感激。老实说,只有你能回答这个问题。因为有数百种方法可以实现这一点,有些方法可能比另一种更好。所以对我们来说,猜测哪种方式最适合你是愚蠢的。所以我会举一个例子,希望你们能从这里开始 一种方法是让方法接受一个对象并检查是否传递了属性
function fillForm(obj) {
if (obj.hasOwnProperty('team')) teamInput.sendKeys(team);
if (obj.hasOwnProperty('assignee')) assigneeInput.sendKeys(assignee);
if (obj.hasOwnProperty('disputeValue')) disputeValueInput.sendKeys(disputeValue);
// ...
}
然后叫它
fillForm({
assignee: texts.ASIGNEE,
disputeValue: texts.DISPUTE_VALUE
})
因此,它将跳过向团队字段发送密钥