[{"data":1,"prerenderedAt":508},["ShallowReactive",2],{"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0":3,"doc-\u002Fdocs\u002Frecording\u002Frecord-keywords":17,"docs-nav":382,"nav-compare":492,"editor-j3bc64":502,"editor-1wuq2or":504,"editor-1hzl1yd":506},["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":374,"extension":375,"meta":376,"navigation":153,"order":138,"path":377,"section":378,"seo":379,"stem":380,"__hash__":381},"docs\u002Fdocs\u002Frecording\u002Frecord-keywords.md","Recording keywords",{"type":21,"value":22,"toc":368},"minimark",[23,36,53,58,65,68,114,118,124,185,192,198,208,248,258,267,281,285,289,302,324,328,364],[24,25,26,30,31,35],"p",{},[27,28],"since",{"version":29},"21.0.0"," You click through the page; Browser writes what you did as a\n",[32,33,34],"strong",{},"user keyword"," into your suite file — live, while you click, ready to call from any\ntest.",[37,38,42],"doc-video",{"alt":39,"poster":40,"src":41},"A browser shows robotframework-browser.org. The recorder toolbar sits in the bottom right corner. The pointer opens Keywords, types Get Text into the search field and opens the Get Text keyword; with every click a new Keyword Call appears in the toolbar. Finally the toolbar's close button ends the recording.","\u002Fvideos\u002Frecorder\u002Fquick-start.jpg","\u002Fvideos\u002Frecorder\u002Fquick-start.mp4",[24,43,44,48,49,52],{},[45,46,47],"code",{},"Record Keyword"," with the name ",[45,50,51],{},"Find The Get Text Keyword"," — three clicks and a search become four\nKeyword Calls.",[54,55,57],"h2",{"id":56},"keywords-not-tests","Keywords, not tests",[24,59,60,61,64],{},"A recorder that writes whole test cases produces long, brittle scripts nobody\nwants to maintain. Browser records ",[32,62,63],{},"one keyword at a time",", from wherever your\ntest happens to be: after the login, on the right page, with the right data.\nYou decide what the test does and which keywords it needs; the recorder fills in\nthe steps of one of them.",[24,66,67],{},"That changes how you use it:",[69,70,71,86,92,103],"ul",{},[72,73,74,77,78,81,82,85],"li",{},[32,75,76],{},"You name the keyword while you record",", so it reads like your test design —\n",[45,79,80],{},"Add Product To Cart",", not ",[45,83,84],{},"Test 17",".",[72,87,88,91],{},[32,89,90],{},"It starts where your test stands."," The setup is code you already have; the\nrecording begins after it.",[72,93,94,97,98,102],{},[32,95,96],{},"Wrong steps are undone in place."," Click the wrong thing, press ",[99,100,101],"em",{},"Undo",", carry on.",[72,104,105,108,109,85],{},[32,106,107],{},"Values become arguments"," with a click, so the keyword is reusable from the\nfirst run — see ",[110,111,113],"a",{"href":112},"\u002Fdocs\u002Frecording\u002Farguments","Keyword arguments",[54,115,117],{"id":116},"your-first-recording","Your first recording",[24,119,120,121,123],{},"The recorder needs a browser you can see. Put ",[45,122,47],{}," where the keyword\nshould start:",[125,126,132],"pre",{"className":127,"code":128,"filename":129,"language":130,"meta":131,"style":131},"language-robot shiki shiki-themes github-light github-dark","*** Settings ***\nLibrary    Browser\n\n*** Test Cases ***\nLook Up A Keyword\n    New Browser    chromium    headless=False\n    New Page       https:\u002F\u002Frobotframework-browser.org\n    Record Keyword    Find The Get Text Keyword\n","first-recording.robot","robot","",[45,133,134,142,148,155,161,167,173,179],{"__ignoreMap":131},[135,136,139],"span",{"class":137,"line":138},"line",1,[135,140,141],{},"*** Settings ***\n",[135,143,145],{"class":137,"line":144},2,[135,146,147],{},"Library    Browser\n",[135,149,151],{"class":137,"line":150},3,[135,152,154],{"emptyLinePlaceholder":153},true,"\n",[135,156,158],{"class":137,"line":157},4,[135,159,160],{},"*** Test Cases ***\n",[135,162,164],{"class":137,"line":163},5,[135,165,166],{},"Look Up A Keyword\n",[135,168,170],{"class":137,"line":169},6,[135,171,172],{},"    New Browser    chromium    headless=False\n",[135,174,176],{"class":137,"line":175},7,[135,177,178],{},"    New Page       https:\u002F\u002Frobotframework-browser.org\n",[135,180,182],{"class":137,"line":181},8,[135,183,184],{},"    Record Keyword    Find The Get Text Keyword\n",[24,186,187,188,191],{},"Run it. The page opens with the ",[32,189,190],{},"recorder toolbar",", already recording. Now do in\nthe page what the keyword should do. Each action shows up in the toolbar as a\nKeyword Call the moment you make it:",[193,194],"doc-table",{":head":195,":nowrap":196,":rows":197},"[\"#\",\"You do in the page\",\"Recorded as\"]","[0]","[[\"1\",\"Click *Keywords* in the header\",\"`Click` on the *Keywords* link\"],[\"2\",\"Click the search field\",\"`Click` on the search field\"],[\"3\",\"Type `Get Text`\",\"`Fill Text` with `Get Text`\"],[\"4\",\"Click *Get Text* in the keyword list\",\"`Click` on that entry\"]]",[24,199,200,201,204,205,207],{},"Then click ",[32,202,203],{},"✕"," in the toolbar's header to end the recording. The test continues\nwith its next line, and ",[45,206,129],{}," now ends with the four Keyword\nCalls:",[125,209,211],{"className":127,"code":210,"language":130,"meta":131,"style":131},"*** Keywords ***\nFind The Get Text Keyword\n    [Tags]    recorded\n    Click    role=link[name=\"Keywords\"s]\n    Click    role=searchbox[name*=\"Filter keywords\"i]\n    Fill Text    role=searchbox[name*=\"Filter keywords\"i]    Get Text\n    Click    role=link[name*=\"Get Text 5\"i]\n",[45,212,213,218,223,228,233,238,243],{"__ignoreMap":131},[135,214,215],{"class":137,"line":138},[135,216,217],{},"*** Keywords ***\n",[135,219,220],{"class":137,"line":144},[135,221,222],{},"Find The Get Text Keyword\n",[135,224,225],{"class":137,"line":150},[135,226,227],{},"    [Tags]    recorded\n",[135,229,230],{"class":137,"line":157},[135,231,232],{},"    Click    role=link[name=\"Keywords\"s]\n",[135,234,235],{"class":137,"line":163},[135,236,237],{},"    Click    role=searchbox[name*=\"Filter keywords\"i]\n",[135,239,240],{"class":137,"line":169},[135,241,242],{},"    Fill Text    role=searchbox[name*=\"Filter keywords\"i]    Get Text\n",[135,244,245],{"class":137,"line":175},[135,246,247],{},"    Click    role=link[name*=\"Get Text 5\"i]\n",[24,249,250,251,257],{},"The same happens on any page. A login on ",[110,252,256],{"href":253,"rel":254},"http:\u002F\u002Fcar.keyword-driven.de",[255],"nofollow","car.keyword-driven.de",",\nrecorded live — every click and every field becomes a Keyword Call the moment it happens:",[37,259,264],{"alt":260,"poster":261,"src":262,":controls":263},"A login form. The pointer types demo as user name and secret as password and clicks login; the recorder toolbar next to the form lists Click, Fill Text, Click, Fill Text and Click as they happen.","\u002Fvideos\u002Frecorder\u002Floop-login.jpg","\u002Fvideos\u002Frecorder\u002Floop-login.mp4","false",[24,265,266],{},"Five Keyword Calls in eight seconds: the toolbar shows each one as it is written.",[268,269,270],"doc-note",{},[24,271,272,273,276,277,85],{},"Every recorded keyword is tagged ",[45,274,275],{},"recorded",". It marks the keywords nobody has\nreviewed yet — read them before you commit, as described in\n",[110,278,280],{"href":279},"\u002Fdocs\u002Frecording\u002Fpractice","Good practice and limits",[54,282,284],{"id":283},"one-keyword-or-a-session","One keyword or a session",[193,286],{":head":287,":nowrap":196,":rows":288},"[\"Keyword\",\"Records\",\"Ends with\"]","[[\"`Record Keyword` with a name\",\"Exactly one keyword, named in the call. The toolbar records from the first moment.\",\"✕ in the toolbar\"],[\"`Record Keywords`\",\"Any number of keywords. Each is named and started in the toolbar, then saved; in between nothing is recorded, so you can move to the next starting point.\",\"✕ in the toolbar\"]]",[24,290,291,293,294,297,298,85],{},[45,292,47],{}," fits a test that is missing one step. ",[45,295,296],{},"Record Keywords"," fits\nbuilding a keyword library: walk through the application once and save a\nkeyword at every stop. Both block until the recording ends, return the recorded\ntext, and write into the suite file unless you say otherwise — see\n",[110,299,301],{"href":300},"\u002Fdocs\u002Frecording\u002Ffiles","Where recorded keywords go",[125,303,307],{"className":304,"code":305,"language":306,"meta":131,"style":131},"language-robot-repl shiki shiki-themes github-light github-dark","${text} =    Record Keyword    Login As Admin\nRecord Keyword     Search Product    ${CURDIR}\u002Fshop.resource\nRecord Keywords    ${CURDIR}\u002Fshop.resource\n","robot-repl",[45,308,309,314,319],{"__ignoreMap":131},[135,310,311],{"class":137,"line":138},[135,312,313],{},"${text} =    Record Keyword    Login As Admin\n",[135,315,316],{"class":137,"line":144},[135,317,318],{},"Record Keyword     Search Product    ${CURDIR}\u002Fshop.resource\n",[135,320,321],{"class":137,"line":150},[135,322,323],{},"Record Keywords    ${CURDIR}\u002Fshop.resource\n",[54,325,327],{"id":326},"in-this-chapter","In this chapter",[329,330,331,339,345,352,358],"card-grid",{},[332,333,336],"card",{"title":334,"to":335},"The toolbar","\u002Fdocs\u002Frecording\u002Ftoolbar",[24,337,338],{},"Starting, saving, undoing and ending; naming rules; moving the toolbar out of the way.",[332,340,342],{"title":341,"to":112},"Arguments",[24,343,344],{},"Turn a typed value, a URL or part of a selector into an argument, with or without default.",[332,346,349],{"title":347,"to":348},"What gets recorded","\u002Fdocs\u002Frecording\u002Fwhat-gets-recorded",[24,350,351],{},"Which Browser keyword each action becomes, popups, dialogs, downloads, uploads and assertions.",[332,353,355],{"title":354,"to":300},"Target files",[24,356,357],{},"The suite file, a resource file, or only the log — and what the recorder never touches.",[332,359,361],{"title":360,"to":279},"Practice and limits",[24,362,363],{},"How to get keywords worth keeping, what the recorder cannot do, and what to do when it goes wrong.",[365,366,367],"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":131,"searchDepth":144,"depth":144,"links":369},[370,371,372,373],{"id":56,"depth":144,"text":57},{"id":116,"depth":144,"text":117},{"id":283,"depth":144,"text":284},{"id":326,"depth":144,"text":327},"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.","md",{},"\u002Fdocs\u002Frecording\u002Frecord-keywords","recording",{"title":19,"description":374},"docs\u002Frecording\u002Frecord-keywords","6pbRxOY06WmFus1g5Tz86g_9zFHsWkE-PS9Jlv7YLwg",[383,388,392,396,400,404,408,413,417,421,425,429,433,438,442,446,450,455,459,463,467,469,471,473,474,478,481,483,488],{"path":384,"title":385,"description":386,"section":387,"order":163},"\u002Fdocs\u002Fconcepts\u002Farchitecture","How Browser works","Python, a Node process and Playwright — what runs where, and where the files land.","concepts",{"path":389,"title":390,"description":391,"section":387,"order":150},"\u002Fdocs\u002Fconcepts\u002Fassertions","Assertions","Almost every getter can assert, every assertion retries, and each return type allows different operators. The complete AssertionEngine reference.",{"path":393,"title":394,"description":395,"section":387,"order":138},"\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":397,"title":398,"description":399,"section":387,"order":169},"\u002Fdocs\u002Fconcepts\u002Flogging","Logging and debugging","Four places Browser tells you what happened — log.html, the Playwright log, traces and coverage.",{"path":401,"title":402,"description":403,"section":387,"order":144},"\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":405,"title":406,"description":407,"section":387,"order":157},"\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":409,"title":410,"description":411,"section":412,"order":163},"\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":414,"title":415,"description":416,"section":412,"order":144},"\u002Fdocs\u002Fextending\u002Fjavascript-basics","Just enough JavaScript","The JavaScript you need to write extensions and Evaluate JavaScript, for people who write Python.",{"path":418,"title":419,"description":420,"section":412,"order":150},"\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":422,"title":423,"description":424,"section":412,"order":157},"\u002Fdocs\u002Fextending\u002Fpython-libraries","Your own Python library","Move business logic out of Robot Framework and keep Browser exactly as it is.",{"path":426,"title":427,"description":428,"section":412,"order":138},"\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":430,"title":431,"description":432,"section":412,"order":169},"\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":434,"title":435,"description":436,"section":437,"order":157},"\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":439,"title":440,"description":441,"section":437,"order":144},"\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":443,"title":444,"description":445,"section":437,"order":138},"\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":447,"title":448,"description":449,"section":437,"order":150},"\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":451,"title":452,"description":453,"section":454,"order":150},"\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":456,"title":457,"description":458,"section":454,"order":157},"\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":460,"title":461,"description":462,"section":454,"order":144},"\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":464,"title":465,"description":466,"section":454,"order":138},"\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":112,"title":113,"description":468,"section":378,"order":150},"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":300,"title":301,"description":470,"section":378,"order":163},"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.",{"path":279,"title":280,"description":472,"section":378,"order":175},"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":377,"title":19,"description":374,"section":378,"order":138},{"path":475,"title":476,"description":477,"section":378,"order":169},"\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":335,"title":479,"description":480,"section":378,"order":144},"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":348,"title":347,"description":482,"section":378,"order":157},"Which Browser keyword each action becomes, how popups, dialogs, downloads and uploads are handled, recording assertions, and the selectors the recorder writes.",{"path":484,"title":485,"description":486,"section":487,"order":144},"\u002Fdocs\u002Fstart\u002Fgetting-started","Getting started","Install Browser, write a first test, and run it.","start",{"path":489,"title":490,"description":491,"section":487,"order":138},"\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.",[493,496,499],{"to":494,"label":495},"\u002Fwhy\u002Fvs-cypress","vs Cypress",{"to":497,"label":498},"\u002Fwhy\u002Fvs-playwright","vs Playwright Test",{"to":500,"label":501},"\u002Fwhy\u002Fvs-seleniumlibrary","vs SeleniumLibrary",[503],"\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\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Test Cases ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Look Up A Keyword\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>\u003C\u002Fspan>",[505],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Keywords ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Find The Get Text Keyword\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">    [Tags]\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    recorded\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    role=link[name=\"Keywords\"s]\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    role=searchbox[name*=\"Filter keywords\"i]\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Fill Text\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    role=searchbox[name*=\"Filter keywords\"i]\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    Get Text\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    role=link[name*=\"Get Text 5\"i]\u003C\u002Fspan>\u003C\u002Fspan>",[507],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">text\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">    Record Keyword\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    Login As Admin\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Record Keyword\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">     Search Product    \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>",1793560508405]