Python WebDriver:Why不’;在通过xpath查找元素后,是否不发送密钥?

Python WebDriver:Why不’;在通过xpath查找元素后,是否不发送密钥?,python,text,selenium,filter,webdriver,Python,Text,Selenium,Filter,Webdriver,我想用Webdriver测试一个文本过滤器(用于Python、Chrome和Firefox)。网页上有一个名称列表和一个输入字段。当用户键入文本时,名称列表将被过滤,不包含键入文本的名称将被隐藏。当用户按Enter/Return时,最佳匹配名称将复制到另一个输入字段。首先,我键入文本(必须使用XPath): 然后检查列表(稍微简化): 到目前为止,它运行良好。之后,我尝试按Enter/Return键: textbox.send_keys(Keys.RETURN) 但是输入字段(通过textbo

我想用Webdriver测试一个文本过滤器(用于Python、Chrome和Firefox)。网页上有一个名称列表和一个输入字段。当用户键入文本时,名称列表将被过滤,不包含键入文本的名称将被隐藏。当用户按Enter/Return时,最佳匹配名称将复制到另一个输入字段。首先,我键入文本(必须使用XPath):

然后检查列表(稍微简化):

到目前为止,它运行良好。之后,我尝试按Enter/Return键:

textbox.send_keys(Keys.RETURN)
但是输入字段(通过textbox或通过xpath查找元素)将不会得到任何键(既不返回也不返回任何其他字符)。当我移除

find_element_by_xpath(xpath)

为了检查名称,应复制正确的名称和所有作品。因此,对另一个元素的xpath搜索似乎阻止了第二个send_keys()。我是否遗漏了一些细节,或者这是一个bug?

只是一个想法,您是否可以尝试使用javascript而不是发送密钥,如下所示:

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)

Selenium是否正在报告第二个
send_key
call的任何错误或警告?第二个send_key的chromedriver日志:[420.588][FINE]:收到的命令(/session/27e363d56a1244183e94f109af1a2389/element/:wdc:135247329737/value),参数为{“id”::wdc:135247329737”,“sessionId”:“27e363d56a1244183e94f109af1a2389”,“value”:[“\uE006”]}找不到任何“元素”消息,当第二个输入字段为空时测试失败。这可能很明显,但您是否导入了
?您知道,selenium.webdriver.common.keys导入密钥的第一个日志是什么?确保id参数实际上是相同的。chromedriver日志中发送密钥的id是相等的。我试图用Javascript触发密钥事件,但也失败了。
find_element_by_xpath(xpath)
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)