繁体   English   中英

WebDriver:为什么find_element_by_xpath之后send_keys不起作用?

[英]WebDriver: Why doesn’t send_keys work after find_element_by_xpath?

我想用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()。 我在这里想念一些细节还是这个错误?

只是一个想法,你可以尝试使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM