{"record":{"id":"9e0f83fb72c95890","repo":"SeleniumHQ/selenium","slug":"value-of-a-session-permission-must-be-set-to-true","errorCode":null,"errorMessage":"Value of a session permission must be set to True or False.","messagePattern":"Value of a session permission must be set to True or False\\.","errorType":"exception","errorClass":"WebDriverException","httpStatus":null,"severity":"error","filePath":"py/selenium/webdriver/safari/webdriver.py","lineNumber":79,"sourceCode":"\n    def quit(self):\n        \"\"\"Closes the browser and shuts down the SafariDriver executable.\"\"\"\n        try:\n            super().quit()\n        except Exception:\n            # We don't care about the message because something probably has gone wrong\n            pass\n        finally:\n            if not self.service.reuse_service:\n                self.service.stop()\n\n    # safaridriver extension commands. The canonical command support matrix is here:\n    # https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/WebDriverEndpointDoc/Commands/Commands.html\n\n    # First available in Safari 11.1 and Safari Technology Preview 41.\n    def set_permission(self, permission, value):\n        if not isinstance(value, bool):\n            raise WebDriverException(\"Value of a session permission must be set to True or False.\")\n\n        payload = {permission: value}\n        self.execute(\"SET_PERMISSIONS\", {\"permissions\": payload})\n\n    # First available in Safari 11.1 and Safari Technology Preview 41.\n    def get_permission(self, permission):\n        payload = self.execute(\"GET_PERMISSIONS\")[\"value\"]\n        permissions = payload[\"permissions\"]\n        if not permissions:\n            return None\n\n        if permission not in permissions:\n            return None\n\n        value = permissions[permission]\n        if not isinstance(value, bool):\n            return None\n","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/SeleniumHQ/selenium/blob/aa36b38e696a0909e973bdf5e2f9031ffe842c4b/py/selenium/webdriver/safari/webdriver.py#L61-L97","documentation":"Safari set_permission toggles a session permission and requires a bool value; any non-bool raises WebDriverException.","triggerScenarios":"driver.set_permission('safari:permission', 1), set_permission(..., 'yes'), or set_permission(..., None).","commonSituations":"Reading a permission preference from config/env as a string or int.","solutions":["Pass True/False explicitly.","Coerce carefully - note bool('false') is True, so parse strings explicitly."],"exampleFix":"# before\ndriver.set_permission(\"clipboard\", \"true\")\n\n# after\ndriver.set_permission(\"clipboard\", True)","handlingStrategy":"validation","validationCode":"def permission_value(v) -> bool:\n    if isinstance(v, bool):\n        return v\n    if isinstance(v, str) and v.lower() in (\"true\", \"false\"):\n        return v.lower() == \"true\"\n    raise WebDriverException(\"permission value must be bool\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use native bool for permission toggles.","Parse string config values into bool before calling set_permission."],"tags":["safari","permissions","validation"],"backgroundTag":null,"analyzedSha":"aa36b38e696a0909e973bdf5e2f9031ffe842c4b","analyzedAt":"2026-08-14T02:32:32.244Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}