[{"data":1,"prerenderedAt":451},["ShallowReactive",2],{"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0":3,"doc-\u002Fdocs\u002Frecording\u002Ffiles":17,"docs-nav":312,"nav-compare":431,"editor-1e6nd4y":441,"editor-yt6mh7":443,"editor-109e0ha":445,"editor-1r3yofb":447,"editor-ckogot":449},["Island",4],{"key":5,"result":6},"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0",{"head":7},{"style":8},[9,11,13,15],{"innerHTML":10},".site-footer[data-v-8bb1d4ae]{border-top:1px solid var(--line);background:var(--chrome);padding:var(--sp-8) var(--gutter) var(--sp-10);gap:var(--sp-6);flex-direction:column;display:flex}.links[data-v-8bb1d4ae]{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));max-width:62rem;display:grid}.links a[data-v-8bb1d4ae]{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);border-bottom:1px solid var(--line);display:flex}.links a[data-v-8bb1d4ae]:focus-visible,.links a[data-v-8bb1d4ae]:hover{border-color:var(--line-strong)}.links[data-v-8bb1d4ae] .mark,.links[data-v-8bb1d4ae] .rf-mark{width:1.35rem;height:1.35rem;color:var(--dim);flex:none;margin-top:.1rem}.links a[data-v-8bb1d4ae]:hover .mark,.links a[data-v-8bb1d4ae]:hover .rf-mark{color:var(--red)}.links span[data-v-8bb1d4ae]{flex-direction:column;gap:2px;min-width:0;display:flex}.links b[data-v-8bb1d4ae]{font-family:var(--font-display);font-size:.85rem;font-weight:400}.links small[data-v-8bb1d4ae]{color:var(--faint);font-size:.78rem}.colophon[data-v-8bb1d4ae]{color:var(--faint);margin:0;font-size:.75rem}@supports (corner-shape:bevel){.links a[data-v-8bb1d4ae]{corner-shape:bevel}}",{"innerHTML":12},".mark[data-v-cc0d96a5]{vertical-align:-.125em;flex:none;width:1em;height:1em}",{"innerHTML":14},".mark[data-v-26f5673d]{vertical-align:-.125em;flex:none;width:1em;height:1em}",{"innerHTML":16},".rf-mark[data-v-26317b3e]{fill:currentColor;stroke:none;flex:none}",{"id":18,"title":19,"body":20,"description":303,"extension":304,"meta":305,"navigation":306,"order":240,"path":307,"section":308,"seo":309,"stem":310,"__hash__":311},"docs\u002Fdocs\u002Frecording\u002Ffiles.md","Where recorded keywords go",{"type":21,"value":22,"toc":297},"minimark",[23,37,42,48,83,86,108,125,140,144,151,188,195,202,206,213,262,266,273,288,293],[24,25,26,27,31,32,36],"p",{},"Both recording keywords take a ",[28,29,30],"code",{},"file"," argument. Wherever it points, the keyword\nis written ",[33,34,35],"strong",{},"after every action",", not at the end — a crashed browser or a\nkilled run leaves everything recorded so far behind.",[38,39,41],"h2",{"id":40},"choosing-the-file","Choosing the file",[43,44],"doc-table",{":head":45,":nowrap":46,":rows":47},"[\"file\",\"Writes to\"]","[0]","[[\"*(not given)*\",\"The suite file that is running — `${SUITE_SOURCE}`. The keyword lands next to the test that recorded it. Called from a suite initialisation file, it goes into that `__init__.robot` — and can then only be used in that file.\"],[\"`${CURDIR}\u002Fkeywords.resource`\",\"A resource file, created if it does not exist. Use `${CURDIR}` for a path next to the suite; a relative path is resolved against the working directory, not the suite.\"],[\"`${None}`\",\"No file at all. The keywords go to the console and the log, at INFO level.\"]]",[49,50,55],"pre",{"className":51,"code":52,"language":53,"meta":54,"style":54},"language-robot-repl shiki shiki-themes github-light github-dark","Record Keyword     Add Product To Cart\nRecord Keyword     Add Product To Cart    ${CURDIR}\u002Fshop.resource\nRecord Keywords    ${CURDIR}\u002Fshop.resource\nRecord Keyword     Try Something         file=${None}\n","robot-repl","",[28,56,57,65,71,77],{"__ignoreMap":54},[58,59,62],"span",{"class":60,"line":61},"line",1,[58,63,64],{},"Record Keyword     Add Product To Cart\n",[58,66,68],{"class":60,"line":67},2,[58,69,70],{},"Record Keyword     Add Product To Cart    ${CURDIR}\u002Fshop.resource\n",[58,72,74],{"class":60,"line":73},3,[58,75,76],{},"Record Keywords    ${CURDIR}\u002Fshop.resource\n",[58,78,80],{"class":60,"line":79},4,[58,81,82],{},"Record Keyword     Try Something         file=${None}\n",[24,84,85],{},"A resource file is the usual home for a keyword library: import it in the\nsuites that need it.",[49,87,91],{"className":88,"code":89,"language":90,"meta":54,"style":54},"language-robot shiki shiki-themes github-light github-dark","*** Settings ***\nLibrary     Browser\nResource    shop.resource\n","robot",[28,92,93,98,103],{"__ignoreMap":54},[58,94,95],{"class":60,"line":61},[58,96,97],{},"*** Settings ***\n",[58,99,100],{"class":60,"line":67},[58,101,102],{},"Library     Browser\n",[58,104,105],{"class":60,"line":73},[58,106,107],{},"Resource    shop.resource\n",[24,109,110,113,114,117,118,121,122,124],{},[28,111,112],{},"${None}"," is for trying things out — and for pipelines where nothing may write\nto the sources. Both keywords also ",[33,115,116],{},"return"," the recorded text, including the\n",[28,119,120],{},"*** Keywords ***"," header, whatever ",[28,123,30],{}," says:",[49,126,128],{"className":51,"code":127,"language":53,"meta":54,"style":54},"${keywords} =    Record Keywords    file=${None}\nLog    ${keywords}\n",[28,129,130,135],{"__ignoreMap":54},[58,131,132],{"class":60,"line":61},[58,133,134],{},"${keywords} =    Record Keywords    file=${None}\n",[58,136,137],{"class":60,"line":67},[58,138,139],{},"Log    ${keywords}\n",[38,141,143],{"id":142},"what-the-recorder-changes-in-a-file","What the recorder changes in a file",[24,145,146,147,150],{},"The recorder owns ",[33,148,149],{},"only the keyword it is recording",". Before every save it\nreads the file again and replaces that one block; the rest is left as it is on\ndisk at that moment. So you can keep the file open in your editor and even\nchange other parts of it while recording.",[152,153,154,161,164,171,179,182],"ul",{},[155,156,157,158,160],"li",{},"A missing ",[28,159,120],{}," section is added at the end of the file.",[155,162,163],{},"The file keeps its line endings (LF or CRLF), its byte order mark and whether it\nends with a newline.",[155,165,166,167,170],{},"An ",[33,168,169],{},"existing keyword is never extended or overwritten."," A name that is\nalready in the file is rejected when you start recording.",[155,172,173,174,178],{},"If you edit the block of the keyword ",[175,176,177],"em",{},"while"," it is being recorded, the next\naction writes the recorded version again, and the toolbar tells you so.",[155,180,181],{},"A file that is not valid UTF-8 is refused rather than rewritten, with the\nreason in the toolbar.",[155,183,184,187],{},[175,185,186],{},"Discard"," removes the keyword from the file again.",[24,189,190,191,194],{},"The folder must exist, and an existing file must be writable — a read-only file\nis never overwritten. Both are checked ",[33,192,193],{},"before"," recording starts, so a typo in\nthe path fails at once, not after ten minutes of clicking.",[24,196,197,198,201],{},"If the file stops being writable during the session — the disk fills up, another\ntool locks it — the toolbar shows the error, the keyword stays in memory and the\nnext action tries again. A keyword that still cannot be written when the session\nends is never lost silently: ",[28,199,200],{},"Record Keyword"," fails, and the recorded text is in\nthe log as a warning, ready to copy.",[38,203,205],{"id":204},"when-the-new-keyword-is-usable","When the new keyword is usable",[24,207,208,209,212],{},"Robot Framework reads a suite before it runs it, so a keyword recorded into the\nrunning suite exists from the ",[33,210,211],{},"next"," run on. To use it in the same run, record\ninto a resource file and import it afterwards:",[49,214,216],{"className":88,"code":215,"language":90,"meta":54,"style":54},"*** Test Cases ***\nRecord And Use\n    New Browser    chromium    headless=False\n    New Page       https:\u002F\u002Frobotframework-browser.org\n    Record Keyword    Find The Get Text Keyword    ${CURDIR}\u002Frecorded.resource\n    Import Resource    ${CURDIR}\u002Frecorded.resource\n    Go To    https:\u002F\u002Frobotframework-browser.org\n    Find The Get Text Keyword\n",[28,217,218,223,228,233,238,244,250,256],{"__ignoreMap":54},[58,219,220],{"class":60,"line":61},[58,221,222],{},"*** Test Cases ***\n",[58,224,225],{"class":60,"line":67},[58,226,227],{},"Record And Use\n",[58,229,230],{"class":60,"line":73},[58,231,232],{},"    New Browser    chromium    headless=False\n",[58,234,235],{"class":60,"line":79},[58,236,237],{},"    New Page       https:\u002F\u002Frobotframework-browser.org\n",[58,239,241],{"class":60,"line":240},5,[58,242,243],{},"    Record Keyword    Find The Get Text Keyword    ${CURDIR}\u002Frecorded.resource\n",[58,245,247],{"class":60,"line":246},6,[58,248,249],{},"    Import Resource    ${CURDIR}\u002Frecorded.resource\n",[58,251,253],{"class":60,"line":252},7,[58,254,255],{},"    Go To    https:\u002F\u002Frobotframework-browser.org\n",[58,257,259],{"class":60,"line":258},8,[58,260,261],{},"    Find The Get Text Keyword\n",[38,263,265],{"id":264},"the-idle-timeout","The idle timeout",[24,267,268,269,272],{},"A recording ends by itself after ",[28,270,271],{},"idle_timeout"," without an action or toolbar\ncommand — 5 minutes by default — so a forgotten recording cannot block a run\nforever. The keyword being recorded is saved.",[49,274,276],{"className":51,"code":275,"language":53,"meta":54,"style":54},"Record Keywords    ${CURDIR}\u002Fshop.resource    idle_timeout=20 min\nRecord Keywords    ${CURDIR}\u002Fshop.resource    idle_timeout=${None}\n",[28,277,278,283],{"__ignoreMap":54},[58,279,280],{"class":60,"line":61},[58,281,282],{},"Record Keywords    ${CURDIR}\u002Fshop.resource    idle_timeout=20 min\n",[58,284,285],{"class":60,"line":67},[58,286,287],{},"Record Keywords    ${CURDIR}\u002Fshop.resource    idle_timeout=${None}\n",[24,289,290,292],{},[28,291,112],{}," waits without limit; use it only where somebody is sure to end the\nsession.",[294,295,296],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":54,"searchDepth":67,"depth":67,"links":298},[299,300,301,302],{"id":40,"depth":67,"text":41},{"id":142,"depth":67,"text":143},{"id":204,"depth":67,"text":205},{"id":264,"depth":67,"text":265},"The suite file, a resource file or only the log; written live after every action; what the recorder changes in a file and what it never touches.","md",{},true,"\u002Fdocs\u002Frecording\u002Ffiles","recording",{"title":19,"description":303},"docs\u002Frecording\u002Ffiles","z3vR4m9y3_FMl7wGguaMxIS2a7EJw9Opannj1JGoBs0",[313,318,322,326,330,334,338,343,347,351,355,359,363,368,372,376,380,385,389,393,397,401,402,406,410,414,418,422,427],{"path":314,"title":315,"description":316,"section":317,"order":240},"\u002Fdocs\u002Fconcepts\u002Farchitecture","How Browser works","Python, a Node process and Playwright — what runs where, and where the files land.","concepts",{"path":319,"title":320,"description":321,"section":317,"order":73},"\u002Fdocs\u002Fconcepts\u002Fassertions","Assertions","Almost every getter can assert, every assertion retries, and each return type allows different operators. The complete AssertionEngine reference.",{"path":323,"title":324,"description":325,"section":317,"order":61},"\u002Fdocs\u002Fconcepts\u002Fbrowser-context-page","Browser, context and page","The three layers Playwright is built on — and why a new context is the cheapest clean slate you will ever get.",{"path":327,"title":328,"description":329,"section":317,"order":246},"\u002Fdocs\u002Fconcepts\u002Flogging","Logging and debugging","Four places Browser tells you what happened — log.html, the Playwright log, traces and coverage.",{"path":331,"title":332,"description":333,"section":317,"order":67},"\u002Fdocs\u002Fconcepts\u002Fselectors","Finding elements","Which selector strategy to reach for, why the order matters, and how to chain across iframes and shadow DOM.",{"path":335,"title":336,"description":337,"section":317,"order":79},"\u002Fdocs\u002Fconcepts\u002Fwaiting","Waiting and promises","Most waiting is already done for you. This is the rest of it — Wait For Condition, and how to run keywords in parallel with Promise To.",{"path":339,"title":340,"description":341,"section":342,"order":240},"\u002Fdocs\u002Fextending\u002Fbrowser-as-a-base","Browser as a base","Own the Browser instance in your own library — what you get free, what one line restores, and what you build yourself.","extending",{"path":344,"title":345,"description":346,"section":342,"order":67},"\u002Fdocs\u002Fextending\u002Fjavascript-basics","Just enough JavaScript","The JavaScript you need to write extensions and Evaluate JavaScript, for people who write Python.",{"path":348,"title":349,"description":350,"section":342,"order":73},"\u002Fdocs\u002Fextending\u002Fjavascript-extensions","JavaScript extensions","Add keywords that run on the Node side with full Playwright access — and attach a debugger to them.",{"path":352,"title":353,"description":354,"section":342,"order":79},"\u002Fdocs\u002Fextending\u002Fpython-libraries","Your own Python library","Move business logic out of Robot Framework and keep Browser exactly as it is.",{"path":356,"title":357,"description":358,"section":342,"order":61},"\u002Fdocs\u002Fextending\u002Fpython-plugins","Python plugins","Add or replace keywords from Python, with access to the library's own API and to the Node side.",{"path":360,"title":361,"description":362,"section":342,"order":246},"\u002Fdocs\u002Fextending\u002Ftranslations","Translating keywords","Using a translation package to get keyword names and documentation in your language, and writing one for a language nobody has covered yet.",{"path":364,"title":365,"description":366,"section":367,"order":79},"\u002Fdocs\u002Fmobile\u002Fdevice-list","Every device descriptor","The full list of names Get Device accepts, with the viewport, pixel ratio, touch and engine each one sets — filterable and sortable.","mobile",{"path":369,"title":370,"description":371,"section":367,"order":67},"\u002Fdocs\u002Fmobile\u002Fdevices","Emulating a device","Device descriptors, what the six or seven properties they set actually change, and the one that emulation cannot give you.",{"path":373,"title":374,"description":375,"section":367,"order":61},"\u002Fdocs\u002Fmobile\u002Fresponsive","Testing responsive pages","Why a browser at a phone-sized viewport tests responsiveness properly, what emulation cannot tell you, and where real devices actually belong.",{"path":377,"title":378,"description":379,"section":367,"order":73},"\u002Fdocs\u002Fmobile\u002Ftouch","Touch, permissions and location","Tap and why it needs hasTouch, granting camera or notifications without a dialog, faking where the user is, and the gestures Browser has no keyword for.",{"path":381,"title":382,"description":383,"section":384,"order":73},"\u002Fdocs\u002Foperations\u002Fdocker","Running in Docker","The published Browser image, the four docker run flags that matter, and why running as root breaks Chromium.","operations",{"path":386,"title":387,"description":388,"section":384,"order":79},"\u002Fdocs\u002Foperations\u002Fdocker-images","Building your own image","Extending the published image with your dependencies, the version lock between Browser and Playwright, and using it as a CI job container.",{"path":390,"title":391,"description":392,"section":384,"order":67},"\u002Fdocs\u002Foperations\u002Fenvironment-variables","Environment variables","The variables that change how Browser behaves, which of them are safe in production, and the import parameters that should usually be preferred.",{"path":394,"title":395,"description":396,"section":384,"order":61},"\u002Fdocs\u002Foperations\u002Fnode-process","The Node process","Browser starts a Node process to talk to Playwright. What that costs, how to share one across parallel runs, and how to pass it Node flags.",{"path":398,"title":399,"description":400,"section":308,"order":73},"\u002Fdocs\u002Frecording\u002Farguments","Keyword arguments","Turn a recorded value, part of it or part of a selector into an argument while you record — with or without a default, and everywhere it occurs.",{"path":307,"title":19,"description":303,"section":308,"order":240},{"path":403,"title":404,"description":405,"section":308,"order":252},"\u002Fdocs\u002Frecording\u002Fpractice","Good practice and limits","How to record keywords worth keeping, what to check before you commit one, what the recorder cannot do, and what to do when it goes wrong.",{"path":407,"title":408,"description":409,"section":308,"order":61},"\u002Fdocs\u002Frecording\u002Frecord-keywords","Recording keywords","Click through the page and get a reusable user keyword, written into your suite while you work. Record Keyword and Record Keywords in five minutes.",{"path":411,"title":412,"description":413,"section":308,"order":246},"\u002Fdocs\u002Frecording\u002Fselectors","Recording selectors","Pick an element in the live browser and get a selector for it — Playwright's or a CSS one, checked against the page while you edit it.",{"path":415,"title":416,"description":417,"section":308,"order":67},"\u002Fdocs\u002Frecording\u002Ftoolbar","The recorder toolbar","Name and start keywords, save, undo and discard them, end the session, and keep the toolbar out of the page's way.",{"path":419,"title":420,"description":421,"section":308,"order":79},"\u002Fdocs\u002Frecording\u002Fwhat-gets-recorded","What gets recorded","Which Browser keyword each action becomes, how popups, dialogs, downloads and uploads are handled, recording assertions, and the selectors the recorder writes.",{"path":423,"title":424,"description":425,"section":426,"order":67},"\u002Fdocs\u002Fstart\u002Fgetting-started","Getting started","Install Browser, write a first test, and run it.","start",{"path":428,"title":429,"description":430,"section":426,"order":61},"\u002Fdocs\u002Fstart\u002Finstallation","Installation","The two ways to install Browser — with a bundled Node.js runtime, or with one you provide yourself — and how to upgrade and remove each.",[432,435,438],{"to":433,"label":434},"\u002Fwhy\u002Fvs-cypress","vs Cypress",{"to":436,"label":437},"\u002Fwhy\u002Fvs-playwright","vs Playwright Test",{"to":439,"label":440},"\u002Fwhy\u002Fvs-seleniumlibrary","vs SeleniumLibrary",[442],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record Keyword\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">     Add Product To Cart\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record Keyword\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">     Add Product To Cart    \u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">CURDIR\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fshop.resource\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record Keywords\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">CURDIR\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fshop.resource\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record Keyword\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">     Try Something         file=\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">None\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>",[444],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Settings ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">Library\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">     Browser\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">Resource\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    shop.resource\u003C\u002Fspan>\u003C\u002Fspan>",[446],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">keywords\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">    Record Keywords\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    file=\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">None\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Log\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">keywords\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>",[448],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Test Cases ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record And Use\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Browser\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    chromium\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    headless=False\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">       https:\u002F\u002Frobotframework-browser.org\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Record Keyword\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    Find The Get Text Keyword\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">CURDIR\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Frecorded.resource\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Import Resource\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">CURDIR\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Frecorded.resource\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Go To\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    https:\u002F\u002Frobotframework-browser.org\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Find The Get Text Keyword\u003C\u002Fspan>\u003C\u002Fspan>",[450],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record Keywords\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">CURDIR\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fshop.resource    idle_timeout=20 min\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record Keywords\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">CURDIR\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fshop.resource    idle_timeout=\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">None\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>",1793560509102]