# Save HeadHunter Resumes

Let's consider an example of a robot that saves resumes from the hh.ru website.

The robot project consists of a single diagram.

The project diagram looks like this (for convenience, the blocks in the diagram are numbered):

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfoJ1G5-ad76k0LtUnBDgVzLni8eLdVUh9hWB8cbJ0HIG_eu7vVyP_qDIieOp33xO39N7rHPEHC1d1PGfl1ZUVtBZwFxFbOekwrWIAiinYWM7_FP3R4_SaZvYTlFWMpVOvtuetTbQ?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcmitzg0qRtCXKpMrpFlK08UyZAowBWjPq2aCvXsPfcC-lHIMKH94BX9RdqmlGzA_RkY4CcxI6882rLd0porEVjSk--eV_yP7j7cpqhyT6uRNunn0lIA3LBwmfIvBbR4F3bhbpd?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

1. **Block "Start"** (any diagram begins with this block).
2. **Block "Text Input Window"** allows displaying a modal dialog window intended for receiving information from the user. The following properties are specified for this block:

* Title (the text that will be displayed in the dialog window's title. In this case: “Sherpa RPA”);
* Message (the text that will be displayed inside the dialog window. In this case: “Enter search query:”)

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdbtGm2IcJGlLEp43uVGKz33zPscZimfZDyr1VGzbkFfxkuRCcX39d1VuNcKQMTOJ7kiLqLvy0--qTzGHWYNJHbZU1c7WrPVTJvAeHWCE-8HUpKvy2xbVjj9cRTkp8eiHQ56_5t9g?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

3. **Block "Encode URL String"** allows encoding a string for transmission in a URL. For this block, the input string is “Text”, and the output is the resulting string “Result”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcaUmaN5lBFwM7ih1yku5l0jsz38BTB4Fb1ni1tqPFUdsr3QotR9YzaALIa-M-NSYy5gNCJhW6VIBufFuXLNXYPUd607FdC1MfvEa74XZTAjYh5fW3uW4R-xddzDUKZ_Z6F8gh7zA?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

4. **Block "Assign Value to Variable"** sets new values for one or more variables. In this case, two values are specified in the properties to be assigned to two variables, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfsYQWggFoEucCu8DxnbT3-tpGxclOxJg_1rYf5sAWvEM8gFHc8Tk56DLmEruYp48nNYk4I-xYFjg-Mfe1qaNTdPOnZD_7yPhvgNo7jOelzkDvZCfKYAcxG4BSzZBwCCEy3rWIf5Q?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

5. **Block "Launch Chrome"** allows launching the Google Chrome browser. The following properties are specified for this block:

* URL (the address of the page to be opened upon launch, specified using a variable);
* Current tab (if the flag is set, the page will open in the currently selected tab of the browser);
* Timeout (the time to wait for the application to launch and the tab to load in seconds).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcpc7wE9Wkf8pirj0_4P7GcDyNOJerB3p6FENehumDWsXbTiZvqMXd8iVt1Mj_W9XW4BWEXjNl_rJlycCpHRUJbqFXotuVT3LvXkYpDN76vrkccnps5kspY1jxcXpaNvISK8Kb-?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

6. **Block "Count Elements"** allows obtaining the number of similar elements on a web page based on a specified selector. The following properties are specified for this block:

* Selector (the identifier of the browser window and the web page element, common for all searched similar elements);
* Process ID (a variable that stores the process and tab ID used by this block);
* Timeout (the maximum time to count elements in seconds).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdkh2h4PPTz66h-QBp4QLMA4WzFVZKfZCrXK57Y-BDjLkslDnLBJMjgIzMCp4MKM-MVQj0EVLanpAvgkb-GTDvPJ1PkYBjJblp1egDj4QxsdT5Q3sjDZRBsSwv_p_L7ILBBvoPXyw?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

7. **Block "Loop"** allows repeating a chain of actions (blocks) several times while counting the number of iterations of the loop, recording the current count in a special variable (specified in the “Loop” property), which can then be used in other blocks. Upon the first entry into the block, the value of the variable from the “Loop” property is set to the “Initial Value” (in this case, it is 0), and then the scenario execution continues towards the exit “Loop” of this block (into the so-called “loop body”). As soon as the scenario execution reaches this block again, the value of the “Loop” variable will increase by the “Step” value (in this case, it is 1), and the transition to the “Loop” exit will occur again. Once the value of the “Loop” variable becomes greater than or equal to the “Final Value” (in this case, it is set to the variable $Count), the scenario execution will continue towards the lower exit of the block. Don’t forget to connect the exit of the last block in the loop body to the entry of this block or any of the preceding blocks.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfFhv3Cc1YZAkXrpia7Fb7VbJoIOgux1MuSEVj88XmoWfgIBol7QQ4iCMhH0DP69c_LCgZFbwpinR1mJpGQYlpdi8OCNIvtD6Z1O2ETYla8IvEXpNArLQye_8X0maw2mGOKIOxMNQ?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

8. **Block "Log"** allows outputting arbitrary messages and/or variable values to the log during the robot's scenario execution. The property “Value” is specified for this block. A text constant is indicated in quotes, and the variable name starts with the $ symbol. That is, this block logs the index of the processed page.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfDYllrYy0KGOMiBvdhfTSZNyrp3slXpBT84gRlewiPa84fGFTDN8eO-BDgoQxnFAe0aLtX_X3sHBp8pnS3r_gZCBeCun1SsKMeGKPHoWXIf1CQ6PmJWPVDo6SESxALwrwfEPC2Bg?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

9. **Block "Assign Value to Variable"** sets new values for one or more variables. In this case, one value is specified in the properties to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXclCcT0pnune75OeDM_Wl0C-QJ58LuN-7AiuVPzKK2EMvQKl7GjoDwQE-u1k51weNT_Zrsqu46BfjmfjxSjY6Zt84XBCQchmHh5VujWCIgdqKqrSiDjT3ZXDfXTeKbKUolvbD0sCg?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

10. **Block "Condition"** checks the specified condition for truth, after which the scenario execution continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of the variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of the variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”.

In this case, the condition is set as: $countpage==0. That is, the variable indicating the page number is equal to zero.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXetXQ5Ob-M9lCp3HzRjNeVaILutpQ2z-9RxTabW6PsktJbNUpYeedb-rnB7wT1wEau1rwuy2a_JwUI_MZ4nldWnnFwirxBC6-N2lHWbxNN5qbKaEyzg0H4utpLOmExBYHSZe6Hp?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

11. **Block "Assign Value to Variable"** sets new values for one or more variables. In this case, two values are specified in the properties to be assigned to two variables, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXedGqCnIfQwyLFfqJdtlhv32SqeQBt8rvY0qe2TMnORJEEPYaat-NG-xdXUe5wzOlEw4xgVYP7FjpuSGwR5bxEdN4RZfqYAE2AilU139DU3BeFLIAfCvYN56zA404a5J4acbnFR5Q?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

Blocks 12 - 18 are partially recorded using the “[Recording](https://docs.sherparpa.ru/en/sherpa-rpa/sherpa-designer/rabota-v-sherpa-designer/osnovnoe-menyu/panel-razrabotka/menyu-zapis/zapis-deistvii-polzovatelya)” tool. These blocks contain a series of emulated clicks and key presses, resulting in saving the entire resume in an HTML file.

19. **Block "Condition"** checks the specified condition for truth, after which the scenario execution continues towards the “Yes” exit (if the condition is met) or towards the “No” exit (if the condition is not met).

The condition is written in the format: “variable” equals (==)/ greater than (>)/ less than (<) “value”.

For example: $a == “Hello”, that is, if the value of the variable $a is equal to “Hello”, then the exit is “Yes”, otherwise – the exit is “No”.

$Result > 5, that is, if the value of the variable $Result is less than 5, then the exit is “Yes”, otherwise – the exit is “No”.

In this case, the condition is set as: $origfilename != "". That is, the variable is not empty.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf7ukTWXAoddcAAuebmjNypBnrUzPXMyeTlPwhlqNOC7OFcbcpmvIosHxjtofAbQjtH9x3hGrhFYyrtqIkQwV9aZBA3MtOztQ1I24nUq1hG3xNBHjsgkbz-InwfGJBHDM4Oe7hbIA?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

20. **Block "Assign Value to Variable"** sets new values for one or more variables. In this case, one value is specified in the properties to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfu-Uop1smQc92dvX4Y1VkbLf41zLmFS9bi26xFO7F_oJJ6vrzcE85OhCHFWlxDNve5DnNggOnKLVOnvJuU_AQTzagYRhRONVAyNC-9tHrw9BO3KEbz5nVjckdkcRg32mk6dkmEdQ?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

21. **Block "Random Number"** generates a random number with specified parameters. The following properties are specified for this block:

* Min. value (the random number will not be less than this value);
* Max. value (the random number will not be greater than this value);
* Step (the step of the random number).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdLC_EMHo4KJN-JNCDKuDF8OZx5qeHM2P3rlYJbZUDGg_3LK3pJ7GZll92mZiskUP9Mr6z9zasXtlTmdSd6ET7E2BQzkuu8aIoG15iW6KKUJXmF3qpbRmMusAuufcbDZfYJEynEqw?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

22. **Block "Rename File/Folder"** allows assigning a new name to the specified file or folder. In this case, to a file. The following properties are specified for this block:

* Path (the path to the file whose name needs to be changed);
* Postfix (the postfix that will be added to the file name);
* Temporary (if the flag is set, the renaming of the file will only occur within the program's operation, and no changes will be made to the file system.)

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd-u4fxlj4bmdToFp91PTWgZeobF54kMCJgqfaE7C_G79Yd3hPT_balbozK7hpKzP_9-ZbUJ-rXkWZv-tmPalH1r3T-prWJzsbRCe-RMVyzUgjB9ZWrbweL-QriaLOvM7UM1Vu9Nw?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

23. **Block "Assign Value to Variable"** sets new values for one or more variables. In this case, one value is specified in the properties to be assigned to one variable, respectively.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfWLfVnAHJCl7nxl1W6F0zSaCGD3H9EOnjSlgpjL2tAN2hjEDcqpWqdqKnY4IPkbqk5N8aCD1G6L11nEgOmUmNEQ48YMElhKJeLZbceWM5T0OFw3XyL7swkVFVhOVGtATs7woKEcw?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

Blocks 24 - 25 contain a series of emulated key presses, resulting in entering the file name in the Google Chrome save window.

26. **Block "Mouse Click"** is recorded using the “Recording” tool. This block emulates a mouse click, resulting in navigating to the next page.
27. **Block "Clear Selector Cache"** allows clearing the internal cache of selectors. When using selectors to speed up the search for elements on the page, an internal cache is used. Information about the element is stored in the cache after it is successfully identified, and in the future, when searching for an element, the cache is checked first. If there is information in the cache for this selector, it is retrieved from there, which significantly speeds up the robot's operation. However, in some cases, this cache can negatively affect the scenario's operation. This is often observed during cyclic processing of similar elements on a single page, such as search results. In such cases, we recommend clearing the cache at the start of each iteration of processing similar elements on the page.
28. **Block "Close Browser Tab"** allows closing the specified tab of the specified browser. For this block, the process ID is specified (a variable that stores the process and tab ID used by this block).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf_RUtD_XltvrsttIUQyokm_BQC6KNQr3TT-4u-ruqHxQoURsBTd7g4HNi4K6J6ICfS39vH1uJtPM4nxPZ6Z3JJatRY0c22lLX3KnMFmr-8v-2iaF0f-eZ6rZzm3ZUlCPWuXk-QFQ?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

29. **Block "Pause"** suspends the execution of the scenario for a specified time. The following properties are specified for this block:

* Unit of measurement (the unit of measurement in which the duration of the pause is specified);
* Duration (the value of the time interval in the specified units of measurement);
* Start immediately (the set flag enables the application of the delay immediately upon the first pass of this block from the moment the robot's scenario is launched).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcEZqql1OVckfJAqO3HLIW1oin15rxToZi9ieW7Ek3_QtsPVzHySdxMhNlya9EeRrDAbtllH9GnogajyMk1rmtGVL_Be8kjYYfltowq2UpiKFbdMf4dyrLxnAKDA-Ylxrx8xPV-0Q?key=7s1g-lT9vbX__uGNSqzDxVxY" alt=""><figcaption></figcaption></figure>

30. **Block "End"** (this block concludes the scenario execution or returns the subprocess diagram to the main process).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/en/sherpa-rpa/sherpa-designer/primery-robotov/save-headhunter-resumes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
