Chromium Code Reviews| Index: tools/telemetry/telemetry/core/backends/form_based_credentials_backend.py |
| diff --git a/tools/telemetry/telemetry/core/backends/form_based_credentials_backend.py b/tools/telemetry/telemetry/core/backends/form_based_credentials_backend.py |
| index bb32f32251a3489a3053af0629642ad7fd8b00a9..cf3c9fdcbf3139873f83271f545159f6b09afa64 100644 |
| --- a/tools/telemetry/telemetry/core/backends/form_based_credentials_backend.py |
| +++ b/tools/telemetry/telemetry/core/backends/form_based_credentials_backend.py |
| @@ -15,9 +15,14 @@ def _WaitForLoginFormToLoad(backend, login_form_id, tab): |
| # Wait until the form is submitted and the page completes loading. |
| util.WaitFor(IsFormLoadedOrAlreadyLoggedIn, 60) |
| -def _SubmitFormAndWait(form_id, tab): |
| - tab.ExecuteJavaScript( |
| - 'document.getElementById("%s").submit();' % form_id) |
| +def _SubmitFormAndWait(form_id, button_id, tab): |
| + if button_id: |
| + tab.ExecuteJavaScript('setTimeout(function() {' |
| + ' document.getElementById("%s").click();' |
| + '}, 1000);' % button_id) |
|
tonyg
2014/08/20 17:37:17
Is the timeout necessary in addition to the submit
sullivan
2014/08/21 21:55:23
Yes, it's necessary. I get an error message with a
|
| + else: |
| + tab.ExecuteJavaScript( |
| + 'document.getElementById("%s").submit();' % form_id) |
| def FinishedLoading(): |
| return not tab.EvaluateJavaScript( |
| @@ -46,6 +51,11 @@ class FormBasedCredentialsBackend(object): |
| raise NotImplementedError() |
| @property |
| + def login_button_id(self): |
| + """Some sites (like codepen) have a button to click to log in.""" |
| + return None |
| + |
| + @property |
| def login_input_id(self): |
| raise NotImplementedError() |
| @@ -95,14 +105,14 @@ class FormBasedCredentialsBackend(object): |
| tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() |
|
tonyg
2014/08/20 17:37:17
Does changing this to Complete instead of Interact
sullivan
2014/08/21 21:55:23
No, but I changed it anyway, since it seems like i
|
| logging.info('Loaded page: %s', url) |
| - email_id = 'document.querySelector("#%s").%s.value = "%s"; ' % ( |
| + email_id = 'document.querySelector("#%s #%s").value = "%s"; ' % ( |
| self.login_form_id, self.login_input_id, config['username']) |
| - password = 'document.querySelector("#%s").%s.value = "%s"; ' % ( |
| + password = 'document.querySelector("#%s #%s").value = "%s"; ' % ( |
| self.login_form_id, self.password_input_id, config['password']) |
| tab.ExecuteJavaScript(email_id) |
| tab.ExecuteJavaScript(password) |
| - _SubmitFormAndWait(self.login_form_id, tab) |
| + _SubmitFormAndWait(self.login_form_id, self.login_button_id, tab) |
| self._logged_in = True |
| return True |