0
0
Selenium Pythontesting~20 mins

Page title and URL retrieval in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Page Title & URL Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Selenium Python code snippet?
Consider the following Selenium code that opens a webpage and prints the title and current URL. What will be printed?
Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

service = Service('/path/to/chromedriver')
driver = webdriver.Chrome(service=service)
driver.get('https://example.com')
print(driver.title)
print(driver.current_url)
driver.quit()
A
Example Domain
https://example.com/
B
Example Domain
https://www.example.com/
C
example domain
https://example.com
D
Example Domain
https://example.com
Attempts:
2 left
💡 Hint
Check the exact title text and URL format of https://example.com in a browser.
assertion
intermediate
1:30remaining
Which assertion correctly verifies the page title after navigation?
You want to check that after navigating to 'https://example.com', the page title is exactly 'Example Domain'. Which assertion is correct?
Selenium Python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service('/path/to/chromedriver')
driver = webdriver.Chrome(service=service)
driver.get('https://example.com')

# Which assertion below is correct?
Aassert driver.title == 'Example Domain'
Bassert driver.title = 'Example Domain'
Cassert driver.title.contains('Example Domain')
Dassert driver.title != 'Example Domain'
Attempts:
2 left
💡 Hint
Remember the syntax for equality comparison in Python assertions.
locator
advanced
2:00remaining
Which locator strategy is best to retrieve the page title element for testing?
You want to locate the HTML element that contains the page title text on 'https://example.com' for validation. Which locator is best?
Adriver.find_element(By.ID, 'title')
Bdriver.find_element(By.TAG_NAME, 'title')
Cdriver.find_element(By.CLASS_NAME, 'title')
Ddriver.find_element(By.CSS_SELECTOR, 'head > title')
Attempts:
2 left
💡 Hint
The page title is inside the tag in the <head> section.</div></div><div class="feedback-box incorrect d-none"><div class="feedback-title">✗ Incorrect</div><div class="feedback-text">The <title> tag is a unique tag inside <head>. Using By.TAG_NAME with 'title' correctly locates it. The other options look for id or class which do not exist on the <title> tag. CSS selector 'head > title' is valid but Selenium does not support locating <title> reliably with CSS selectors.</div></div></div></div><div class="challenge-container "><div class="task-card "><div class="task-header"><div class="task-badge"><span class="challenge-type-badge debug">🔧<!-- --> <!-- -->Debug</span></div><span class="task-difficulty advanced">advanced</span></div><div class="challenge-timer "><svg class="timer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg><span class="timer-value">2:30</span><span class="timer-label">remaining</span></div><div class="challenge-prompt"><div class="challenge-title">Why does this Selenium code fail to get the current URL?</div><div>This code snippet throws an AttributeError. Identify the cause.</div></div><div class=""><div class="code-block"><div class="code-header"><span class="code-title">Selenium Python</span><button class="code-copy-btn"><span class="new-material-symbols icon-hw-16"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M326.93-211.18q-30.99 0-53.37-22.38t-22.38-53.37v-528.56q0-31.06 22.38-53.48 22.38-22.43 53.37-22.43h408.56q31.06 0 53.48 22.43 22.43 22.42 22.43 53.48v528.56q0 30.99-22.43 53.37-22.42 22.38-53.48 22.38H326.93Zm0-75.75h408.56v-528.56H326.93v528.56ZM184.51-68.6q-31.06 0-53.48-22.43-22.43-22.42-22.43-53.48v-566.43q0-16 10.97-26.94 10.98-10.94 27.1-10.94 16.13 0 26.99 10.94 10.85 10.94 10.85 26.94v566.43h446.43q16 0 26.94 10.97 10.94 10.97 10.94 27.1 0 16.13-10.94 26.98-10.94 10.86-26.94 10.86H184.51Zm142.42-218.33v-528.56 528.56Z"></path></svg></span></button></div><pre class="code-content"><span>from</span> selenium <span>import</span> webdriver <span>from</span> selenium.webdriver.chrome.service <span>import</span> Service service = Service(<span>'/path/to/chromedriver'</span>) driver = webdriver.Chrome(service=service) driver.get(<span>'https://example.com'</span>) url = driver.get.current_url <span>print</span>(url) driver.quit()</pre></div></div><div class="task-options"><div class="task-option "><span class="task-option-key">A</span><span class="text-pre-wrap">'driver.get' returns None, so accessing 'current_url' fails</span></div><div class="task-option "><span class="task-option-key">B</span><span class="text-pre-wrap">'current_url' is a method and needs parentheses</span></div><div class="task-option "><span class="task-option-key">C</span><span class="text-pre-wrap">'driver' object has no attribute 'get'</span></div><div class="task-option "><span class="task-option-key">D</span><span class="text-pre-wrap">'get' is a method, not an object; 'current_url' is an attribute of driver, not driver.get</span></div></div><div class="challenge-attempts"><span>Attempts:</span><div class="attempt-dots"><span class="attempt-dot "></span><span class="attempt-dot "></span></div><span>2<!-- --> left</span></div><div class="challenge-hint d-none"><div class="challenge-hint-title">💡 Hint</div><div class="challenge-hint-text">Check the difference between methods and attributes on the driver object.</div></div><div class="feedback-box incorrect d-none"><div class="feedback-title">✗ Incorrect</div><div class="feedback-text">driver.get is a method to navigate to a URL. current_url is an attribute of driver, not of driver.get. So 'driver.get.current_url' is invalid and causes AttributeError.</div></div></div></div><div class="challenge-container "><div class="task-card "><div class="task-header"><div class="task-badge"><span class="challenge-type-badge framework">❓<!-- --> <!-- -->framework</span></div><span class="task-difficulty expert">expert</span></div><div class="challenge-timer "><svg class="timer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg><span class="timer-value">3:00</span><span class="timer-label">remaining</span></div><div class="challenge-prompt"><div class="challenge-title">In a pytest Selenium test, how to correctly assert the page URL after navigation?</div><div>Given a pytest test function using Selenium WebDriver, which assertion correctly verifies the URL after navigating to 'https://example.com'?</div></div><div class=""><div class="code-block"><div class="code-header"><span class="code-title">Selenium Python</span><button class="code-copy-btn"><span class="new-material-symbols icon-hw-16"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M326.93-211.18q-30.99 0-53.37-22.38t-22.38-53.37v-528.56q0-31.06 22.38-53.48 22.38-22.43 53.37-22.43h408.56q31.06 0 53.48 22.43 22.43 22.42 22.43 53.48v528.56q0 30.99-22.43 53.37-22.42 22.38-53.48 22.38H326.93Zm0-75.75h408.56v-528.56H326.93v528.56ZM184.51-68.6q-31.06 0-53.48-22.43-22.43-22.42-22.43-53.48v-566.43q0-16 10.97-26.94 10.98-10.94 27.1-10.94 16.13 0 26.99 10.94 10.85 10.94 10.85 26.94v566.43h446.43q16 0 26.94 10.97 10.94 10.97 10.94 27.1 0 16.13-10.94 26.98-10.94 10.86-26.94 10.86H184.51Zm142.42-218.33v-528.56 528.56Z"></path></svg></span></button></div><pre class="code-content"><span>import</span> pytest <span>from</span> selenium <span>import</span> webdriver <span>from</span> selenium.webdriver.chrome.service <span>import</span> Service @pytest.fixture <span>def</span> driver(): service = Service(<span>'/path/to/chromedriver'</span>) driver = webdriver.Chrome(service=service) <span>yield</span> driver driver.quit() <span>def</span> test_example_url(driver): driver.get(<span>'https://example.com'</span>) <span># Which assertion below is correct?</span> </pre></div></div><div class="task-options"><div class="task-option "><span class="task-option-key">A</span><span class="text-pre-wrap">assert driver.current_url.contains('example.com')</span></div><div class="task-option "><span class="task-option-key">B</span><span class="text-pre-wrap">assert driver.current_url is 'https://example.com/'</span></div><div class="task-option "><span class="task-option-key">C</span><span class="text-pre-wrap">assert driver.current_url == 'https://example.com/'</span></div><div class="task-option "><span class="task-option-key">D</span><span class="text-pre-wrap">assert driver.current_url.equals('https://example.com/')</span></div></div><div class="challenge-attempts"><span>Attempts:</span><div class="attempt-dots"><span class="attempt-dot "></span><span class="attempt-dot "></span></div><span>2<!-- --> left</span></div><div class="challenge-hint d-none"><div class="challenge-hint-title">💡 Hint</div><div class="challenge-hint-text">Use Python string equality operator for exact match in assertions.</div></div><div class="feedback-box incorrect d-none"><div class="feedback-title">✗ Incorrect</div><div class="feedback-text">Option C uses '==' which correctly compares strings. Option C uses 'is' which compares object identity, not string content, and is incorrect. Option C calls a non-existent method 'equals' on string. Option C calls a non-existent method 'contains' on string.</div></div></div></div></div></article><div class="confetti-container"></div></div></div></main><div style="position:fixed;bottom:24px;right:24px;z-index:50"><button style="background:rgba(255,255,255,0.95);border:1px solid rgba(108,99,255,0.18);border-radius:10px;padding:10px 16px;color:#5f56fe;font-size:14px;cursor:pointer;display:flex;align-items:center;gap:7px;backdrop-filter:blur(12px);box-shadow:0 2px 12px rgba(0,0,0,0.08), 0 0 0 1px rgba(108,99,255,0.06);transition:all 0.2s"><span style="font-size:14px">⚑</span>Report Issue</button></div></div> <script src="/_next/static/chunks/webpack-fd24bd8e19d2841a.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/b133bdac07c7940e.css\",\"style\"]\n2:HL[\"/_next/static/css/837a603cb1a59856.css\",\"style\"]\n3:HL[\"/_next/static/css/725c7861d1898ba8.css\",\"style\"]\n4:HL[\"/_next/static/css/caf3ca742c7945f9.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"5:I[95751,[],\"\"]\n8:I[39275,[],\"\"]\ne:I[61343,[],\"\"]\nf:I[84080,[\"8726\",\"static/chunks/8726-583188341cbc1496.js\",\"3185\",\"static/chunks/app/layout-7a1373330f6a4c98.js\"],\"\"]\n10:I[88726,[\"8726\",\"static/chunks/8726-583188341cbc1496.js\",\"3185\",\"static/chunks/app/layout-7a1373330f6a4c98.js\"],\"Toaster\"]\n11:I[20154,[\"8422\",\"static/chunks/66ec4792-a0fc378024be0c7b.js\",\"6648\",\"static/chunks/6648-fff0cf0e0a1f8d25.js\",\"9160\",\"static/chunks/app/not-found-c4181ddc3e64e5f3.js\"],\"default\"]\n12:I[70548,[\"8726\",\"static/chunks/8726-583188341cbc1496.js\",\"3185\",\"static/chunks/app/layout-7a1373330f6a4c98.js\"],\"default\"]\n14:I[76130,[],\"\"]\n9:[\"lang\",\"en\",\"d\"]\na:[\"subject\",\"selenium-python\",\"d\"]\nb:[\"part\",\"part-1\",\"d\"]\nc:[\"pattern\",\"selenium-python-page-title-and-url-retrieval\",\"d\"]\nd:[\"mode\",\"challenge\",\"oc\"]\n15:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b133bdac07c7940e.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L5\",null,{\"buildId\":\"hN8t5By7h5nzsrdSose07\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/en/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\",\"initialTree\":[\"\",{\"children\":[[\"lang\",\"en\",\"d\"],{\"children\":[\"codefly\",{\"children\":[\"learn\",{\"children\":[[\"subject\",\"selenium-python\",\"d\"],{\"children\":[[\"part\",\"part-1\",\"d\"],{\"children\":[[\"pattern\",\"selenium-python-page-title-and-url-retrieval\",\"d\"],{\"children\":[[\"mode\",\"challenge\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]}]}]}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[[\"lang\",\"en\",\"d\"],{\"children\":[\"codefly\",{\"children\":[\"learn\",{\"children\":[[\"subject\",\"selenium-python\",\"d\"],{\"children\":[[\"part\",\"part-1\",\"d\"],{\"children\":[[\"pattern\",\"selenium-python-page-title-and-url-retrieval\",\"d\"],{\"children\":[[\"mode\",\"challenge\",\"oc\"],{\"children\":[\"__PAGE__\",{},[[\"$L6\",\"$L7\"],null],null]},[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$9\",\"children\",\"codefly\",\"children\",\"learn\",\"children\",\"$a\",\"children\",\"$b\",\"children\",\"$c\",\"children\",\"$d\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/837a603cb1a59856.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/725c7861d1898ba8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/caf3ca742c7945f9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]}],null]},[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$9\",\"children\",\"codefly\",\"children\",\"learn\",\"children\",\"$a\",\"children\",\"$b\",\"children\",\"$c\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$9\",\"children\",\"codefly\",\"children\",\"learn\",\"children\",\"$a\",\"children\",\"$b\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$9\",\"children\",\"codefly\",\"children\",\"learn\",\"children\",\"$a\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$9\",\"children\",\"codefly\",\"children\",\"learn\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$9\",\"children\",\"codefly\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$9\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#5f56fe\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#5f56fe\"}],[\"$\",\"$Lf\",null,{\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-N2NY2DMMDW\",\"strategy\":\"afterInteractive\"}],[\"$\",\"$Lf\",null,{\"id\":\"google-analytics\",\"strategy\":\"afterInteractive\",\"children\":\"\\n window.dataLayer = window.dataLayer || [];\\n function gtag(){dataLayer.push(arguments);}\\n gtag('js', new Date());\\n gtag('config', 'G-N2NY2DMMDW', {\\n page_path: window.location.pathname,\\n });\\n \"}],[\"$\",\"script\",null,{\"async\":true,\"src\":\"https://www.googletagmanager.com/gtag/js?id=AW-17928224938\"}],[\"$\",\"$Lf\",null,{\"children\":\"\\n window.dataLayer = window.dataLayer || [];\\n function gtag() {\\n dataLayer.push(arguments);\\n }\\n gtag('js', new Date());\\n gtag('config', 'AW-17928224938');\\n \"}],[\"$\",\"script\",null,{\"data-grow-initializer\":\"\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"!(function(){window.growMe||((window.growMe=function(e){window.growMe._.push(e);}),(window.growMe._=[]));var e=document.createElement(\\\"script\\\");(e.type=\\\"text/javascript\\\"),(e.src=\\\"https://faves.grow.me/main.js\\\"),(e.defer=!0),e.setAttribute(\\\"data-grow-faves-site-id\\\",\\\"U2l0ZTo0MGIxZDBlZC0wNzdlLTQ0NjgtOThmOC1kNDYyZGMwM2IwMWY=\\\");var t=document.getElementsByTagName(\\\"script\\\")[0];t.parentNode.insertBefore(e,t);})();\"}}],[\"$\",\"$Lf\",null,{\"src\":\"//scripts.scriptwrapper.com/tags/40b1d0ed-077e-4468-98f8-d462dc03b01f.js\",\"strategy\":\"afterInteractive\",\"data-noptimize\":\"1\",\"data-cfasync\":\"false\"}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"WebApplication\\\",\\\"name\\\":\\\"Leyaa.ai\\\",\\\"description\\\":\\\"Leyaa.ai builds learning intelligence that understands how you learn - guiding what to study, how to practice, and when to move forward.\\\",\\\"url\\\":\\\"https://leyaa.ai\\\",\\\"applicationCategory\\\":\\\"EducationalApplication\\\",\\\"operatingSystem\\\":\\\"Web\\\",\\\"offers\\\":{\\\"@type\\\":\\\"Offer\\\",\\\"price\\\":\\\"0\\\",\\\"priceCurrency\\\":\\\"USD\\\"},\\\"creator\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Leyaa.ai\\\"}}\"}}],[\"$\",\"link\",null,{\"href\":\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css\",\"rel\":\"stylesheet\",\"integrity\":\"sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"$Lf\",null,{\"id\":\"clarity-script\",\"strategy\":\"afterInteractive\",\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function(c,l,a,r,i,t,y){\\n c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};\\n t=l.createElement(r);t.async=1;t.src=\\\"https://www.clarity.ms/tag/\\\"+i;\\n y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);\\n })(window, document, \\\"clarity\\\", \\\"script\\\", \\\"w4gxh6rdmh\\\");\\n \"}}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L10\",null,{\"containerStyle\":{\"top\":70}}],[\"$\",\"div\",null,{\"className\":\"bg-grid\"}],[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L11\",null,{}],\"notFoundStyles\":[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/250d3fff07338fa3.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],\"styles\":null}],[\"$\",\"$L12\",null,{}],\" \"]}]]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[false,\"$L13\"],\"globalErrorComponent\":\"$14\",\"missingSlots\":\"$W15\"}]]\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Page title and URL retrieval in Selenium Python Practice Problems - Coding Exercises | Leyaa.ai\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Solve Page title and URL retrieval in Selenium Python coding challenges from easy to hard. Practice problems with hints, solutions, and step-by-step explanations. Free practice.\"}],[\"$\",\"meta\",\"4\",{\"name\":\"author\",\"content\":\"Leyaa.ai\"}],[\"$\",\"link\",\"5\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"6\",{\"name\":\"keywords\",\"content\":\"learning intelligence,AI learning,personalized learning,adaptive learning,study guide,exam preparation,learning platform,education technology,edtech,smart learning\"}],[\"$\",\"meta\",\"7\",{\"name\":\"creator\",\"content\":\"Leyaa.ai\"}],[\"$\",\"meta\",\"8\",{\"name\":\"publisher\",\"content\":\"Leyaa.ai\"}],[\"$\",\"meta\",\"9\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"10\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"11\",{\"name\":\"content-language\",\"content\":\"en\"}],[\"$\",\"link\",\"12\",{\"rel\":\"canonical\",\"href\":\"https://leyaa.ai/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\"}],[\"$\",\"link\",\"13\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://leyaa.ai/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\"}],[\"$\",\"link\",\"14\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://leyaa.ai/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:title\",\"content\":\"Page title and URL retrieval in Selenium Python Practice Problems - Coding Exercises | Leyaa.ai\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:description\",\"content\":\"Solve Page title and URL retrieval in Selenium Python coding challenges from easy to hard. Practice problems with hints, solutions, and step-by-step explanations. Free practice.\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:url\",\"content\":\"https://leyaa.ai/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:image\",\"content\":\"https://leyaa.ai/Assets/metaImages/leyaa-preview-image.png\"}],[\"$\",\"meta\",\"20\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"21\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"22\",{\"property\":\"og:image:alt\",\"content\":\"Page title and URL retrieval in Selenium Python Practice Problems - Coding Exercises\"}],[\"$\",\"meta\",\"23\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:site\",\"content\":\"@leyaaai\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:creator\",\"content\":\"@leyaaai\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:title\",\"content\":\"Page title and URL retrieval in Selenium Python Practice Problems - Coding Exercises | Leyaa.ai\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:description\",\"content\":\"Solve Page title and URL retrieval in Selenium Python coding challenges from easy to hard. Practice problems with hints, solutions, and step-by-step explanations. Free practice.\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:image\",\"content\":\"https://leyaa.ai/Assets/metaImages/leyaa-preview-image.png\"}],[\"$\",\"link\",\"30\",{\"rel\":\"icon\",\"href\":\"/leyaa-logo.png\"}],[\"$\",\"link\",\"31\",{\"rel\":\"apple-touch-icon\",\"href\":\"/leyaa-logo.png\"}],[\"$\",\"meta\",\"32\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\n"])</script><script>self.__next_f.push([1,"17:I[51766,[\"8422\",\"static/chunks/66ec4792-a0fc378024be0c7b.js\",\"522\",\"static/chunks/94730671-fd9628eddbd5107b.js\",\"7240\",\"static/chunks/53c13509-506edbde2b5b3f55.js\",\"7699\",\"static/chunks/8e1d74a4-a085c2fbc868135a.js\",\"5706\",\"static/chunks/9c4e2130-11ecd4bfc78e4568.js\",\"1779\",\"static/chunks/0e762574-6b3bda54d2fd2e14.js\",\"6648\",\"static/chunks/6648-fff0cf0e0a1f8d25.js\",\"3463\",\"static/chunks/3463-09ee572e3d7819a2.js\",\"4889\",\"static/chunks/4889-956a916919971629.js\",\"9985\",\"static/chunks/9985-b39235669d2563e2.js\",\"7627\",\"static/chunks/7627-224bb765a4decf1d.js\",\"7652\",\"static/chunks/7652-412e201fe52797ee.js\",\"8935\",\"static/chunks/8935-c1c159349bf7da40.js\",\"9663\",\"static/chunks/9663-fdcd080af3916e3e.js\",\"7029\",\"static/chunks/app/%5Blang%5D/codefly/learn/%5Bsubject%5D/%5Bpart%5D/%5Bpattern%5D/%5B%5B...mode%5D%5D/page-1fc9c577a9450e06.js\"],\"default\"]\n16:T532,{\"@context\":\"https://schema.org\",\"@type\":\"LearningResource\",\"name\":\"Page title and URL retrieval in Selenium Python - Practice Problems \u0026 Coding Challenges\",\"description\":\"Solve Page title and URL retrieval in Selenium Python coding challenges from easy to hard. Practice problems with hints, solutions, and step-by-step explanations. Free practice.\",\"url\":\"https://leyaa.ai/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\",\"learningResourceType\":\"Quiz\",\"programmingLanguage\":\"Selenium Python\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"teaches\":\"Page title and URL retrieval in Selenium Python - Practice Problems \u0026 Coding Challenges\",\"provider\":{\"@type\":\"Organization\",\"url\":\"https://leyaa.ai\"},\"educationalLevel\":\"Beginner to Advanced\",\"breadcrumb\":{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://leyaa.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Page title and URL retrieval in Selenium Python - Practice Problems \u0026 Coding Challenges\",\"item\":\"https://leyaa.ai/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval\"},{\"@type\":\"ListItem\",\"positio"])</script><script>self.__next_f.push([1,"n\":3,\"name\":\"Challenge\",\"item\":\"https://leyaa.ai/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\"}]}}"])</script><script>self.__next_f.push([1,"7:[[[\"$\",\"script\",\"0\",{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$16\"}}]],[\"$\",\"$L17\",null,{\"subject\":\"selenium-python\",\"dbSubject\":\"selenium_python\",\"part\":\"part-1\",\"pattern\":\"selenium_python_page_title_and_url_retrieval\",\"modeSlug\":\"challenge\",\"lang\":\"en\",\"internalLinks\":[{\"code\":\"LMC\",\"slug\":\"\",\"label\":\"📖 Learn\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval\",\"active\":false},{\"code\":\"LMCWHY\",\"slug\":\"why\",\"label\":\"💡 Why Learn This\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/why\",\"active\":false},{\"code\":\"DLM\",\"slug\":\"deep\",\"label\":\"💡 Deep Learn Mode\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/deep\",\"active\":false},{\"code\":\"TMC\",\"slug\":\"try\",\"label\":\"✏️ Try It\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/try\",\"active\":false},{\"code\":\"VMC\",\"slug\":\"visualize\",\"label\":\"👁 Visualize\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/visualize\",\"active\":false},{\"code\":\"TCM\",\"slug\":\"complexity\",\"label\":\"⏱ Complexity\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/complexity\",\"active\":false},{\"code\":\"CMC\",\"slug\":\"challenge\",\"label\":\"🏆 Challenge\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/challenge\",\"active\":true},{\"code\":\"PMC\",\"slug\":\"project\",\"label\":\"📁 Project\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/project\",\"active\":false},{\"code\":\"RMC\",\"slug\":\"review\",\"label\":\"🧠 Quick Review\",\"href\":\"/codefly/learn/selenium-python/part-1/selenium-python-page-title-and-url-retrieval/review\",\"active\":false}],\"isLoggedIn\":false,\"seoH1\":\"Page title and URL retrieval in Selenium Python - Practice Problems \u0026 Coding Challenges\",\"contentData\":{\"pattern_id\":\"selenium_python_page_title_and_url_retrieval\",\"metadata\":{\"slot_map\":{\"LMCWHY\":\"LMCWHY\",\"LMC\":\"LMC\",\"TMC\":\"TMC\",\"CMC\":\"CMC\",\"RMC\":\"RMC\",\"VMC\":\"EXC\",\"TCM\":\"TFW\",\"PMC\":\"AUT\",\"DLM\":\"DLM\"}},\"modes\":{\"CMC\":{\"topic\":\"Page title and URL retrieval\",\"mode\":\"CMC_v4.2\",\"language\":\"selenium_python\",\"content_type\":\"Software Testing \u0026 QA\",\"challenges\":[{\"id\":\"c1\",\"type\":\"code_output\",\"difficulty\":\"intermediate\",\"title\":\"What is the output of this Selenium Python code snippet?\",\"prompt\":\"Consider the following Selenium code that opens a webpage and prints the title and current URL. What will be printed?\",\"code\":\"from selenium import webdriver\\nfrom selenium.webdriver.chrome.service import Service\\nfrom selenium.webdriver.common.by import By\\n\\nservice = Service('/path/to/chromedriver')\\ndriver = webdriver.Chrome(service=service)\\ndriver.get('https://example.com')\\nprint(driver.title)\\nprint(driver.current_url)\\ndriver.quit()\",\"ordering_targets\":[],\"options\":{\"A\":\"Example Domain\\nhttps://example.com/\",\"B\":\"Example Domain\\nhttps://www.example.com/\",\"C\":\"example domain\\nhttps://example.com\",\"D\":\"Example Domain\\nhttps://example.com\"},\"correct_answer\":[\"A\"],\"time_limit_seconds\":120,\"attempts_allowed\":2,\"hint\":\"Check the exact title text and URL format of https://example.com in a browser.\",\"explanation\":\"The page title of https://example.com is exactly 'Example Domain' with capital letters. The URL returned by driver.current_url includes the trailing slash, so it is 'https://example.com/'.\",\"solution\":\"The code prints the page title 'Example Domain' and the current URL 'https://example.com/'.\",\"tags\":[\"selenium\",\"page title\",\"current URL\",\"webdriver\"]},{\"id\":\"c2\",\"type\":\"assertion\",\"difficulty\":\"intermediate\",\"title\":\"Which assertion correctly verifies the page title after navigation?\",\"prompt\":\"You want to check that after navigating to 'https://example.com', the page title is exactly 'Example Domain'. Which assertion is correct?\",\"code\":\"from selenium import webdriver\\nfrom selenium.webdriver.chrome.service import Service\\n\\nservice = Service('/path/to/chromedriver')\\ndriver = webdriver.Chrome(service=service)\\ndriver.get('https://example.com')\\n\\n# Which assertion below is correct?\\n\",\"ordering_targets\":[],\"options\":{\"A\":\"assert driver.title == 'Example Domain'\",\"B\":\"assert driver.title = 'Example Domain'\",\"C\":\"assert driver.title.contains('Example Domain')\",\"D\":\"assert driver.title != 'Example Domain'\"},\"correct_answer\":[\"A\"],\"time_limit_seconds\":90,\"attempts_allowed\":2,\"hint\":\"Remember the syntax for equality comparison in Python assertions.\",\"explanation\":\"Option A uses the correct equality operator '==' to compare the title string. Option A uses assignment '=' which is invalid in assert. Option A asserts the opposite. Option A uses a method that does not exist on string objects.\",\"solution\":\"Use 'assert driver.title == \\\"Example Domain\\\"' to verify the page title.\",\"tags\":[\"assertion\",\"selenium\",\"page title\",\"python\"]},{\"id\":\"c3\",\"type\":\"locator\",\"difficulty\":\"advanced\",\"title\":\"Which locator strategy is best to retrieve the page title element for testing?\",\"prompt\":\"You want to locate the HTML element that contains the page title text on 'https://example.com' for validation. Which locator is best?\",\"code\":\"\",\"ordering_targets\":[],\"options\":{\"A\":\"driver.find_element(By.ID, 'title')\",\"B\":\"driver.find_element(By.TAG_NAME, 'title')\",\"C\":\"driver.find_element(By.CLASS_NAME, 'title')\",\"D\":\"driver.find_element(By.CSS_SELECTOR, 'head \u003e title')\"},\"correct_answer\":[\"B\"],\"time_limit_seconds\":120,\"attempts_allowed\":2,\"hint\":\"The page title is inside the \u003ctitle\u003e tag in the \u003chead\u003e section.\",\"explanation\":\"The \u003ctitle\u003e tag is a unique tag inside \u003chead\u003e. Using By.TAG_NAME with 'title' correctly locates it. The other options look for id or class which do not exist on the \u003ctitle\u003e tag. CSS selector 'head \u003e title' is valid but Selenium does not support locating \u003ctitle\u003e reliably with CSS selectors.\",\"solution\":\"Use 'driver.find_element(By.TAG_NAME, \\\"title\\\")' to get the page title element.\",\"tags\":[\"selenium\",\"locator\",\"page title\",\"html\"]},{\"id\":\"c4\",\"type\":\"debug\",\"difficulty\":\"advanced\",\"title\":\"Why does this Selenium code fail to get the current URL?\",\"prompt\":\"This code snippet throws an AttributeError. Identify the cause.\",\"code\":\"from selenium import webdriver\\nfrom selenium.webdriver.chrome.service import Service\\n\\nservice = Service('/path/to/chromedriver')\\ndriver = webdriver.Chrome(service=service)\\ndriver.get('https://example.com')\\nurl = driver.get.current_url\\nprint(url)\\ndriver.quit()\",\"ordering_targets\":[],\"options\":{\"A\":\"'driver.get' returns None, so accessing 'current_url' fails\",\"B\":\"'current_url' is a method and needs parentheses\",\"C\":\"'driver' object has no attribute 'get'\",\"D\":\"'get' is a method, not an object; 'current_url' is an attribute of driver, not driver.get\"},\"correct_answer\":[\"D\"],\"time_limit_seconds\":150,\"attempts_allowed\":2,\"hint\":\"Check the difference between methods and attributes on the driver object.\",\"explanation\":\"driver.get is a method to navigate to a URL. current_url is an attribute of driver, not of driver.get. So 'driver.get.current_url' is invalid and causes AttributeError.\",\"solution\":\"Use 'driver.current_url' to get the current URL, not 'driver.get.current_url'.\",\"tags\":[\"selenium\",\"debugging\",\"attribute error\",\"python\"]},{\"id\":\"c5\",\"type\":\"framework\",\"difficulty\":\"expert\",\"title\":\"In a pytest Selenium test, how to correctly assert the page URL after navigation?\",\"prompt\":\"Given a pytest test function using Selenium WebDriver, which assertion correctly verifies the URL after navigating to 'https://example.com'?\",\"code\":\"import pytest\\nfrom selenium import webdriver\\nfrom selenium.webdriver.chrome.service import Service\\n\\n@pytest.fixture\\ndef driver():\\n service = Service('/path/to/chromedriver')\\n driver = webdriver.Chrome(service=service)\\n yield driver\\n driver.quit()\\n\\n\\ndef test_example_url(driver):\\n driver.get('https://example.com')\\n # Which assertion below is correct?\\n\",\"ordering_targets\":[],\"options\":{\"A\":\"assert driver.current_url.contains('example.com')\",\"B\":\"assert driver.current_url is 'https://example.com/'\",\"C\":\"assert driver.current_url == 'https://example.com/'\",\"D\":\"assert driver.current_url.equals('https://example.com/')\"},\"correct_answer\":[\"C\"],\"time_limit_seconds\":180,\"attempts_allowed\":2,\"hint\":\"Use Python string equality operator for exact match in assertions.\",\"explanation\":\"Option C uses '==' which correctly compares strings. Option C uses 'is' which compares object identity, not string content, and is incorrect. Option C calls a non-existent method 'equals' on string. Option C calls a non-existent method 'contains' on string.\",\"solution\":\"Use 'assert driver.current_url == \\\"https://example.com/\\\"' in pytest tests to verify URL.\",\"tags\":[\"pytest\",\"selenium\",\"assertion\",\"url\"]}],\"achievement_badge\":{\"name\":\"Page Title \u0026 URL Master\",\"condition\":\"complete_all_5\"},\"metadata\":{\"version\":\"4.2\",\"content_type\":\"testing\",\"total_challenges\":5,\"estimated_time_minutes\":20}}},\"subject\":\"selenium_python\",\"title\":\"Page title and URL retrieval\"},\"syllabusData\":{\"part\":\"part-1\",\"subject\":\"selenium_python\",\"difficulty\":\"beginner\",\"metadata\":{\"total_topics\":6,\"total_patterns\":50,\"patterns_with_content\":50,\"created_at\":\"2026-03-03T15:53:15.727324Z\",\"version\":\"4.2\",\"upload_tool\":\"upload_to_mongo.py v2.0\"},\"part_title\":\"Foundations\",\"subjectTitle\":\"Selenium Python\",\"topics\":[{\"topic_id\":\"selenium_python_p1_t1\",\"title\":\"Selenium Basics and Setup\",\"order\":1,\"pattern_count\":7,\"patterns\":[{\"pattern_id\":\"selenium_python_why_selenium_is_the_standard_for_web_automation\",\"title\":\"Why Selenium is the standard for web automation\",\"order\":1,\"has_content\":true},{\"pattern_id\":\"selenium_python_selenium_components_webdriver_grid_ide\",\"title\":\"Selenium components (WebDriver, Grid, IDE)\",\"order\":2,\"has_content\":true},{\"pattern_id\":\"selenium_python_selenium_vs_cypress_vs_playwright_comparison\",\"title\":\"Selenium vs Cypress vs Playwright comparison\",\"order\":3,\"has_content\":true},{\"pattern_id\":\"selenium_python_python_environment_setup\",\"title\":\"Python environment setup\",\"order\":4,\"has_content\":true},{\"pattern_id\":\"selenium_python_selenium_installation_pip_install_selenium\",\"title\":\"Selenium installation (pip install selenium)\",\"order\":5,\"has_content\":true},{\"pattern_id\":\"selenium_python_webdriver_setup_chromedriver_geckodriver\",\"title\":\"WebDriver setup (ChromeDriver, GeckoDriver)\",\"order\":6,\"has_content\":true},{\"pattern_id\":\"selenium_python_first_selenium_script\",\"title\":\"First Selenium script\",\"order\":7,\"has_content\":true}]},{\"topic_id\":\"selenium_python_p1_t2\",\"title\":\"Browser Navigation\",\"order\":2,\"pattern_count\":7,\"patterns\":[{\"pattern_id\":\"selenium_python_why_browser_control_is_the_foundation\",\"title\":\"Why browser control is the foundation\",\"order\":1,\"has_content\":true},{\"pattern_id\":\"selenium_python_opening_urls_get\",\"title\":\"Opening URLs (get)\",\"order\":2,\"has_content\":true},{\"pattern_id\":\"selenium_python_page_title_and_url_retrieval\",\"title\":\"Page title and URL retrieval\",\"order\":3,\"has_content\":true},{\"pattern_id\":\"selenium_python_back_forward_and_refresh\",\"title\":\"Back, forward, and refresh\",\"order\":4,\"has_content\":true},{\"pattern_id\":\"selenium_python_maximize_and_minimize_window\",\"title\":\"Maximize and minimize window\",\"order\":5,\"has_content\":true},{\"pattern_id\":\"selenium_python_window_size_control\",\"title\":\"Window size control\",\"order\":6,\"has_content\":true},{\"pattern_id\":\"selenium_python_closing_browser_close_vs_quit\",\"title\":\"Closing browser (close vs quit)\",\"order\":7,\"has_content\":true}]},{\"topic_id\":\"selenium_python_p1_t3\",\"title\":\"Locating Elements\",\"order\":3,\"pattern_count\":10,\"patterns\":[{\"pattern_id\":\"selenium_python_why_element_location_is_the_core_skill\",\"title\":\"Why element location is the core skill\",\"order\":1,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_id\",\"title\":\"Find element by ID\",\"order\":2,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_name\",\"title\":\"Find element by name\",\"order\":3,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_class_name\",\"title\":\"Find element by class name\",\"order\":4,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_tag_name\",\"title\":\"Find element by tag name\",\"order\":5,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_link_text\",\"title\":\"Find element by link text\",\"order\":6,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_partial_link_text\",\"title\":\"Find element by partial link text\",\"order\":7,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_css_selector\",\"title\":\"Find element by CSS selector\",\"order\":8,\"has_content\":true},{\"pattern_id\":\"selenium_python_find_element_by_xpath\",\"title\":\"Find element by XPath\",\"order\":9,\"has_content\":true},{\"pattern_id\":\"selenium_python_finding_multiple_elements\",\"title\":\"Finding multiple elements\",\"order\":10,\"has_content\":true}]},{\"topic_id\":\"selenium_python_p1_t4\",\"title\":\"XPath and CSS Selectors\",\"order\":4,\"pattern_count\":9,\"patterns\":[{\"pattern_id\":\"selenium_python_why_mastering_selectors_ensures_reliability\",\"title\":\"Why mastering selectors ensures reliability\",\"order\":1,\"has_content\":true},{\"pattern_id\":\"selenium_python_absolute_vs_relative_xpath\",\"title\":\"Absolute vs relative XPath\",\"order\":2,\"has_content\":true},{\"pattern_id\":\"selenium_python_xpath_with_attributes\",\"title\":\"XPath with attributes\",\"order\":3,\"has_content\":true},{\"pattern_id\":\"selenium_python_xpath_with_text\",\"title\":\"XPath with text()\",\"order\":4,\"has_content\":true},{\"pattern_id\":\"selenium_python_xpath_axes_parent_child_sibling\",\"title\":\"XPath axes (parent, child, sibling)\",\"order\":5,\"has_content\":true},{\"pattern_id\":\"selenium_python_xpath_with_contains_and_startswith\",\"title\":\"XPath with contains and starts-with\",\"order\":6,\"has_content\":true},{\"pattern_id\":\"selenium_python_css_selector_syntax\",\"title\":\"CSS selector syntax\",\"order\":7,\"has_content\":true},{\"pattern_id\":\"selenium_python_css_attribute_selectors\",\"title\":\"CSS attribute selectors\",\"order\":8,\"has_content\":true},{\"pattern_id\":\"selenium_python_css_pseudoclasses_for_selection\",\"title\":\"CSS pseudo-classes for selection\",\"order\":9,\"has_content\":true}]},{\"topic_id\":\"selenium_python_p1_t5\",\"title\":\"Interacting with Elements\",\"order\":5,\"pattern_count\":9,\"patterns\":[{\"pattern_id\":\"selenium_python_why_element_interaction_drives_test_scenarios\",\"title\":\"Why element interaction drives test scenarios\",\"order\":1,\"has_content\":true},{\"pattern_id\":\"selenium_python_click_actions\",\"title\":\"Click actions\",\"order\":2,\"has_content\":true},{\"pattern_id\":\"selenium_python_typing_text_send_keys\",\"title\":\"Typing text (send_keys)\",\"order\":3,\"has_content\":true},{\"pattern_id\":\"selenium_python_clearing_input_fields\",\"title\":\"Clearing input fields\",\"order\":4,\"has_content\":true},{\"pattern_id\":\"selenium_python_submitting_forms\",\"title\":\"Submitting forms\",\"order\":5,\"has_content\":true},{\"pattern_id\":\"selenium_python_getting_element_text\",\"title\":\"Getting element text\",\"order\":6,\"has_content\":true},{\"pattern_id\":\"selenium_python_getting_element_attributes\",\"title\":\"Getting element attributes\",\"order\":7,\"has_content\":true},{\"pattern_id\":\"selenium_python_checking_element_state_displayed_enabled_selected\",\"title\":\"Checking element state (displayed, enabled, selected)\",\"order\":8,\"has_content\":true},{\"pattern_id\":\"selenium_python_element_screenshot\",\"title\":\"Element screenshot\",\"order\":9,\"has_content\":true}]},{\"topic_id\":\"selenium_python_p1_t6\",\"title\":\"Waits and Synchronization\",\"order\":6,\"pattern_count\":8,\"patterns\":[{\"pattern_id\":\"selenium_python_why_synchronization_prevents_flaky_tests\",\"title\":\"Why synchronization prevents flaky tests\",\"order\":1,\"has_content\":true},{\"pattern_id\":\"selenium_python_implicit_waits\",\"title\":\"Implicit waits\",\"order\":2,\"has_content\":true},{\"pattern_id\":\"selenium_python_explicit_waits_webdriverwait\",\"title\":\"Explicit waits (WebDriverWait)\",\"order\":3,\"has_content\":true},{\"pattern_id\":\"selenium_python_expected_conditions\",\"title\":\"Expected conditions\",\"order\":4,\"has_content\":true},{\"pattern_id\":\"selenium_python_fluent_waits\",\"title\":\"Fluent waits\",\"order\":5,\"has_content\":true},{\"pattern_id\":\"selenium_python_custom_wait_conditions\",\"title\":\"Custom wait conditions\",\"order\":6,\"has_content\":true},{\"pattern_id\":\"selenium_python_timesleep_vs_proper_waits\",\"title\":\"Time.sleep vs proper waits\",\"order\":7,\"has_content\":true},{\"pattern_id\":\"selenium_python_staleelementreferenceexception_handling\",\"title\":\"StaleElementReferenceException handling\",\"order\":8,\"has_content\":true}]}]},\"modeCode\":\"CMC\",\"productId\":\"codefly\"}]]\n"])</script></body></html>