3

我想用 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)

但是输入字段(由文本框或 find_element_by_xpath 访问)不会得到任何键(既没有返回也没有任何其他字符)。当我删除

find_element_by_xpath(xpath)

为了检查名称,复制了正确的名称并且所有的作品。因此,似乎 xpath 搜索另一个元素会阻止第二个 send_keys()。我在这里错过了一些细节还是这是一个错误?

4

1 回答 1

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)
于 2012-11-10T11:46:04.387 回答