3

Webdriver (Python、Chrome、Firefox 用) でテキスト フィルターをテストしたい。Web ページには、名前のリストと入力フィールドがあります。ユーザーがテキストを入力すると、名前のリストがフィルタリングされ、入力したテキストを含まない名前は非表示になります。ユーザーが 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 によってアクセスされる) はキーを取得しません (Return も他の文字もありません)。を外すと

find_element_by_xpath(xpath)

名前のチェックでは、正しい名前がコピーされ、すべてが機能します。そのため、別の要素の xpath 検索が 2 番目の send_keys() を妨げているようです。ここで詳細を見逃していますか、それともバグですか?

4

1 に答える 1

0

次のように、send_keysの代わりに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)
于 2012-11-10T11:46:04.387 に答える