{"__v":0,"_id":"56902a45f7eb9a0d00f44669","category":{"__v":60,"_id":"569002f19ebef90d0087289d","pages":["56900352769f210d00132595","5690047121fcf0190071d943","569004924719c119002ce654","569004ceb700ce0d002f4b94","569023e518c3920d00be8b37","569023f748df220d004ca215","5690240af7eb9a0d00f4465d","5690241b48df220d004ca217","5690243e48df220d004ca219","56902453741e9c0d00af2fb5","56902463efcc380d0043a5a1","5690247b18c3920d00be8b39","56902492f7eb9a0d00f4465f","569024a16c49d70d00f18075","569024b2efcc380d0043a5a3","569024cc48df220d004ca21b","569024ea18c3920d00be8b3b","5690258618c3920d00be8b3f","5690259bf7eb9a0d00f44662","569025b06c49d70d00f18077","569029b418c3920d00be8b43","569029d4f7eb9a0d00f44667","569029e8e056c80d00fdec58","569029fb48df220d004ca221","56902a1c18c3920d00be8b46","56902a45f7eb9a0d00f44669","56902a6be056c80d00fdec5a","56902a78f7eb9a0d00f4466b","56902a8848df220d004ca224","56902aa018c3920d00be8b4b","56902ace6c49d70d00f18085","56902ae0741e9c0d00af2fc6","56902aee48df220d004ca226","56902af8f7eb9a0d00f44674","56902b26efcc380d0043a5b1","56902b8148df220d004ca22a","56902ba918c3920d00be8b55","56902bb96c49d70d00f1808b","56902bc818c3920d00be8b57","56902bd518c3920d00be8b59","56902be218c3920d00be8b5b","56902bf66c49d70d00f1808e","56902c05e056c80d00fdec5d","56902c196c49d70d00f18090","56902c2648df220d004ca22d","56902c34f7eb9a0d00f44678","56902c5518c3920d00be8b5d","56902c62741e9c0d00af2fcc","56902cde48df220d004ca230","56902cea741e9c0d00af2fcf","56902d0ae056c80d00fdec60","56902d20efcc380d0043a5b4","56902d3448df220d004ca232","5696c3fbf9203821005fe2fb","5696c3fb9e2d000d00947ab0","5696c3fbf9203821005fe2fa","5697efee8d2a770d00d2fd17","569802611c4dc823005426c7","56a65c82b3ffe00d00156eaf","56f01f88332da41700f24b74"],"project":"568fde81b700ce0d002f4b43","version":"568fde82b700ce0d002f4b46","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-01-08T18:41:53.562Z","from_sync":false,"order":1,"slug":"commands","title":"Commands"},"parentDoc":null,"project":"568fde81b700ce0d002f4b43","user":"568fffce769f210d0013258f","version":{"__v":23,"_id":"568fde82b700ce0d002f4b46","project":"568fde81b700ce0d002f4b43","createdAt":"2016-01-08T16:06:26.373Z","releaseDate":"2016-01-08T16:06:26.373Z","categories":["568fde82b700ce0d002f4b47","568ff0e504440a1700e4cbbd","569002f19ebef90d0087289d","569004f4769f210d00132599","5690056d9ebef90d008728a0","569005d394c5030d0028813a","5690067804440a1700e4cbe2","569137eb3c4f510d00ec9b92","56913815e56a790d008dbfe3","569138ba3c4f510d00ec9b93","5691392f3c4f510d00ec9b94","56913bbe72f2810d007e4cb0","56933b8d6ebadc0d005b71d2","56933b8d6ebadc0d005b71d3","569564facaa32519009c41e6","5696a319b6d61f0d00acfb40","5696a319a857080d0082e8e8","5697efe43503e40d0061f4d1","5697efe48d2a770d00d2fd16","569e9597ffccd10d00a05c59","56a7a1523d33bc2100793d5c","56a7a32ecf6d771700baeee8","56b8b0f7ddeb231700e69825"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":false,"codename":"bar","version_clean":"1.0.0","version":"1.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-01-08T21:29:41.626Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":32,"body":"`cy.invoke` invokes functions on the current subject.\n\nIf you want to call a regular property that is not a function on the current subject, use [`cy.its`](https://on.cypress.io/api/its).\n\n| | |\n|--- | --- |\n| **Returns** | the return value of the invoked property |\n| **Timeout** | `cy.invoke` cannot timeout unless you've added assertions. The assertions will retry for the duration of [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#section-timeouts)  |\n\n***\n\n# [cy.invoke( *functionName* )](#section-function-usage)\n\nInvokes the function with the specified name\n\n***\n\n# [cy.invoke( *functionName*, **arguments* )](#section-function-with-arguments-usage)\n\nInvokes the function with the specified name and forwards any additional arguments to the function call. There are no limits to the number of arguments.\n\n***\n\n# Function Usage\n\n## Assert on a function after invoke\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"var fn = function(){\\n  return \\\"bar\\\"\\n}\\n\\ncy.wrap({foo: fn}).invoke(\\\"foo\\\").should(\\\"eq\\\", \\\"bar\\\") // true\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n## Properties that are functions are invoked\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"// force a hidden div to be 'display: block'\\n// so we can interact with its children elements\\ncy\\n  .get(\\\"div.container\\\").should(\\\"be.hidden\\\") // true\\n\\n  .invoke(\\\"show\\\") // call the jquery method 'show' on the 'div.container'\\n    .should(\\\"be.visible\\\") // true\\n    .find(\\\"input\\\").type(\\\"Cypress is great\\\")\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n***\n\n## Useful for 3rd party plugins\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"// as a slightly verbose approach\\ncy.get(\\\"input\\\").invoke(\\\"getKendoDropDownList\\\").then(function(dropDownList){\\n  // the return of $input.getKendoDropDownList() has now become the new subject\\n\\n  // whatever the select method returns becomes the next subject after this\\n  return dropDownList.select(\\\"apples\\\")\\n})\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n## We can rewrite the previous example in a more terse way and add an assertion.\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"cy\\n  .get(\\\"input\\\")\\n    .invoke(\\\"getKendoDropDownList\\\")\\n    .invoke(\\\"select\\\", \\\"apples\\\")\\n  .its(\\\"val\\\").should(\\\"match\\\", /apples/)\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n***\n\n# Function with Arguments Usage\n\n## Send specific arguments to the function\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"var fn = function(a, b, c){\\n  return a + b + c\\n}\\n\\ncy\\n  .wrap({sum: fn})\\n  .invoke(\\\"sum\\\", 2, 4, 6)\\n    .should(\\\"be.gt\\\", 10) // true\\n    .and(\\\"be.lt\\\", 20) // true\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n## Arguments are automatically forwarded to the function\n\n[block:code]\n{\n    \"codes\": [\n        {\n            \"code\": \"cy\\n  .get(\\\"img\\\").invoke(\\\"attr\\\", \\\"src\\\")\\n    .should(\\\"include\\\", \\\"myLogo\\\")\\n\",\n            \"language\": \"javascript\"\n        }\n    ]\n}\n[/block]\n\n***\n\n# Related\n\n- [its](https://on.cypress.io/api/its)\n- [wrap](https://on.cypress.io/api/wrap)\n- [then](https://on.cypress.io/api/then)","excerpt":"Call properties on the current subject","slug":"invoke","type":"basic","title":"invoke"}

invoke

Call properties on the current subject

`cy.invoke` invokes functions on the current subject. If you want to call a regular property that is not a function on the current subject, use [`cy.its`](https://on.cypress.io/api/its). | | | |--- | --- | | **Returns** | the return value of the invoked property | | **Timeout** | `cy.invoke` cannot timeout unless you've added assertions. The assertions will retry for the duration of [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#section-timeouts) | *** # [cy.invoke( *functionName* )](#section-function-usage) Invokes the function with the specified name *** # [cy.invoke( *functionName*, **arguments* )](#section-function-with-arguments-usage) Invokes the function with the specified name and forwards any additional arguments to the function call. There are no limits to the number of arguments. *** # Function Usage ## Assert on a function after invoke [block:code] { "codes": [ { "code": "var fn = function(){\n return \"bar\"\n}\n\ncy.wrap({foo: fn}).invoke(\"foo\").should(\"eq\", \"bar\") // true\n", "language": "javascript" } ] } [/block] ## Properties that are functions are invoked [block:code] { "codes": [ { "code": "// force a hidden div to be 'display: block'\n// so we can interact with its children elements\ncy\n .get(\"div.container\").should(\"be.hidden\") // true\n\n .invoke(\"show\") // call the jquery method 'show' on the 'div.container'\n .should(\"be.visible\") // true\n .find(\"input\").type(\"Cypress is great\")\n", "language": "javascript" } ] } [/block] *** ## Useful for 3rd party plugins [block:code] { "codes": [ { "code": "// as a slightly verbose approach\ncy.get(\"input\").invoke(\"getKendoDropDownList\").then(function(dropDownList){\n // the return of $input.getKendoDropDownList() has now become the new subject\n\n // whatever the select method returns becomes the next subject after this\n return dropDownList.select(\"apples\")\n})\n", "language": "javascript" } ] } [/block] ## We can rewrite the previous example in a more terse way and add an assertion. [block:code] { "codes": [ { "code": "cy\n .get(\"input\")\n .invoke(\"getKendoDropDownList\")\n .invoke(\"select\", \"apples\")\n .its(\"val\").should(\"match\", /apples/)\n", "language": "javascript" } ] } [/block] *** # Function with Arguments Usage ## Send specific arguments to the function [block:code] { "codes": [ { "code": "var fn = function(a, b, c){\n return a + b + c\n}\n\ncy\n .wrap({sum: fn})\n .invoke(\"sum\", 2, 4, 6)\n .should(\"be.gt\", 10) // true\n .and(\"be.lt\", 20) // true\n", "language": "javascript" } ] } [/block] ## Arguments are automatically forwarded to the function [block:code] { "codes": [ { "code": "cy\n .get(\"img\").invoke(\"attr\", \"src\")\n .should(\"include\", \"myLogo\")\n", "language": "javascript" } ] } [/block] *** # Related - [its](https://on.cypress.io/api/its) - [wrap](https://on.cypress.io/api/wrap) - [then](https://on.cypress.io/api/then)