当前位置: 首页 > 知识库问答 >
问题:

WebDriverException:消息:通过Python unittest模块执行testcases时没有这样的会话

羿博延
2023-03-14
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()

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

回溯(最近一次调用):文件“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行,在implicitly_wait'ms':float(time_to_wait)*1000})文件“error_handler.check_response(响应)文件”C:\users\pardeep\appdata\local\programs\python\python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py“,第242行,在check_response中引发exception_class(消息、屏幕、堆栈跟踪)selenium.common.exceptions.webdriverexception:消息:没有这样的会话(驱动程序信息:Chromedriver=2.38.552522(437E6FBedFA8762DEC75E2C5B3DDB86763DC9DCB),平台=Windows NT 10.0.14393 x86_64)

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

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

FAILED (errors=6)

共有1个答案

栾和风
2023-03-14

在使用Python和unittest时,您需要注意以下事项:

>

  • def setUp(self):setUp()是初始化的一部分,并且在您要在此testcase类中编写的每个测试函数之前都将调用此方法。
  • maximize_window():不使用maximize_window()使用Chrome.Options类最大化浏览器窗口。
  • implicitly_wait():隐式等待一旦设置,隐式等待将为WebDriver对象实例的生命周期设置。
  • 始终在TearDown(){}方法中调用driver.quit()以正常关闭和销毁WebDriver和Web客户端实例。
  • 这里是您自己的代码块,上面提到了一些小调整:

    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
    
    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
    

  •  类似资料:
    • Alamofire一直在为一个iPhone项目工作。 我手动安装了ALAMOFIRE,而不是可可豆 现在我已经添加了一个手表应用程序目标以下这些步骤-https://developer.apple.com/library/content/documentation/General/Conceptual/WatchKitProgrammingGuide/ConfiguringYourXcodePro

    • 问题内容: 我看到了这个问题,但仍然无法导入框架并在Xcode 7 beta 2(7A121l)中使用它。 所以目前我正在尝试通过迦太基使用Result。将其添加到 具有Binaries 和 Embed Frameworks的 Build Phases / Link Binary后, 我能够成功编译,但是出现错误提示(是,它表示成功,然后出现错误:S): 关于导入: 该版本可以运行和编译,但是例如

    • 我有@test Annotaion的测试市场。但是当我运行测试用例时,它显示测试运行:0,失败:0,跳过:0我正在从Eclipse中运行测试用例。我已经在Eclipse中安装了testng插件。 @test中的属性是自定义的。 TestNG版本:6.8.0

    • 问题内容: 我正在尝试设置 Jenkins 从属服务器,以构建使用名为“ Freddy”的Swift窗格的Swift项目。 问题是构建因错误而失败: 错误:没有这样的模块“ Freddy” 这是我的Podfile: CocoaPods版本0.39.0 Xcode 7.2.1( 直接从Xcode构建时没有问题 ) PS。在我将其替换为AFNetworking之前,Alamofire吊舱也发生了同样的

    • 我有一个混合了objective-c和Swift的项目,我试图为它编写单元测试。我的项目名称是:Alphaproject我的产品模块名称是:Alphaproject我在我的主要目标(Alphaproject)中设置为YES Defines module,并设置为YES EnableTestability,以便仅在此同一目标中进行调试。 在我的测试类中,我尝试导入我的产品模块名称: @可测试导入项目

    • 问题内容: 我想知道是否有一种方法可以直接通过Java执行像mongo这样的查询,即我们将像mongoDB这样的查询作为字符串提供给mongoDB的Java驱动程序中的函数作为字符串对象,并返回DBCursor对象。就像是: 注意:不是内置函数。它仅用于演示目的。那么,java api中是否有将json字符串转换为实例的函数?谢谢。 问题答案: 您在此处显示的不是JSON,而是嵌入式MongoDB