Update Recorder Mode
This commit is contained in:
parent
484c8a21a8
commit
adc75e0131
Binary file not shown.
|
@ -153,8 +153,7 @@ class BaseCase(unittest.TestCase):
|
|||
if ("http:") in c_url or ("https:") in c_url or ("file:") in c_url:
|
||||
if self.get_domain_url(url) != self.get_domain_url(c_url):
|
||||
self.open_new_window(switch_to=True)
|
||||
else:
|
||||
self.driver.get(url)
|
||||
self.driver.get(url)
|
||||
if settings.WAIT_FOR_RSC_ON_PAGE_LOADS:
|
||||
self.wait_for_ready_state_complete()
|
||||
self.__demo_mode_pause_if_active()
|
||||
|
@ -4977,8 +4976,10 @@ class BaseCase(unittest.TestCase):
|
|||
def assert_title(self, title):
|
||||
"""Asserts that the web page title matches the expected title.
|
||||
When a web page initially loads, the title starts as the URL,
|
||||
but then the title switches over to the actual page title.
|
||||
A slow connection could delay the actual title from displaying."""
|
||||
but then the title switches over to the actual page title.
|
||||
In Recorder Mode, this assertion is skipped because the Recorder
|
||||
changes the page title to the selector of the hovered element.
|
||||
"""
|
||||
self.wait_for_ready_state_complete()
|
||||
expected = title.strip()
|
||||
actual = self.get_page_title().strip()
|
||||
|
@ -4986,7 +4987,8 @@ class BaseCase(unittest.TestCase):
|
|||
"Expected page title [%s] does not match the actual title [%s]!"
|
||||
)
|
||||
try:
|
||||
self.assertEqual(expected, actual, error % (expected, actual))
|
||||
if not self.recorder_mode:
|
||||
self.assertEqual(expected, actual, error % (expected, actual))
|
||||
except Exception:
|
||||
self.wait_for_ready_state_complete()
|
||||
self.sleep(settings.MINI_TIMEOUT)
|
||||
|
@ -4998,7 +5000,7 @@ class BaseCase(unittest.TestCase):
|
|||
self.sleep(settings.MINI_TIMEOUT)
|
||||
actual = self.get_page_title().strip()
|
||||
self.assertEqual(expected, actual, error % (expected, actual))
|
||||
if self.demo_mode:
|
||||
if self.demo_mode and not self.recorder_mode:
|
||||
a_t = "ASSERT TITLE"
|
||||
if self._language != "English":
|
||||
from seleniumbase.fixtures.words import SD
|
||||
|
|
|
@ -298,6 +298,7 @@ var reset_recorder_state = function() {
|
|||
document.recorded_actions = [];
|
||||
sessionStorage.setItem('pause_recorder', 'no');
|
||||
sessionStorage.setItem('recorder_mode', '1');
|
||||
sessionStorage.setItem('recorder_title', document.title)
|
||||
const d_now = Date.now();
|
||||
w_orig = window.location.origin;
|
||||
w_href = window.location.href;
|
||||
|
@ -316,14 +317,31 @@ var reset_recorder_state = function() {
|
|||
};
|
||||
reset_recorder_state();
|
||||
|
||||
var reset_if_recorder_undefined = function() {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
};
|
||||
|
||||
document.body.addEventListener('mouseover', function (event) {
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
if (!selector.startsWith('body') && !selector.includes(' div')) {
|
||||
document.title = selector;
|
||||
}
|
||||
});
|
||||
document.body.addEventListener('mouseout', function (event) {
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
document.title = sessionStorage.getItem('recorder_title');
|
||||
});
|
||||
document.body.addEventListener('click', function (event) {
|
||||
// Do Nothing.
|
||||
});
|
||||
document.body.addEventListener('formdata', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const d_now = Date.now();
|
||||
ra_len = document.recorded_actions.length;
|
||||
if (ra_len > 0 &&
|
||||
|
@ -339,10 +357,8 @@ document.body.addEventListener('formdata', function (event) {
|
|||
}
|
||||
});
|
||||
document.body.addEventListener('dragstart', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const d_now = Date.now();
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
|
@ -360,10 +376,8 @@ document.body.addEventListener('dragstart', function (event) {
|
|||
sessionStorage.setItem('recorded_actions', json_rec_act);
|
||||
});
|
||||
document.body.addEventListener('dragend', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
ra_len = document.recorded_actions.length;
|
||||
if (ra_len > 0 && document.recorded_actions[ra_len-1][0] === 'drags')
|
||||
{
|
||||
|
@ -373,10 +387,8 @@ document.body.addEventListener('dragend', function (event) {
|
|||
}
|
||||
});
|
||||
document.body.addEventListener('drop', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const d_now = Date.now();
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
|
@ -391,10 +403,8 @@ document.body.addEventListener('drop', function (event) {
|
|||
}
|
||||
});
|
||||
document.body.addEventListener('change', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const d_now = Date.now();
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
|
@ -414,7 +424,7 @@ document.body.addEventListener('change', function (event) {
|
|||
document.recorded_actions.pop();
|
||||
ra_len = document.recorded_actions.length;
|
||||
}
|
||||
// Do it twice for click and multiple changes.
|
||||
// Again for click & more changes.
|
||||
if (ra_len > 0 && document.recorded_actions[ra_len-1][1] === selector)
|
||||
{
|
||||
document.recorded_actions.pop();
|
||||
|
@ -436,13 +446,13 @@ document.body.addEventListener('change', function (event) {
|
|||
document.recorded_actions[ra_len-1][1] === selector &&
|
||||
tag_name === 'input' && e_type === 'checkbox')
|
||||
{
|
||||
// Pop duplicate checkbox state changes.
|
||||
// Pop extra checkbox changes.
|
||||
document.recorded_actions.pop();
|
||||
ra_len = document.recorded_actions.length;
|
||||
if (ra_len > 0 && document.recorded_actions[ra_len-1][1] === selector)
|
||||
document.recorded_actions.pop();
|
||||
}
|
||||
// Go back to `if`, not `else if`.
|
||||
// Use 'if' again, not 'else if'.
|
||||
if (tag_name === 'input' && e_type === 'checkbox' && element.checked)
|
||||
document.recorded_actions.push(['c_box', selector, 'yes', d_now]);
|
||||
else if (tag_name === 'input' && e_type === 'checkbox' && !element.checked)
|
||||
|
@ -451,10 +461,8 @@ document.body.addEventListener('change', function (event) {
|
|||
sessionStorage.setItem('recorded_actions', json_rec_act);
|
||||
});
|
||||
document.body.addEventListener('mousedown', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const d_now = Date.now();
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
|
@ -463,7 +471,7 @@ document.body.addEventListener('mousedown', function (event) {
|
|||
if (ra_len > 0 && document.recorded_actions[ra_len-1][0] === 'mo_dn')
|
||||
document.recorded_actions.pop();
|
||||
if (tag_name === 'select') {
|
||||
// Do Nothing. (Handle select in 'change' action.)
|
||||
// Do Nothing. (Handle in 'change' action.)
|
||||
}
|
||||
else
|
||||
document.recorded_actions.push(['mo_dn', selector, '', d_now]);
|
||||
|
@ -471,10 +479,8 @@ document.body.addEventListener('mousedown', function (event) {
|
|||
sessionStorage.setItem('recorded_actions', json_rec_act);
|
||||
});
|
||||
document.body.addEventListener('mouseup', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const d_now = Date.now();
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
|
@ -606,10 +612,8 @@ document.body.addEventListener('mouseup', function (event) {
|
|||
sessionStorage.setItem('recorded_actions', json_rec_act);
|
||||
});
|
||||
document.body.addEventListener('contextmenu', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
ra_len = document.recorded_actions.length;
|
||||
|
@ -623,10 +627,8 @@ document.body.addEventListener('contextmenu', function (event) {
|
|||
}
|
||||
});
|
||||
document.body.addEventListener('keydown', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
reset_if_recorder_undefined();
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
ra_len = document.recorded_actions.length;
|
||||
if (ra_len > 0 &&
|
||||
document.recorded_actions[ra_len-1][0] === 'mo_dn' &&
|
||||
|
@ -638,8 +640,7 @@ document.body.addEventListener('keydown', function (event) {
|
|||
}
|
||||
});
|
||||
document.body.addEventListener('keyup', function (event) {
|
||||
if (typeof document.recorded_actions === 'undefined')
|
||||
reset_recorder_state();
|
||||
reset_if_recorder_undefined();
|
||||
// Controls for Pausing & Resuming.
|
||||
pause_rec = sessionStorage.getItem('pause_recorder');
|
||||
if (event.key.toLowerCase() === 'escape' && pause_rec === 'no')
|
||||
|
@ -650,6 +651,7 @@ document.body.addEventListener('keyup', function (event) {
|
|||
console.log('The SeleniumBase Recorder has paused.');
|
||||
no_border = 'none';
|
||||
document.querySelector('body').style.border = no_border;
|
||||
document.title = sessionStorage.getItem('recorder_title');
|
||||
}
|
||||
else if ((event.key === '`' || event.key === '~') && pause_rec === 'yes')
|
||||
{
|
||||
|
@ -678,9 +680,8 @@ document.body.addEventListener('keyup', function (event) {
|
|||
red_border = 'thick solid #EE3344';
|
||||
document.querySelector('body').style.border = red_border;
|
||||
}
|
||||
// Continue after checking for pause/resume controls.
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes')
|
||||
return;
|
||||
// After checking for pause/resume controls.
|
||||
if (sessionStorage.getItem('pause_recorder') === 'yes') return;
|
||||
const d_now = Date.now();
|
||||
const element = event.target;
|
||||
const selector = getBestSelector(element);
|
||||
|
|
Loading…
Reference in New Issue