我有一个显示人员表的主页和一个“添加新人员”按钮。当您单击它时,会出现模态窗口,其中包含多个输入,并选择供您添加新人。 字段“名称”将验证特殊字符。 模态有一个“保存”按钮,如果每个字段都经过验证,将保存并关闭模态。如果您发送了无效字符,它将验证并触发相关字段下方的警告消息,该模式将保持打开状态,直到您对其进行修复。
我的自动化系统与faker
一起使用,有时会用连字符发送名称,导致它在给定情况下失败(当单击“保存”时,模式不会关闭)。
我最初的想法是询问警告消息是否存在或出现,请尝试发送另一个警告消息。
此逻辑失败是因为当faker
发送有效名称时,模式将关闭,并且我会询问不再可见的元素(错误消息)(因为模式关闭后我就在main上) )。这会引发ElementNotInteractableException
。
def create_new_person(self):
self.find_element(*self.__locators.NAME_INP).send_keys(helpers.generate_name_female())
# And many other inputs...
self.find_element(*self.__locators.SAVE_PERSON_BTN).click()
alert = self.is_element_present(self.__locators.NAME_ALERT_MSG)
while alert:
self.find_element(*self.__locators.NAME_INP).send_keys(helpers.generate_name_female())
self.find_element(*self.__locators.SAVE_PERSON_BTN).click()
也许我可以考虑成功的迹象,那就是模式已关闭并要求这样做,但是我不确定如何实现它,或者甚至可能。
当伪造者填写输入内容时,我应该问什么问题以检查是否存在问题?
答案 0 :(得分:0)
while self.is_element_present(self.__locators.NAME_ALERT_MSG) is True:
首先,为什么要检查返回值是否具有与布尔常量相同的对象ID?根据您的描述,
while self.is_element_present(self.__locators.NAME_ALERT_MSG):
会的。其次,您没有检查每次调用返回的值。使用局部变量对此进行检测:
alert = self.is_element_present(self.__locators.NAME_ALERT_MSG)
print("alert =", alert)
while alert:
...
alert = self.is_element_present(self.__locators.NAME_ALERT_MSG)
print("alert =", alert)