Selenium在ChromeDriver中没有这样的会话错误
当我从Jenkins运行脚本时,经常遇到这种会话错误。 这是什么原因? 是否有任何连接失败或是由于其他原因(我正在运行大约26个脚本,并且至少有一个脚本没有这样的会话错误)
这些脚本是不同的脚本,不会再为相同的脚本重复这样的会话错误
有时我遇到过这种情况。 我使用ChromeDriver和Laravel Dusk,而不是Selenium。 不过,我相信原因在于ChromeDriver,而不是Selenium
ChromeDriver会在文件夹中创建一些缓存文件: C:Users(yourAccountName)AppDataLocalTemp
。 在此文件夹中,您将看到许多看起来像scoped_dir1234_5678
缓存文件夹。 每个文件夹大约占用10MB。 如果Jenkins频繁运行ChromeDriver,则ChromeDriver可能会过度填充临时文件夹中的缓存文件。 您应该考虑C盘上的30-50GB缓存文件,并充分利用C驱动程序。
当我的C盘不在空间时,ChromeDriver将无法启动,然后返回错误消息“Facebook WebDriver Exception NoSuchDriverException:无此类会话”。
解决方案:
--UPDATE--
找到导致问题的另一种情况。
如果您运行相同的脚本在同一OS上同时在两个不同的实例中启动ChromeDriver,则当一个实例完成并关闭了chromedriver时,另一个chrome浏览器实例也可能会关闭。
例如,您打开两个控制台并执行chromedriver scrpit,或者您同时启动Jenkins项目。
我相信,即使你运行不同的脚本,但同时需要使用chromedriver。 由于Chrome浏览器实例关闭,其中一个脚本将“没有这样的会话”。
解:
我的情况是使用没有硒的Laravel黄昏。 我不确定当测试通过硒服务器时是否会有所不同
我遇到了这个问题,我使用chromediver_binary
和selenium
进行了python selenium端到端测试。 该错误是由于尝试多次运行driver.close()
所致。
我意识到我的方法被多次调用,我真正想要的是setUpClass
和tearDownClass
。 我会把我的最终解决方案,因为它避免了这个错误,很好地为我的目的工作。
class SeleniumTestCase(TestCase):
"""
A wrapper of TestCase which will launch a selenium server, login, and add
cookies in the setUp phase of each test.
"""
@classmethod
def setUpClass(cls, *args, **kwargs):
cls.driver = webdriver.Chrome(port=4444)
cls.driver.implicitly_wait(15)
cls.driver.maximize_window()
cls.driver.get(HOST)
# page obect I wrote which accepts the driver and can login to my app
cls.login = LoginPage(cls.driver)
cls.login.log_into_app()
@classmethod
def tearDownClass(cls):
cls.driver.close()
这允许我编写测试,如下所示:
class TestNavigation(SeleniumTestCase):
def setUp(self):
# Initialize page objects for each test
self.module1 = Module1Page(self.driver)
self.module2 = Module2Page(self.driver)
# launch page
self.driver.get(HOST)
def test_module1(self):
self.module1.nav_link.click()
self.assertEqual(self.module1.title.text, 'Module One')
def test_module2(self):
self.module2.nav_link.click()
self.assertEqual(self.module2.title.text, 'Module Two')
其中我在SeleniumTestCase
完成的初始登录持续通过了我运行的所有测试,因此我可以编写测试方法来针对单个功能进行定位,正如我以前所做的一样。
上一篇: Selenium no such session error in ChromeDriver
下一篇: align: justify text goes outside the border in RTL languages