我想用Webdriver测试文本过滤器(适用于Python,Chrome和Firefox)。在网页上是名称列表和输入字段。当用户键入文本时,将过滤名称列表,将隐藏不包含键入文本的名称。当用户按下Enter / Return时,最佳匹配名称将被复制到另一个输入字段。首先我输入文本(必须使用XPath):
textbox = browser.find_element_by_xpath(pathToInputField)
textbox.send_keys(text)
然后检查列表(略微简化):
for name in names:
xpath = "//div[contains(text(), '{0}')]".format(name)
elmIsDisplayed = browser.find_element_by_xpath(xpath).is_displayed()
if (text in name):
self.assertTrue(elmIsDisplayed)
else:
self.assertFalse(elmIsDisplayed)
到目前为止,它工作正常。之后我尝试按Enter / Return:
textbox.send_keys(Keys.RETURN)
但输入字段(由textbox或find_element_by_xpath访问)将不会获得任何键(既不返回也不包含任何其他字符)。当我删除
find_element_by_xpath(xpath)
用于检查名称,复制正确的名称并且所有名称都有效。因此,似乎xpath搜索另一个元素会阻止第二个send_keys()。我在这里想念一些细节还是这个错误?
答案 0 :(得分:0)
只是一个想法,你可以尝试使用javascript而不是send_keys,如下所示:
js_code = """
var eventName = "keypress";
var keycode = 13;
var evt = document.createEvent("KeyboardEvent");
evt.initKeyboardEvent(eventName, true, true, window, false, false, false, false, keycode, keycode);
this.dispatchEvent(evt);
"""
textbox.evaluateJavaScript(js_code)