A variable is a named or differently addressable area of memory that can be used to access data. In simple words, a variable is a data store. You can put any value here (for example, a number, a line, or another data type). Variables store certain data that can later be used in the program.
Variable is flexible:
- it can store information;
- you can extract information from it, which will not affect the value of the variable itself;
- new data can be written into it.
How to create a variable in TESTLUM ?
Out of the <web>
You can specify the type and value of variable, that you want to use. There are 6 types of variables:
- sql
- expression
- path
- file
- generate
- constant
Variable with sql query example:
You can create variable from the result of SQL query.
<var comment="Create variable with sql query" name="PRODUCT_ID"> <sql dbType="MYSQL" alias="SHOPIZER"> <query> SELECT PRODUCT_ID FROM PRODUCT WHERE SKU = 'TB12345' </query> </sql></var>Variables with constant and expression example:
You can create both constant variables and variables with expressions, as shown in the example above.
<var comment="Create variable with constant value" name="email"> <constant value="'test@gmail.com'"/></var> <var comment="Create variable with expression" name="t"> <expression value="'{{email}}'.toString.charAt(0)"/></var>Variable with generate example:
You can create a variable with a specified length and value, using options like alphabetic, alphanumeric, numeric, or randomRegexp.
<var comment="Create a variable for the customer's name" name="customerName"> <generate length="6"> <alphabetic/> </generate> </var>Variable from path example:
You can create a variable with a value from the previous 'expected' file, using jpath.
<var comment="Create a variable for the value 'product_id Referring via 'jpath' to the previous expected_file to get the desired value" name="PRODUCT_ID"> <path value="$.[0].content.[0].PRODUCT_ID"/></var><http comment="Use the received variable in the 'http' request to get information about a specific product" alias="SHOPIZER"> <get endpoint="/api/v1/products/{{PRODUCT_ID}}"> <response code="200" file="expected_4.json"/> </get></http>You can also create a variable with a html from the previous 'expected' file, using jpath and then create variable for URL inside html from this html.
<var comment="Create var from file" name="jsonFromFile"> <file fileName="custom_data_4.json"/> </var> <var comment="Create var for html content from jsonFromFile variable" name="htmlFromExpectedVar"> <path value="$.[0].content.[0].html" from="jsonFromFile"/> </var> <var comment="Create var for url inside html from htmlFromExpectedVar variable" name="urlFromHtml"> <path value="//a[@href='https://example.com']/@href" from="htmlFromExpectedVar"/> </var> <assert comment="Assert that urlFromHtml variable equals to actual url from html content"> <equal comment="Assert for check that two contents is equal"> <content>{{urlFromHtml}}</content> <content>https://example.com</content> </equal> </assert>Variable from file example:
<var comment="Create variable from file" name="var"> <file fileName="text.txt"/></var>Inside the <web>
There are 8 types of variables inside the <web>:
- sql
- expression
- path
- file
- dom
- url
- cookie
- element
Variable with DOM example:
You can create variable with full DOM of the current page or with DOM of the specific element from the current page.
<var comment="Create variable with full DOM of the current page" name="fullDOM"> <dom/></var><var comment="Create variable with dom of the specific element" name="dom"> <dom xpath="//img[@class='img-fluid']"/></var>Variable wtih URL example:
You can fetch URL of the current page and create variable with it.
<var comment="Create variable with URL of the current page" name="url"> <url/></var>Variable with cookie example:
Also, you can fetch cookie and create variable with it as well.
<var comment="Create variable with cookie" name="cookie"> <cookie/></var>Variable with element example:
If element is present on the page, then value of the variable will be 'true'. Otherwise, value will be 'false'.
With 'attribute' you can create a variable from an element attribute.
<var comment="Check that element is present on the page" name="elemIsPresent"> <element> <present locatorId="webVar.banner"/> </element></var><var comment="Check that element isn't present on the page" name="elemNotPresent"> <element> <present locatorId="webVar.inputPassword"/> </element></var><var comment="Check that element isn't present on the page" name="openModaName"> <element> <attribute name="innerHTML" locator="modal.openModalBtn"/> </element></var>