| def get_events(session): |
| """Return list of key events recorded in the test_keys_page fixture.""" |
| events = session.execute_script("return allEvents.events;") or [] |
| # `key` values in `allEvents` may be escaped (see `escapeSurrogateHalf` in |
| # test_keys_wdspec.html), so this converts them back into unicode literals. |
| for e in events: |
| # example: turn "U+d83d" (6 chars) into u"\ud83d" (1 char) |
| if "key" in e and e["key"].startswith(u"U+"): |
| key = e["key"] |
| hex_suffix = key[key.index("+") + 1:] |
| e["key"] = unichr(int(hex_suffix, 16)) |
| return events |
| |
| |
| def get_keys(input_el): |
| """Get printable characters entered into `input_el`. |
| |
| :param input_el: HTML input element. |
| """ |
| rv = input_el.property("value") |
| if rv is None: |
| return "" |
| else: |
| return rv |
| |
| |
| def filter_dict(source, d): |
| """Filter `source` dict to only contain same keys as `d` dict. |
| |
| :param source: dictionary to filter. |
| :param d: dictionary whose keys determine the filtering. |
| """ |
| return {k: source[k] for k in d.keys()} |