cobrateam/splinter
View on GitHubDjangoClientElement does not implement most of the methods of ElementAPI
Open
#317 opened on May 16, 2014
djangohelp wanted
Repository metrics
- Stars
- (2,754 stars)
- PR merge metrics
- (PR metrics pending)
Description
First thing first: Thanks for your time.
Your docs: Django driver
Missing (at least):
- click(self)
- check(self)
- uncheck(self)
- checked(self)
My code (snippet):
def login(self, name_or_email, password, confirmation_url=None, remember=False, idempotent=False):
"""
Sign-in after having confirmed the e-mail address with the optional confirmation URL.
Set idempotent to True to skip sign-in if the user is currently logged-in. This not guarantee that the current
user is the expected user.
"""
if not idempotent or not self.is_logged:
if confirmation_url:
self.browser.visit(confirmation_url)
time.sleep(1) # FIXME Strangely this delay is necessary otherwise the button is not clicked
self.browser.find_by_id('confirm_btn').click()
if not self.is_login_page:
self.assertIsNone(confirmation_url, 'Confirmation URL is invalid: %s' % confirmation_url)
self.browser.click_link_by_partial_href('login')
self.browser.find_by_id('id_login').fill(name_or_email)
self.browser.find_by_id('id_password').fill(password)
remember_checkbox = self.browser.find_by_id('id_remember')
remember_checkbox.check() if remember else remember_checkbox.uncheck()
self.browser.find_by_id('login_btn').click()
The error (using splinter from master):
======================================================================
ERROR: test_bad_login_username_does_not_work (server.cloudncode_base.tests.test_live.AccountWUILiveTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/ubuntu/cloudncode_test/server/cloudncode_base/lib/test/live/wui/account.py", line 28, in test_bad_login_username_does_not_work
self.login('hacker', 'I_r0cks')
File "/home/ubuntu/cloudncode_test/server/cloudncode_base/lib/test/live/base.py", line 171, in login
remember_checkbox.check() if remember else remember_checkbox.uncheck()
File "/home/ubuntu/splinter/splinter/driver/__init__.py", line 494, in uncheck
raise NotImplementedError
NotImplementedError
I don't know if I implemented it well because I am unable to go further (do not know how to implement click) but I guess the following works:
def check(self):
if not self.checked:
self._element.click()
def uncheck(self):
if self.checked:
self._element.click()
@property
def checked(self):
return self._element.is_selected()
selected = checked
Remark: DjangoClientElement._element is an instance class HtmlElement from lxml
Please help me,
Thanks.