Skip to content

Commit 48cd3fc

Browse files
committed
doing some python magic to make switch_to* work on event firing webdriver
Fixes #478
1 parent 8461416 commit 48cd3fc

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Diff for: py/selenium/webdriver/support/event_firing_webdriver.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def after_navigate_to(self, url, driver):
6565
if not isinstance(event_listener, AbstractEventListener):
6666
raise WebDriverException("Event listener must be a subclass of AbstractEventListener")
6767
self._driver = driver
68+
self._driver._wrap_value = self._wrap_value
6869
self._listener = event_listener
6970

7071
@property
@@ -168,7 +169,12 @@ def _unwrap_element_args(self, args):
168169
return [self._unwrap_element_args(item) for item in args]
169170
else:
170171
return args
171-
172+
173+
def _wrap_value(self, value):
174+
if isinstance(value, EventFiringWebElement):
175+
return WebDriver._wrap_value(self._driver, value.wrapped_element)
176+
return WebDriver._wrap_value(self._driver, value)
177+
172178
def __setattr__(self, item, value):
173179
if item.startswith("_") or not hasattr(self._driver, item):
174180
object.__setattr__(self, item, value)

Diff for: py/test/selenium/webdriver/support/event_firing_webdriver_tests.py

+7
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,13 @@ def test_should_unwrap_element_args_when_calling_scripts(self):
163163
"arguments[0]['flibble'] = arguments[0].getAttribute('id'); return arguments[0]['flibble']",
164164
button)
165165
self.assertEqual("plainButton", value)
166+
167+
def test_should_unwrap_element_args_when_switching_frames(self):
168+
ef_driver = EventFiringWebDriver(self.driver, AbstractEventListener())
169+
ef_driver.get(self._pageURL("iframes"))
170+
frame = ef_driver.find_element_by_id("iframe1")
171+
ef_driver.switch_to.frame(frame)
172+
self.assertEqual("click me!", ef_driver.find_element_by_id("imageButton").get_attribute("alt"))
166173

167174
def test_should_be_able_to_access_wrapped_instance_from_event_calls(self):
168175
driver = self.driver

0 commit comments

Comments
 (0)