blob: 88657e2e6c6d1ea3ac1fd15c3b46971c197f9934 [file] [log] [blame]
import json
import pytest
import webdriver
def window_size_supported(session):
try:
session.window.size = ("a", "b")
except webdriver.UnsupportedOperationException:
return False
except webdriver.InvalidArgumentException:
return True
def window_position_supported(session):
try:
session.window.position = ("a", "b")
except webdriver.UnsupportedOperationException:
return False
except webdriver.InvalidArgumentException:
return True
def test_window_size_types(http, session):
if not window_size_supported(session):
pytest.skip()
with http.get("/session/%s/window/size" % session.session_id) as resp:
assert resp.status == 200
body = json.load(resp)
assert "value" in body
assert "width" in body["value"]
assert "height" in body["value"]
assert isinstance(body["value"]["width"], int)
assert isinstance(body["value"]["height"], int)
size = session.window.size
assert isinstance(size, tuple)
assert isinstance(size[0], int)
assert isinstance(size[1], int)
def test_window_resize(session):
if not window_size_supported(session):
pytest.skip()
# setting the window size by webdriver is synchronous
# so we should see the results immediately
session.window.size = (400, 500)
assert session.window.size == (400, 500)
session.window.size = (500, 600)
assert session.window.size == (500, 600)
"""
TODO(ato):
Disable test because the while statements are wrong.
To fix this properly we need to write an explicit wait utility.
def test_window_resize_by_script(session):
# setting the window size by JS is asynchronous
# so we poll waiting for the results
size0 = session.window.size
session.execute_script("window.resizeTo(700, 800)")
size1 = session.window.size
while size0 == size1:
size1 = session.window.size
assert size1 == (700, 800)
session.execute_script("window.resizeTo(800, 900)")
size2 = session.window.size
while size1 == size2:
size2 = session.window.size
assert size2 == (800, 900)
assert size2 == {"width": 200, "height": 100}
"""
def test_window_position_types(http, session):
if not window_position_supported(session):
pytest.skip()
with http.get("/session/%s/window/position" % session.session_id) as resp:
assert resp.status == 200
body = json.load(resp)
assert "value" in body
assert "x" in body["value"]
assert "y" in body["value"]
assert isinstance(body["value"]["x"], int)
assert isinstance(body["value"]["y"], int)
pos = session.window.position
assert isinstance(pos, tuple)
assert isinstance(pos[0], int)
assert isinstance(pos[1], int)