Commit 471abb8c by Jesse Zoldak

Fix lettuce css_fill method for devstack

parent 47c445db
......@@ -526,7 +526,23 @@ def css_fill(css_selector, text, index=0):
Then for synchronization purposes, wait for the value on the page.
"""
wait_for_visible(css_selector, index=index)
retry_on_exception(lambda: css_find(css_selector)[index].fill(text))
# HACK:
# At some point, in devstack strings were no longer being filled into fields
# correctly under our original implementation which used splinter's fill method.
# Instead everything after certain letters (E.g. e and r) was getting truncated.
#
# Note that troubleshooting showed that this happened both with the splinter "fill"
# method, and directly with its underlying selenium implementation which is
# self._element.clear() followed by self._element.send_keys(value)
#
# As a workaround, wait for the element to be visible, then use JS to set its value.
retry_on_exception(lambda: css_find(css_selector)[index] is not None)
world.browser.driver.execute_script('window.jQuery("{css_selector}").val("{text}");'.format(
css_selector=css_selector,
text=text
))
wait_for(lambda _: css_has_value(css_selector, text, index=index))
return True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment