def add_named_params(self, names, values): """ Add a named parameter to the FormFiller. name can be a string or a list of strings values can be a string of a list of strings """ name_list = utils.string_or_list_into_list(names) values_list = utils.string_or_list_into_list(values) for name in name_list: if name in self.namedparams: self.namedparams[name].extend(values_list) else: self.namedparams[name] = values_list[:]
def randfill(self, keys, samepass=False, submitter=None): res = FormFiller.Params() password = None multiplepass = False for f in keys: value = '' if f.tag == FormField.Tag.INPUT: if f.type == FormField.Type.CHECKBOX: value = FormFiller.rng.choice([f.value, '']) elif f.type == FormField.Type.HIDDEN: value = f.value elif f.type == FormField.Type.TEXT: if f.name in self.namedparams: value = self.namedparams[f.name] else: value = FormFiller.rng.getWords() elif f.type == FormField.Type.PASSWORD: if password is None or not samepass: password = FormFiller.rng.getPassword() else: multiplepass = True value = password elif f.type == FormField.Type.FILE: value = "blank.jpg" elif f.tag == FormField.Tag.TEXTAREA: if f.name in self.namedparams: value = self.namedparams[f.name] else: value = FormFiller.rng.getWords(10) res[f.name].extend(utils.string_or_list_into_list(value)) if samepass and not multiplepass: # if we were asked to use the same password, but there were no muitple password fields, return None return None res.submitter = submitter return res