webdriver: add test for <body> interaction
diff --git a/webdriver/tests/element_send_keys/interactability.py b/webdriver/tests/element_send_keys/interactability.py
index 635d0de..61b3c6f 100644
--- a/webdriver/tests/element_send_keys/interactability.py
+++ b/webdriver/tests/element_send_keys/interactability.py
@@ -37,15 +37,38 @@
     """)
 
     body = session.find.css("body", all=False)
-    element = session.find.css(":root", all=False)
-    result = session.find.css("input", all=False)
+    document_element = session.execute_script("return document.documentElement")
+    textfield = session.find.css("input", all=False)
 
-    # By default body is the active element
-    assert session.active_element == body
+    # active element should always be <body>
+    assert session.execute_script("return document.activeElement") == body
 
-    response = element_send_keys(session, element, "foo")
+    response = element_send_keys(session, document_element, "foo")
     assert_success(response)
-    assert session.active_element in [element, body]
+
+    # Firefox allows <html> to be focussed and become the active element.
+    # Chrome (correctly?) makes the active element always be <body>.
+    assert execute_script("return document.activeElement") in [document_element, body]
+
+    assert textfield.property("value") == "foo"
+
+
+def test_body_element_is_interactable(session):
+    session.url = inline("""
+        <body onkeypress="document.querySelector('input').value += event.key">
+          <input>
+        </body>
+    """)
+
+    body = session.find.css("body", all=False)
+    textfield = session.find.css("input", all=False)
+
+    # active element should always be <body>
+    assert session.execute_script("return document.activeElement") == body
+
+    response = element_send_keys(session, body, "foo")
+    assert_success(response)
+    assert session.execute_script("return document.activeElement") == body
     assert result.property("value") == "foo"