I have been trying to record a test using the “Katalon Recorder 5.3.21” on MacOS 10.14.6 using chrome Version 87.0.4280.88 .
Reproducible:
- Go to page Binder and wait until the jupyterLab notebook loads
- Click on “Run” in the upper left
- Click on “Run Selected Cell and All Below”
The exported code (in python) looks something like the following:
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class UntitledTestCase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://www.google.com/"
self.verificationErrors = []
self.accept_next_alert = True
def test_untitled_test_case(self):
driver = self.driver
#driver.get("https://hub.gke2.mybinder.org/user/jupyterlab-jupyterlab-demo-tqynhcrn/lab")
driver.get("https://mybinder.org/v2/gh/jupyterlab/jupyterlab-demo/master?urlpath=lab/tree/demo")
# Wait for the page to be loaded
xpath = "//button[@title='Save the notebook contents and create checkpoint']"
element = WebDriverWait(driver, 600).until(
EC.presence_of_element_located((By.XPATH, xpath))
)
time.sleep(10)
print("Page loaded")
driver.find_element_by_xpath("//div[@id='jp-MainMenu']/ul/li[4]/div[2]").click()
time.sleep(600)
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException as e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException as e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
The code has been slightly modified, as the script does not seem to wait until the page is loaded.
However, as you can see for yourself, the action to “Run Selected Cell and All Below” is not executed. The recorded actions are not correctly played back.
It hangs at the following stage:
How can this be fixed?