1
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class KenLogin(unittest.TestCase):

    def test_globe(self):

        global driver

        driver = webdriver.Chrome(executable_path='E:\Learning\chromedriver.exe')
        driver.maximize_window()

    def test_login(self):



        driver.implicitly_wait(2000)
        driver.get("http://qa.kenzen.com")
        username = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/div[1]/input")
        password = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/div[2]/input")

        username.send_keys("pardeepk@clovity.com")
        password.send_keys("Kenzen@123")

        button = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/button")

        button.send_keys(Keys.ENTER)
        print("Login Pass")


    def test_home(self):

        driver.implicitly_wait(2000)

        teamsummary = driver.find_element_by_id("teamsummary")

        teamsummary.click()
        print("Home Pass")

    def test_newteam(self):

        addteam = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div/div[1]/ul[2]/li/button")

        addteam.click()

        teamname = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div/div[2]/div/div[1]/input")#.send_keys(data)

        admin = driver.find_element_by_id("administrator")
        admin.send_keys("qa@kenzen.com,qa1@kenzen.com")
        addteambutton = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div/div[2]/div/div[6]/button")
        addteambutton.click()

        print("Team Added")

    def tearDown(self):
        driver.close()


if __name__ == "__main__":
    unittest.main()

Can anyone please help me how to resolve this issue?

I am trying to run more than 1 functions and getting the error :

Finding files... done. Importing test modules ... done.

======================================================================

ERROR: test_home (kenZen.KenLogin.KenLogin)

Traceback (most recent call last): File "E:\Learning\Workplace\kenZen\kenZen\KenLogin.py", line 37, in test_home driver.implicitly_wait(2000) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 895, in implicitly_wait 'ms': float(time_to_wait) * 1000}) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute self.error_handler.check_response(response) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such session (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.14393 x86_64)

======================================================================

ERROR: test_home (kenZen.KenLogin.KenLogin)

Traceback (most recent call last): File "E:\Learning\Workplace\kenZen\kenZen\KenLogin.py", line 60, in tearDown driver.close() File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 681, in close self.execute(Command.CLOSE) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute self.error_handler.check_response(response) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such session (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.14393 x86_64)

======================================================================

ERROR: test_login (kenZen.KenLogin.KenLogin)

Traceback (most recent call last): File "E:\Learning\Workplace\kenZen\kenZen\KenLogin.py", line 21, in test_login driver.implicitly_wait(2000) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 895, in implicitly_wait 'ms': float(time_to_wait) * 1000}) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute self.error_handler.check_response(response) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such session (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.14393 x86_64)

======================================================================

ERROR: test_login (kenZen.KenLogin.KenLogin)

Traceback (most recent call last): File "E:\Learning\Workplace\kenZen\kenZen\KenLogin.py", line 60, in tearDown driver.close() File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 681, in close self.execute(Command.CLOSE) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute self.error_handler.check_response(response) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such session (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.14393 x86_64)

======================================================================

ERROR: test_newteam (kenZen.KenLogin.KenLogin)

Traceback (most recent call last): File "E:\Learning\Workplace\kenZen\kenZen\KenLogin.py", line 46, in test_newteam addteam = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div/div[1]/ul[2]/li/button") File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 387, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 957, in find_element 'value': value})['value'] File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute self.error_handler.check_response(response) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such session (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.14393 x86_64)

======================================================================

ERROR: test_newteam (kenZen.KenLogin.KenLogin)

Traceback (most recent call last): File "E:\Learning\Workplace\kenZen\kenZen\KenLogin.py", line 60, in tearDown driver.close() File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 681, in close self.execute(Command.CLOSE) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute self.error_handler.check_response(response) File "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such session (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.14393 x86_64)

----------------------------------------------------------------------
Ran 4 tests in 7.928s

FAILED (errors=6)
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352

1 Answers1

1

While working with Python and unittest you need to take care of the following:

  • def setUp(self): The setUp() is the part of initialization and this method will get called before every test function which you are going to write in this testcase class.
  • maximize_window(): Instead of using maximize_window() use chrome.options class to maximize the browser window.
  • implicitly_wait(): Implicit Wait once set, the implicit wait is set for the life of the WebDriver object instance.
  • Always invoke driver.quit() within tearDown(){} method to close & destroy the WebDriver and Web Client instances gracefully.
  • Here is your own code block with the minor tweaks mentioned above:

    import unittest
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    class KenLogin(unittest.TestCase):
    
        def setUp(self):
            global driver
            options = Options()
            options.add_argument("start-maximized")
            options.add_argument("disable-infobars")
            options.add_argument("--disable-extensions")
            cap = DesiredCapabilities().CHROME
            cap = options.to_capabilities()
            self.driver = webdriver.Chrome(desired_capabilities=cap, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    
        def test_login(self):
            self.driver.implicitly_wait(2000)
            self.driver.get("http://qa.kenzen.com")
            username = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/div[1]/input")
            password = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/div[2]/input")
            username.send_keys("pardeepk@clovity.com")
            password.send_keys("Kenzen@123")
            button = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/button")
            button.send_keys(Keys.ENTER)
            print("Login Pass")
    
        def tearDown(self):
            self.driver.quit()
    
    
    if __name__ == "__main__":
        unittest.main()
    
  • Console Output:

    Login Pass
    .
    ----------------------------------------------------------------------
    Ran 1 test in 13.731s
    
    OK
    

As per your comment update if you want setup() function to be called only once, you can use the setUpClass and tearDownClass class methods which gets executed before and after the tests when a class gets executed.

  • Here is your own code block with the minor tweaks mentioned above:

    import unittest
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    class KenLogin(unittest.TestCase):
    
        @classmethod
        def setUpClass(self):
            global driver
            options = Options()
            options.add_argument("start-maximized")
            options.add_argument("disable-infobars")
            options.add_argument("--disable-extensions")
            cap = DesiredCapabilities().CHROME
            cap = options.to_capabilities()
            self.driver = webdriver.Chrome(desired_capabilities=cap, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    
        def test_login(self):
            self.driver.implicitly_wait(2000)
            self.driver.get("http://qa.kenzen.com")
            username = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/div[1]/input")
            password = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/div[2]/input")
            username.send_keys("pardeepk@clovity.com")
            password.send_keys("Kenzen@123")
            button = self.driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[2]/form/button")
            button.send_keys(Keys.ENTER)
            print("ENTER Key pressed")
    
        def test_print_success(self):
            print("Login Pass")
    
        @classmethod
        def tearDownClass(self):
            self.driver.quit()
    
    
    if __name__ == "__main__":
        unittest.main()
    
  • Console Output:

    ENTER Key pressed
    .Login Pass
    .
    ----------------------------------------------------------------------
    Ran 2 tests in 18.187s
    
    OK
    

References

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352