Javascript 在量角器中:如何创建只发送指定键的方法

Javascript 在量角器中:如何创建只发送指定键的方法,javascript,selenium,protractor,Javascript,Selenium,Protractor,我有一个名为populateProvidedValuesForNewMandate的方法,如下所示 exports.populateProvidedValuesForNewMandate = (team, assignee, disputeValue, lawField, subjectOfDispute, party, fileReference, costUnit, clientUnit, sideEffect, comment) => { const teamInput = e

我有一个名为populateProvidedValuesForNewMandate的方法,如下所示

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
})
因此,它将跳过向团队字段发送密钥