【问题标题】:selenium.common.exceptions.WebDriverException: Message: no such session while executing testcases through Python unittest moduleselenium.common.exceptions.WebDriverException:消息:通过 Python unittest 模块执行测试用例时没有这样的会话
【发布时间】:2018-11-06 16:22:52
【问题描述】:
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()

谁能帮我解决这个问题?

我正在尝试运行超过 1 个函数并收到错误:

查找文件...完成。 导入测试模块...完成。

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

错误:test_home (kenZen.KenLogin.KenLogin)

Traceback(最近一次调用最后一次):文件 “E:\Learning\Workplace\kenZen\kenZen\KenLogin.py”,第 37 行,在 test_home driver.implicitly_wait(2000) 文件“C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, 第 895 行,在隐式等待中 'ms': float(time_to_wait) * 1000}) 文件“C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, 第 314 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such 会话(驱动程序信息:chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台=Windows NT 10.0.14393 x86_64)

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

错误:test_home (kenZen.KenLogin.KenLogin)

Traceback(最近一次调用最后一次):文件 “E:\Learning\Workplace\kenZen\kenZen\KenLogin.py”,第 60 行,在 拆除 driver.close() 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 681 行,关闭 self.execute(Command.CLOSE) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 314 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such 会话(驱动程序信息:chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台=Windows NT 10.0.14393 x86_64)

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

错误:test_login (kenZen.KenLogin.KenLogin)

Traceback(最近一次调用最后一次):文件 “E:\Learning\Workplace\kenZen\kenZen\KenLogin.py”,第 21 行,在 测试登录 driver.implicitly_wait(2000) 文件“C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, 第 895 行,在隐式等待中 'ms': float(time_to_wait) * 1000}) 文件“C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, 第 314 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such 会话(驱动程序信息:chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台=Windows NT 10.0.14393 x86_64)

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

错误:test_login (kenZen.KenLogin.KenLogin)

Traceback(最近一次调用最后一次):文件 “E:\Learning\Workplace\kenZen\kenZen\KenLogin.py”,第 60 行,在 拆除 driver.close() 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 681 行,关闭 self.execute(Command.CLOSE) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 314 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such 会话(驱动程序信息:chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台=Windows NT 10.0.14393 x86_64)

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

错误:test_newteam (kenZen.KenLogin.KenLogin)

Traceback(最近一次调用最后一次):文件 “E:\Learning\Workplace\kenZen\kenZen\KenLogin.py”,第 46 行,在 test_newteam addteam = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div/div[1]/ul[2]/li/button") 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 387 行,在 find_element_by_xpath 中 返回 self.find_element(by=By.XPATH, value=xpath) 文件“C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver. py", 第 957 行,在 find_element 中 'value': value})['value'] 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 314 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such 会话(驱动程序信息:chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台=Windows NT 10.0.14393 x86_64)

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

错误:test_newteam (kenZen.KenLogin.KenLogin)

Traceback(最近一次调用最后一次):文件 “E:\Learning\Workplace\kenZen\kenZen\KenLogin.py”,第 60 行,在 拆除 driver.close() 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 681 行,关闭 self.execute(Command.CLOSE) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 314 行,在执行中 self.error_handler.check_response(response) 文件 "C:\Users\Pardeep\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 第 242 行,在 check_response 中 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: no such 会话(驱动程序信息:chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台=Windows NT 10.0.14393 x86_64)

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

FAILED (errors=6)

【问题讨论】:

    标签: python google-chrome selenium-webdriver selenium-chromedriver python-unittest


    【解决方案1】:

    在使用Pythonunittest 时,您需要注意以下事项:

    • def setUp(self)setUp() 是初始化的一部分,这个方法会在你要在这个测试用例类中编写的每个测试函数之前被调用。李>
    • maximize_window():不要使用maximize_window(),而是使用chrome.options类来最大化浏览器窗口。
    • implicitly_wait()Implicit Wait 设置后,隐式等待 将在 WebDriver 对象实例的生命周期内设置。
    • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例。
    • 这是你自己的代码块,上面提到了一些小的调整:

      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()
      
    • 控制台输出:

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

    根据您的评论更新,如果您希望仅调用一次 setup() 函数,您可以使用 setUpClasstearDownClass 类方法,它们在执行类时在测试之前和之后执行。

    • 这是你自己的代码块,上面提到了一些小的调整:

      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()
      
    • 控制台输出:

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

    参考文献

    【讨论】:

    • 如果我不想一次又一次地调用 setup() 函数?
    • @PardeepKochhar 查看我的答案更新并告诉我状态
    猜你喜欢
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2019-06-18
    • 2022-10-18
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多