title
Selenium WebDriver with Java for beginners

description
Hi! Welcome to the tutorials of selenium framework. 👨🏼‍💻Contents👨🏼‍💻 00:24:01 1 - What is Selenium? Introduction to Selenium | Selenium Basics 00:24:18 2 - Selenium Installation On Windows | Selenium WebDriver Setup 00:42:20 3 - How to Write and Run a Test Case in Selenium 01:01:10 4 - Selenium Locators | Locators In Selenium WebDriver With Examples 01:34:20 5 - How to Write and Run a Test Case in Selenium 02:24:33 6 - Using XPath In Selenium With Examples 02:46:32 7 - XPath Functions and Operators 03:08:27 8 - Using XPath Axes 03:44:56 9 - Selenium Testing with Shadow DOM 04:37:55 10 - Selenium WebDriver - Browser Commands 05:07:04 11 - Selenium WebDriver - Navigation Commands 05:36:31 12 - Selenium WebDriver - WebElement Commands 05:55:48 13 - How to handle multiple windows in Selenium 06:27:38 14 - Handle Drop Down And Multi Select List Using Selenium WebDriver 06:52:16 15 - Handle Auto Suggestion In Selenium Webdriver 07:24:39 16 - How to handle Checkbox in Selenium | Selenium Webdriver with Java Selenium Framework | Web driver Architecture | RC Architecture and Drawbacks | advantages and disadvantages of selenium | Selenium Suites . Software testing, an integral part of the development process for software applications that meet the highest standards of quality. Lack of proper testing leads to the bad quality product, delayed delivery, unsatisfied custom service and increase in costs. Due to these drawbacks automation testing came into picture. In this tutorial we will learn about the selenium framework its advantages and disadvantages and its components Contents: What is selenium and why it is called as a framework? Why selenium? Components of selenium Versions of selenium Why selenium web driver? Architecture of RC Drawbacks of RC Web Driver Architecture Drawbacks of Web driver Advantages and Disadvantages of selenium #selenium #Automation #automationengineer #automationtesting #howtobecomeatestautomationengineer #QA #AutomationTool

detail
{'title': 'Selenium WebDriver with Java for beginners', 'heatmap': [{'end': 2201.628, 'start': 1648.635, 'weight': 1}, {'end': 4679.131, 'start': 4398.014, 'weight': 0.761}, {'end': 10451.78, 'start': 10174.047, 'weight': 0.717}, {'end': 14582.308, 'start': 14024.093, 'weight': 0.812}, {'end': 23932.982, 'start': 23639.831, 'weight': 0.734}], 'summary': 'Tutorial series covers selenium webdriver with java for beginners, including selenium framework, testing benefits, challenges, setup, automation of browser actions, web automation, xpath tutorials, advanced xpath access, web automation and xpath navigation, automating chrome browser, understanding and implementing shadow dom, selenium browser commands, webdriver commands, handling windows, dropdown menus, and web interactions, providing practical examples, 2 passing and 2 failing test cases, and a total of almost 13,000 following elements and 1705 following siblings for xpath navigation.', 'chapters': [{'end': 210.116, 'segs': [{'end': 42.136, 'src': 'embed', 'start': 15.844, 'weight': 0, 'content': [{'end': 22.83, 'text': 'For this you need to have some prior knowledge about the java and I have also explained what are the requirements of an automation tester.', 'start': 15.844, 'duration': 6.986}, {'end': 25.172, 'text': 'I will give the link in the description box.', 'start': 23.471, 'duration': 1.701}, {'end': 33.695, 'text': 'so, when you go for an interview as an automation tester, the very first question that comes to you is what is selenium?', 'start': 26.053, 'duration': 7.642}, {'end': 34.995, 'text': 'see, this is very important.', 'start': 33.695, 'duration': 1.3}, {'end': 42.136, 'text': 'before mastering your skills in selenium, you need to know what is selenium is, at components as advantages and disadvantages,', 'start': 34.995, 'duration': 7.141}], 'summary': 'Prior knowledge of java and understanding selenium components is crucial for automation testers. check the link for details.', 'duration': 26.292, 'max_score': 15.844, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ15844.jpg'}, {'end': 161.884, 'src': 'embed', 'start': 137.675, 'weight': 1, 'content': [{'end': 144.558, 'text': 'See the problem here is not that you have to create folders but the problem is that you have to follow the same process again and again.', 'start': 137.675, 'duration': 6.883}, {'end': 147.879, 'text': "But if you use a framework, we don't have to worry about that.", 'start': 145.238, 'duration': 2.641}, {'end': 151.32, 'text': "you just need to code your logic, and that's it.", 'start': 148.539, 'duration': 2.781}, {'end': 152.761, 'text': "so that's framework.", 'start': 151.32, 'duration': 1.441}, {'end': 161.884, 'text': 'framework just gives us the basic structure round which we will add our code for greater functionality of the system.', 'start': 152.761, 'duration': 9.123}], 'summary': 'Using a framework eliminates repetitive processes, allowing focus on coding logic for greater system functionality.', 'duration': 24.209, 'max_score': 137.675, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ137675.jpg'}], 'start': 0.049, 'title': 'Selenium framework and portable web framework', 'summary': 'Introduces the selenium framework, emphasizing its significance as an automation tool, the need for prior knowledge in java, and its role in testing web applications. it also explains the concept of portable framework for web applications and its benefits in reusability and minimizing repetitive tasks.', 'chapters': [{'end': 57.306, 'start': 0.049, 'title': 'Selenium framework overview', 'summary': 'Introduces the selenium framework, highlighting its significance as an automation tool, the importance of understanding its components, advantages, disadvantages, and different types of frameworks, emphasizing the need for prior knowledge in java, and emphasizing its role as a portable framework for testing web applications.', 'duration': 57.257, 'highlights': ['The chapter emphasizes the importance of understanding the components, advantages, disadvantages, and different types of frameworks of the selenium framework before mastering the skills, and highlights the significance of having prior knowledge in Java.', 'It mentions the significance of Selenium as a portable framework for testing web applications and highlights the need for prior knowledge in Java for studying the selenium webdriver.', 'The tutorial emphasizes the need for prior knowledge about Java and provides a link for the requirements of an automation tester.']}, {'end': 210.116, 'start': 58.167, 'title': 'Understanding portable framework for web applications', 'summary': 'Explains the concept of portable framework for web applications, highlighting the meaning of portable, framework, and web applications, and emphasizing the benefits of using a framework for reusability and minimizing repetitive tasks.', 'duration': 151.949, 'highlights': ['The concept of portable framework is explained, emphasizing the meaning of portable, framework, and web applications, and highlighting the benefits of using a framework for reusability and minimizing repetitive tasks.', 'Framework provides the basic structure for adding code to enhance the functionality of the system, enabling developers to focus on coding logic without the need to create repetitive folders or processes.', 'Web-based applications, desktop applications, and mobile applications are defined, distinguishing the accessibility and installation methods for each type of application.']}], 'duration': 210.067, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ49.jpg', 'highlights': ['The chapter emphasizes the importance of understanding the components, advantages, disadvantages, and different types of frameworks of the selenium framework before mastering the skills, and highlights the significance of having prior knowledge in Java.', 'The concept of portable framework is explained, emphasizing the meaning of portable, framework, and web applications, and highlighting the benefits of using a framework for reusability and minimizing repetitive tasks.', 'Framework provides the basic structure for adding code to enhance the functionality of the system, enabling developers to focus on coding logic without the need to create repetitive folders or processes.']}, {'end': 1378.051, 'segs': [{'end': 581.991, 'src': 'embed', 'start': 554.575, 'weight': 0, 'content': [{'end': 564.905, 'text': "Second, it's not suitable for dynamic web pages because it is just a prototyping tool which works well only with the static web pages and not with the dynamic web pages.", 'start': 554.575, 'duration': 10.33}, {'end': 568.76, 'text': 'Third, data driven testing is not possible.', 'start': 566.018, 'duration': 2.742}, {'end': 572.183, 'text': 'Fourth, cannot provide detailed test reports.', 'start': 569.361, 'duration': 2.822}, {'end': 577.147, 'text': 'Whereas RC, the next version of IDE can provide detailed reports.', 'start': 572.964, 'duration': 4.183}, {'end': 581.991, 'text': 'Then we cannot perform database testing through IDE.', 'start': 578.648, 'duration': 3.343}], 'summary': 'Ide is limited: not suitable for dynamic web pages, lacks data-driven testing, and detailed reports.', 'duration': 27.416, 'max_score': 554.575, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ554575.jpg'}, {'end': 1142.479, 'src': 'embed', 'start': 1111.503, 'weight': 1, 'content': [{'end': 1114.706, 'text': 'Now the API in RC is very confusing and redundant.', 'start': 1111.503, 'duration': 3.203}, {'end': 1118.87, 'text': 'For example, we have commands like click or click at commands.', 'start': 1114.826, 'duration': 4.044}, {'end': 1127.567, 'text': 'Which one to use? So it was very confusing for the developers and the direct browsers interpreted different commands also.', 'start': 1119.676, 'duration': 7.891}, {'end': 1131.994, 'text': 'which was very challenging for the developers working on different browsers.', 'start': 1128.632, 'duration': 3.362}, {'end': 1134.615, 'text': 'For different browsers, there were different commands.', 'start': 1132.034, 'duration': 2.581}, {'end': 1136.716, 'text': 'So it was very challenging.', 'start': 1135.315, 'duration': 1.401}, {'end': 1142.479, 'text': 'Whereas for Selenium WebDriver, it is very simpler API and it is very easier to use.', 'start': 1137.356, 'duration': 5.123}], 'summary': "Rc api is confusing and redundant, unlike selenium webdriver's simpler api.", 'duration': 30.976, 'max_score': 1111.503, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ1111503.jpg'}, {'end': 1231.227, 'src': 'embed', 'start': 1204.066, 'weight': 3, 'content': [{'end': 1212.671, 'text': 'so RC and web driver this support multiple browser, but RC does not support HTML unit, that is the headless browser,', 'start': 1204.066, 'duration': 8.605}, {'end': 1218.074, 'text': 'whereas the web driver supports the headless browser and it makes the execution more faster.', 'start': 1212.671, 'duration': 5.403}, {'end': 1222.879, 'text': 'Next, we have the comparison in terms of testing mobile applications.', 'start': 1218.295, 'duration': 4.584}, {'end': 1231.227, 'text': 'Selenium RC does not support testing of mobile applications, whereas Selenium WebDriver supports testing of mobile applications.', 'start': 1223.359, 'duration': 7.868}], 'summary': 'Selenium webdriver supports multiple browsers and headless browser for faster execution, and also supports testing mobile applications, unlike selenium rc.', 'duration': 27.161, 'max_score': 1204.066, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ1204066.jpg'}], 'start': 210.877, 'title': 'Selenium testing benefits and components', 'summary': 'Discusses the benefits of using selenium for web application testing, including cost-effectiveness, flexibility, multiple browser and os support, and the ability to perform parallel and cross-browser execution. it also covers the components of selenium, including rc, webdriver, and grid, highlighting their functionalities and drawbacks, as well as the evolution of selenium versions from 1 to 4.', 'chapters': [{'end': 459.361, 'start': 210.877, 'title': 'Selenium testing benefits', 'summary': 'Discusses the benefits of using selenium for web application testing, highlighting its cost-effectiveness, flexibility, multiple browser and os support, and the ability to perform parallel and cross-browser execution, as well as an overview of selenium components.', 'duration': 248.484, 'highlights': ['Selenium is cost-effective as it is open source compared to paid tools like QTP and UFT. Selenium is free and open source, providing a cost-effective solution for web application testing.', "Selenium offers flexibility by supporting multiple programming languages such as Java, C Sharp, Python, and Ruby, as compared to QTP which supports only VBScript. Selenium supports multiple programming languages, offering greater flexibility compared to QTP's limitation to VBScript.", 'Selenium supports multiple browsers like Chrome, Firefox, and Safari, as well as multiple operating systems including Windows, Linux, and Apple, providing extensive coverage for testing. Selenium supports a wide range of browsers and operating systems, offering broad testing coverage.', 'Selenium enables parallel testing, allowing test scripts to open and execute in multiple browsers simultaneously, as well as cross-browser execution, offering efficient testing methods. Selenium supports parallel testing, allowing simultaneous execution in multiple browsers, as well as cross-browser execution for efficient testing.', 'The Selenium suite comprises four components: IDE, RC, WebDriver, and Grid, with the IDE being the simplest tool used for prototyping and demo purposes. The Selenium suite includes components such as IDE, RC, WebDriver, and Grid, with IDE being a simple tool primarily used for prototyping and demos.']}, {'end': 906.429, 'start': 459.881, 'title': 'Selenium components and versions', 'summary': 'Discusses the components of selenium, including rc, webdriver, and grid, highlighting their functionalities and drawbacks. it also covers the evolution of selenium versions from 1 to 4, explaining the introduction and deprecation of various components and the new features in selenium 4.', 'duration': 446.548, 'highlights': ['Selenium 4 introduces new features such as multiple ways to take screenshots, new APIs for accessing web elements, and other enhancements. Selenium 4 brings new features like multiple screenshot methods, additional APIs for web element access, and various other enhancements.', 'Selenium version 3 deprecated RC and included only WebDriver, while version 2 introduced WebDriver alongside RC and Grid. Selenium version 3 deprecated RC and retained only WebDriver, while version 2 introduced both WebDriver and RC alongside Grid.', 'Selenium Grid allows running multiple test scripts simultaneously on different browsers and platforms, enabling parallel testing. Selenium Grid facilitates parallel testing by running multiple test scripts concurrently on diverse browsers and platforms.', 'Selenium IDE is limited to recording tests in Firefox only and lacks support for dynamic web pages, data-driven testing, and detailed test reports. Selenium IDE restricts test recording to Firefox, lacks dynamic web page support, data-driven testing capabilities, and detailed test reports.']}, {'end': 1378.051, 'start': 907.89, 'title': 'Selenium rc vs webdriver', 'summary': 'Explains the interaction and communication process between the selenium rc server and browser, highlighting the drawbacks of rc and the advantages of webdriver, including speed, api simplicity, browser support, and mobile application testing, while also addressing the advantages and disadvantages of selenium as an open source tool.', 'duration': 470.161, 'highlights': ['Selenium WebDriver architecture eliminates the need for an additional server, resulting in faster execution with direct browser communication. The Selenium WebDriver architecture eliminates the need for an additional server, resulting in faster execution, as there is no intermediate server, allowing direct communication with the web browser.', 'Selenium WebDriver API is simpler and easier to use compared to the confusing and redundant API of Selenium RC. Selenium WebDriver offers a simpler and easier-to-use API, such as the click function and send key command, compared to the confusing and redundant API of Selenium RC, providing better clarity for developers.', 'WebDriver offers better speed in execution compared to Selenium RC, due to the absence of an additional server. WebDriver offers better speed in execution compared to Selenium RC, as it does not involve an additional server, resulting in faster overall cycle and command execution.', 'WebDriver supports headless browser (HTML unit) for faster testing, whereas Selenium RC does not have this support. WebDriver supports headless browser (HTML unit) for faster testing, providing support for a browser without a UI, which is not available in Selenium RC, contributing to quicker execution.', 'Selenium WebDriver supports testing of mobile applications, unlike Selenium RC, which lacks this capability. Selenium WebDriver supports testing of mobile applications, unlike Selenium RC, which does not have this capability, making it more versatile for application testing.']}], 'duration': 1167.174, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ210877.jpg', 'highlights': ['Selenium WebDriver supports testing of mobile applications, unlike Selenium RC, which lacks this capability.', 'Selenium 4 introduces new features such as multiple ways to take screenshots, new APIs for accessing web elements, and other enhancements.', 'Selenium supports parallel testing, allowing test scripts to open and execute in multiple browsers simultaneously, as well as cross-browser execution, offering efficient testing methods.', 'Selenium WebDriver API is simpler and easier to use compared to the confusing and redundant API of Selenium RC.', 'Selenium is cost-effective as it is open source compared to paid tools like QTP and UFT.']}, {'end': 2541.072, 'segs': [{'end': 1446.08, 'src': 'embed', 'start': 1418.651, 'weight': 5, 'content': [{'end': 1424.873, 'text': 'That means you can record also the test scripts that you have written.', 'start': 1418.651, 'duration': 6.222}, {'end': 1427.573, 'text': 'Whereas over here, it is just a programming interface.', 'start': 1425.153, 'duration': 2.42}, {'end': 1429.454, 'text': 'Each and every command needs to be written.', 'start': 1427.833, 'duration': 1.621}, {'end': 1431.954, 'text': 'So at times it becomes very time consuming.', 'start': 1429.854, 'duration': 2.1}, {'end': 1434.375, 'text': 'So these are the disadvantages of Selenium.', 'start': 1432.174, 'duration': 2.201}, {'end': 1435.435, 'text': 'till now.', 'start': 1434.935, 'duration': 0.5}, {'end': 1439.037, 'text': 'we have learned what is selenium, why is it called as a framework?', 'start': 1435.435, 'duration': 3.602}, {'end': 1446.08, 'text': 'we have learned the versions of selenium, their components, their drawbacks, and why are we starting the web driver.', 'start': 1439.037, 'duration': 7.043}], 'summary': "Selenium has drawbacks such as time-consuming test script writing and requires each command to be written. also, it's important to understand its versions, components, and the reason for starting the web driver.", 'duration': 27.429, 'max_score': 1418.651, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ1418651.jpg'}, {'end': 2201.628, 'src': 'heatmap', 'start': 1627.557, 'weight': 9, 'content': [{'end': 1628.718, 'text': "And yeah, it's installing now.", 'start': 1627.557, 'duration': 1.161}, {'end': 1630.339, 'text': 'It might take some time.', 'start': 1629.219, 'duration': 1.12}, {'end': 1636.443, 'text': 'So now you can see that my Java JDK 15 has been successfully installed.', 'start': 1631.14, 'duration': 5.303}, {'end': 1638.565, 'text': "So let's check this out.", 'start': 1637.384, 'duration': 1.181}, {'end': 1642.728, 'text': 'Simply just click on close and over here, just click CMD.', 'start': 1638.605, 'duration': 4.123}, {'end': 1648.635, 'text': "let's see if this has installed or not properly in our computer.", 'start': 1645.134, 'duration': 3.501}, {'end': 1651.215, 'text': 'so we will check it through command prompt.', 'start': 1648.635, 'duration': 2.58}, {'end': 1659.197, 'text': 'simply just type java space dash version.', 'start': 1651.215, 'duration': 7.982}, {'end': 1661.077, 'text': 'so here you can see that.', 'start': 1659.197, 'duration': 1.88}, {'end': 1665.138, 'text': 'we can see that we have downloaded our java jdk version 15..', 'start': 1661.077, 'duration': 4.061}, {'end': 1669.819, 'text': 'so, once we have installed our jdk, we have to set the environment variables.', 'start': 1665.138, 'duration': 4.681}, {'end': 1678.311, 'text': 'all we need to do is just go here and write environment variable and here you can see edit the system, environment variable.', 'start': 1669.819, 'duration': 8.492}, {'end': 1679.511, 'text': 'click on this.', 'start': 1678.311, 'duration': 1.2}, {'end': 1683.313, 'text': 'here you can see in the advanced tab there is environment variable.', 'start': 1679.511, 'duration': 3.802}, {'end': 1694.657, 'text': 'click over here and in system variables, go to path, click edit, and here we will edit the path, how you going to do that.', 'start': 1683.313, 'duration': 11.344}, {'end': 1706.375, 'text': 'just simply go where you have installed your jdk, that is c drive program files, java JDK bin folder.', 'start': 1694.657, 'duration': 11.718}, {'end': 1721.489, 'text': 'open your bin folder, copy this path and place it over here and click on ok, ok, and over here also.', 'start': 1706.375, 'duration': 15.114}, {'end': 1725.393, 'text': 'ok, so you have set your environment variable path.', 'start': 1721.489, 'duration': 3.904}, {'end': 1729.441, 'text': 'also, Now you will install the IntelliJ IDEA IDE.', 'start': 1725.393, 'duration': 4.048}, {'end': 1734.724, 'text': 'Simply just go to the official website of the IntelliJ IDEA IDE and click on download over here.', 'start': 1729.541, 'duration': 5.183}, {'end': 1737.706, 'text': 'So there are two versions over here, ultimate and community.', 'start': 1735.144, 'duration': 2.562}, {'end': 1739.907, 'text': 'We will download the community version.', 'start': 1737.846, 'duration': 2.061}, {'end': 1743.389, 'text': 'Click on download.', 'start': 1742.548, 'duration': 0.841}, {'end': 1748.283, 'text': 'Here you can see that it started downloading.', 'start': 1746.462, 'duration': 1.821}, {'end': 1749.844, 'text': 'It might take some time.', 'start': 1748.863, 'duration': 0.981}, {'end': 1751.105, 'text': 'So just wait.', 'start': 1749.864, 'duration': 1.241}, {'end': 1755.567, 'text': 'Now I have downloaded the IntelliJ IDE, the community version.', 'start': 1751.365, 'duration': 4.202}, {'end': 1756.368, 'text': 'Here you can see.', 'start': 1755.627, 'duration': 0.741}, {'end': 1757.368, 'text': "Now let's install it.", 'start': 1756.388, 'duration': 0.98}, {'end': 1758.429, 'text': 'Simply just click it.', 'start': 1757.408, 'duration': 1.021}, {'end': 1759.99, 'text': 'Click on run.', 'start': 1759.29, 'duration': 0.7}, {'end': 1768.375, 'text': 'Click next.', 'start': 1767.194, 'duration': 1.181}, {'end': 1773.24, 'text': "next. now we're here.", 'start': 1771.337, 'duration': 1.903}, {'end': 1775.903, 'text': 'uh, create desktop shortcut.', 'start': 1773.24, 'duration': 2.663}, {'end': 1784.754, 'text': "yes, for the 64-bit launcher and update context menu, i'll click this checkbox.", 'start': 1775.903, 'duration': 8.851}, {'end': 1786.236, 'text': 'create associations.', 'start': 1784.754, 'duration': 1.482}, {'end': 1788.759, 'text': "for now i don't want to create any association.", 'start': 1786.236, 'duration': 2.523}, {'end': 1793.089, 'text': 'then update path variable restart needed.', 'start': 1789.847, 'duration': 3.242}, {'end': 1797.293, 'text': 'yes, i will add the launcher dir to the path.', 'start': 1793.089, 'duration': 4.204}, {'end': 1806.199, 'text': "i'll click this checkbox as well and then click on next.", 'start': 1797.293, 'duration': 8.906}, {'end': 1814.725, 'text': 'click on install and here you can see that the intellij idea ide is getting installed Now.', 'start': 1806.199, 'duration': 8.526}, {'end': 1818.768, 'text': 'here you can see that my IntelliJ IDEA Community version is being installed.', 'start': 1814.725, 'duration': 4.043}, {'end': 1820.61, 'text': "So I'll just click on this.", 'start': 1819.449, 'duration': 1.161}, {'end': 1845.371, 'text': 'simply click on new project then here just click on java and here you can see that the java version 15.', 'start': 1837.088, 'duration': 8.283}, {'end': 1850.973, 'text': 'this is the jdk that we have installed before.', 'start': 1845.371, 'duration': 5.602}, {'end': 1854.935, 'text': 'simply just click on next, create project from template.', 'start': 1850.973, 'duration': 3.962}, {'end': 1858.616, 'text': "i'll just name it as hello and finish.", 'start': 1854.935, 'duration': 3.681}, {'end': 1893.499, 'text': "I'll just change the interface of this IDE.", 'start': 1888.055, 'duration': 5.444}, {'end': 1908.289, 'text': 'all we need to do is simply just go to file, go to settings and here in the appearance bar, just change the theme to IntelliJ light.', 'start': 1893.499, 'duration': 14.79}, {'end': 1910.19, 'text': 'so this is how you can do it.', 'start': 1908.289, 'duration': 1.901}, {'end': 1912.632, 'text': "now let's run a program saying hello world.", 'start': 1910.19, 'duration': 2.442}, {'end': 1922.064, 'text': 'simply just write s out, and here you can see we have the system out dot println.', 'start': 1914.122, 'duration': 7.942}, {'end': 1925.645, 'text': 'so this intellij idea ide has a feature of auto completing.', 'start': 1922.064, 'duration': 3.581}, {'end': 1934.988, 'text': "also, just simply by writing s out, it will be system.out.println, and i'll write hello everyone.", 'start': 1925.645, 'duration': 9.343}, {'end': 1953.003, 'text': "i'll save it and i'll click on this button.", 'start': 1945.433, 'duration': 7.57}, {'end': 1955.146, 'text': 'so here you can see the output.', 'start': 1953.003, 'duration': 2.143}, {'end': 1956.648, 'text': "that's hello everyone.", 'start': 1955.146, 'duration': 1.502}, {'end': 1958.67, 'text': "that's what i printed over here.", 'start': 1956.648, 'duration': 2.022}, {'end': 1961.274, 'text': 'so our program has been successfully executed.', 'start': 1958.67, 'duration': 2.604}, {'end': 1963.276, 'text': 'so this is all about the intellij idea id.', 'start': 1961.274, 'duration': 2.002}, {'end': 1969.567, 'text': 'So now we have installed the IntelliJ IDEA IDE and the Java JDK also.', 'start': 1964.724, 'duration': 4.843}, {'end': 1975.37, 'text': 'So we will install some of the drivers and the JAV files that we require in the Selenium.', 'start': 1970.107, 'duration': 5.263}, {'end': 1982.774, 'text': 'So all you need to do is just you need to go to this official page of the Selenium is Selenium HQ.', 'start': 1975.79, 'duration': 6.984}, {'end': 1986.356, 'text': 'I will give all the links in the description box so it will be easier for you.', 'start': 1982.914, 'duration': 3.442}, {'end': 1992.06, 'text': 'Click on this link that is a selenium.dev.', 'start': 1989.939, 'duration': 2.121}, {'end': 1997.413, 'text': 'and go to downloads.', 'start': 1995.35, 'duration': 2.063}, {'end': 2010.569, 'text': 'this is the official website of selenium and we will download all our drivers and jar files from this website only Now here first we will download some of the Selenium client and web driver language bindings.', 'start': 1997.413, 'duration': 13.156}, {'end': 2014.811, 'text': 'Now Selenium supports many languages like Ruby, Java, Python, C Sharp.', 'start': 2010.669, 'duration': 4.142}, {'end': 2017.092, 'text': 'We will be working on Java.', 'start': 2015.331, 'duration': 1.761}, {'end': 2018.633, 'text': 'We will be working with Java.', 'start': 2017.372, 'duration': 1.261}, {'end': 2026.697, 'text': 'So in order to create scripts of Selenium web driver, you need to make use of language specific client drivers.', 'start': 2018.733, 'duration': 7.964}, {'end': 2029.418, 'text': 'So these are the drivers of Java.', 'start': 2026.777, 'duration': 2.641}, {'end': 2033.776, 'text': 'See here, there are some of the versions that I have told before as well.', 'start': 2030.595, 'duration': 3.181}, {'end': 2041.02, 'text': 'There is a stable version that is a 3.141 and the alpha version that is recently released.', 'start': 2033.836, 'duration': 7.184}, {'end': 2044.701, 'text': 'I have discussed about the versions of Selenium in the previous videos.', 'start': 2041.58, 'duration': 3.121}, {'end': 2045.822, 'text': 'You can check out that.', 'start': 2044.741, 'duration': 1.081}, {'end': 2053.185, 'text': 'For now, to download these jar files, we will click over here, download.', 'start': 2046.502, 'duration': 6.683}, {'end': 2059.848, 'text': 'And here you can see a zip file has been downloaded.', 'start': 2057.167, 'duration': 2.681}, {'end': 2063.688, 'text': 'here you can see that it is downloaded.', 'start': 2062.045, 'duration': 1.643}, {'end': 2072.587, 'text': 'simply click on this file, just extract it, and here you can see.', 'start': 2063.688, 'duration': 8.899}, {'end': 2080.907, 'text': 'Now see, I would recommend you to make a separate folder for JAR files, so it will be very easy and beneficial for you,', 'start': 2074.226, 'duration': 6.681}, {'end': 2083.668, 'text': 'because we will be downloading many JAR files and drivers.', 'start': 2080.907, 'duration': 2.761}, {'end': 2091.248, 'text': 'So it will be very confusing and here we will be giving the paths also in the program when we execute our test cases.', 'start': 2084.388, 'duration': 6.86}, {'end': 2094.37, 'text': 'So it will be very difficult that which driver is placed where.', 'start': 2091.309, 'duration': 3.061}, {'end': 2099.331, 'text': "So it's better that you would make a separate folder for those drivers and JAR files.", 'start': 2094.949, 'duration': 4.382}, {'end': 2113.222, 'text': "So here in D drive I'm making a separate folder named selenium jar and drivers.", 'start': 2100.251, 'duration': 12.971}, {'end': 2118.224, 'text': "okay, so i'll be placing all my jar files and drivers in this file.", 'start': 2113.222, 'duration': 5.002}, {'end': 2122.765, 'text': 'all i need to do is those files which i had downloaded here.', 'start': 2118.224, 'duration': 4.541}, {'end': 2124.466, 'text': 'you can see that this is jar file.', 'start': 2122.765, 'duration': 1.701}, {'end': 2126.646, 'text': 'this is executable jar files.', 'start': 2124.466, 'duration': 2.18}, {'end': 2132.568, 'text': "these two jar files i'll copy first and place it over here.", 'start': 2126.646, 'duration': 5.922}, {'end': 2140.773, 'text': "Then the next I'll go in libs folder and over here all these jar files.", 'start': 2136.872, 'duration': 3.901}, {'end': 2144.274, 'text': 'I will copy it and place it here.', 'start': 2140.773, 'duration': 3.501}, {'end': 2151.095, 'text': 'Okay So these are the jar files which we downloaded.', 'start': 2147.894, 'duration': 3.201}, {'end': 2155.296, 'text': 'Now we will add all these jar files in the IntelliJ IDEA IDE.', 'start': 2151.575, 'duration': 3.721}, {'end': 2158.417, 'text': 'So now we will add the jar files.', 'start': 2156.456, 'duration': 1.961}, {'end': 2160.237, 'text': 'So simply just go on file.', 'start': 2158.557, 'duration': 1.68}, {'end': 2163.978, 'text': 'Go to project structure.', 'start': 2162.298, 'duration': 1.68}, {'end': 2178.547, 'text': 'go to modules and go to the dependency tab, you can see your add sign, this plus sign.', 'start': 2170.922, 'duration': 7.625}, {'end': 2190.574, 'text': 'click on this, click on jar or directories, then go to the file where your jar files are placed.', 'start': 2178.547, 'duration': 12.027}, {'end': 2201.628, 'text': 'So here you can see all these jar files which I have pasted in this Selenium jar and drivers.', 'start': 2196.564, 'duration': 5.064}], 'summary': 'Installed java jdk 15, intellij idea, and selenium drivers. configured environment variables and added jar files to intellij idea ide.', 'duration': 33.52, 'max_score': 1627.557, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ1627557.jpg'}, {'end': 2113.222, 'src': 'embed', 'start': 2080.907, 'weight': 0, 'content': [{'end': 2083.668, 'text': 'because we will be downloading many JAR files and drivers.', 'start': 2080.907, 'duration': 2.761}, {'end': 2091.248, 'text': 'So it will be very confusing and here we will be giving the paths also in the program when we execute our test cases.', 'start': 2084.388, 'duration': 6.86}, {'end': 2094.37, 'text': 'So it will be very difficult that which driver is placed where.', 'start': 2091.309, 'duration': 3.061}, {'end': 2099.331, 'text': "So it's better that you would make a separate folder for those drivers and JAR files.", 'start': 2094.949, 'duration': 4.382}, {'end': 2113.222, 'text': "So here in D drive I'm making a separate folder named selenium jar and drivers.", 'start': 2100.251, 'duration': 12.971}], 'summary': 'To avoid confusion, create a separate folder for downloading drivers and jar files.', 'duration': 32.315, 'max_score': 2080.907, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ2080907.jpg'}, {'end': 2263.782, 'src': 'embed', 'start': 2228.063, 'weight': 10, 'content': [{'end': 2228.784, 'text': 'Just wait for it.', 'start': 2228.063, 'duration': 0.721}, {'end': 2238.187, 'text': 'So here you can see now those jar files are added.', 'start': 2235.646, 'duration': 2.541}, {'end': 2252.053, 'text': 'So now we have installed the JDK, we have set the path for it and then we have installed the IntelliJ IDE and we have added the JAR files also.', 'start': 2240.865, 'duration': 11.188}, {'end': 2254.395, 'text': "So now let's install the drivers.", 'start': 2252.734, 'duration': 1.661}, {'end': 2258.858, 'text': 'Just go to the official website of Selenium, that will be selenium.dev.', 'start': 2254.815, 'duration': 4.043}, {'end': 2263.782, 'text': 'Click on this and click on downloads.', 'start': 2259.819, 'duration': 3.963}], 'summary': 'Installed jdk, set path, added jar files, and installed intellij ide. now installing selenium drivers from selenium.dev.', 'duration': 35.719, 'max_score': 2228.063, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ2228063.jpg'}], 'start': 1378.051, 'title': 'Challenges and setup of selenium testing', 'summary': 'Discusses the challenges of using selenium, such as limited technical support, time-consuming test case writing, and the need for external communities for problem-solving. it also covers advantages and disadvantages of selenium, and introduces the installation of intellij idea ide, java jdk, and setting up selenium environment with system requirements of 2gb ram and 3gb disk space.', 'chapters': [{'end': 1457.486, 'start': 1378.051, 'title': 'Challenges of selenium testing', 'summary': 'Discusses the challenges of using selenium, including limited technical support due to its open source nature, time-consuming test case writing, and the need for external communities for problem-solving. it also covers the advantages and disadvantages of selenium, and introduces the installation and implementation process.', 'duration': 79.435, 'highlights': ['Selenium lacks technical support as it is open source, leading to reliance on internet communities for problem-solving.', 'Writing test cases in Selenium can be time-consuming due to its programming interface, in contrast to IDE-based tools like QTP and UFT.', 'The disadvantages of Selenium include the need to manually write each command, making it a time-consuming process.', 'The chapter introduces the advantages and disadvantages of Selenium, providing a comprehensive overview of its capabilities and limitations.', 'The upcoming tutorial will cover the installation and implementation of Selenium, setting the stage for practical application and usage.']}, {'end': 2044.701, 'start': 1457.486, 'title': 'Installing intellij idea and java jdk for selenium', 'summary': 'Covers the installation of intellij idea ide and java jdk, including setting environment variables, with system requirements of 2gb ram and 3gb disk space. additionally, it demonstrates the creation and execution of a java project in intellij idea ide and provides guidance on downloading selenium client and web driver language bindings from the official selenium website.', 'duration': 587.215, 'highlights': ['The chapter covers the installation of IntelliJ IDEA IDE and Java JDK, including setting environment variables, with system requirements of 2GB RAM and 3GB disk space. This highlights the key process of installing IntelliJ IDEA IDE and Java JDK, emphasizing system requirements and environment variable setup.', 'Demonstrates the creation and execution of a Java project in IntelliJ IDEA IDE. This highlights the practical demonstration of creating and running a Java project in IntelliJ IDEA IDE, showcasing the utilization of the installed JDK.', 'Provides guidance on downloading Selenium client and web driver language bindings from the official Selenium website. This highlights the instruction on obtaining Selenium client and web driver language bindings, specifically focusing on the Java language for Selenium web driver scripts.']}, {'end': 2541.072, 'start': 2044.741, 'title': 'Setting up selenium environment', 'summary': 'Explains the process of setting up selenium environment, including downloading and organizing jar files, adding jar files to intellij idea, and downloading and installing drivers for chrome and firefox.', 'duration': 496.331, 'highlights': ['Download and organize JAR files in a separate folder for easy access and management. Organizing JAR files into a separate folder will make it easier to manage and access them, especially when multiple JAR files and drivers are involved.', 'Adding JAR files to IntelliJ IDEA by navigating to project structure, modules, and dependencies, then selecting and adding the JAR files. The process of adding JAR files to IntelliJ IDEA involves navigating to project structure, modules, dependencies, and selecting the JAR files for addition.', 'Downloading and installing drivers for Chrome and Firefox by matching the driver versions with the browser versions for compatibility. The process involves matching the driver versions with the browser versions to ensure compatibility, then downloading and installing the drivers for Chrome and Firefox accordingly.']}], 'duration': 1163.021, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ1378051.jpg', 'highlights': ['Selenium lacks technical support as it is open source, leading to reliance on internet communities for problem-solving.', 'Writing test cases in Selenium can be time-consuming due to its programming interface, in contrast to IDE-based tools like QTP and UFT.', 'The disadvantages of Selenium include the need to manually write each command, making it a time-consuming process.', 'The chapter introduces the advantages and disadvantages of Selenium, providing a comprehensive overview of its capabilities and limitations.', 'The upcoming tutorial will cover the installation and implementation of Selenium, setting the stage for practical application and usage.', 'The chapter covers the installation of IntelliJ IDEA IDE and Java JDK, including setting environment variables, with system requirements of 2GB RAM and 3GB disk space. This highlights the key process of installing IntelliJ IDEA IDE and Java JDK, emphasizing system requirements and environment variable setup.', 'Demonstrates the creation and execution of a Java project in IntelliJ IDEA IDE. This highlights the practical demonstration of creating and running a Java project in IntelliJ IDEA IDE, showcasing the utilization of the installed JDK.', 'Provides guidance on downloading Selenium client and web driver language bindings from the official Selenium website. This highlights the instruction on obtaining Selenium client and web driver language bindings, specifically focusing on the Java language for Selenium web driver scripts.', 'Download and organize JAR files in a separate folder for easy access and management. Organizing JAR files into a separate folder will make it easier to manage and access them, especially when multiple JAR files and drivers are involved.', 'Adding JAR files to IntelliJ IDEA by navigating to project structure, modules, and dependencies, then selecting and adding the JAR files. The process of adding JAR files to IntelliJ IDEA involves navigating to project structure, modules, dependencies, and selecting the JAR files for addition.', 'Downloading and installing drivers for Chrome and Firefox by matching the driver versions with the browser versions for compatibility. The process involves matching the driver versions with the browser versions to ensure compatibility, then downloading and installing the drivers for Chrome and Firefox accordingly.']}, {'end': 4787.85, 'segs': [{'end': 2807.543, 'src': 'embed', 'start': 2782.332, 'weight': 0, 'content': [{'end': 2788.46, 'text': "This shows that you have successfully installed your Java JDK 15, and if it's not coming this way,", 'start': 2782.332, 'duration': 6.128}, {'end': 2794.749, 'text': 'and if you type this command and this is not the output of it, you need to go through the steps again and install it again.', 'start': 2788.46, 'duration': 6.289}, {'end': 2803.581, 'text': "so now we have installed our java jdk on on our system, so we're going to set the environment variable.", 'start': 2795.816, 'duration': 7.765}, {'end': 2807.543, 'text': 'simply just type environment variable and here you can see edit the system.', 'start': 2803.581, 'duration': 3.962}], 'summary': 'Successfully installed java jdk 15, now setting environment variable.', 'duration': 25.211, 'max_score': 2782.332, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ2782332.jpg'}, {'end': 3557.686, 'src': 'embed', 'start': 3474.443, 'weight': 2, 'content': [{'end': 3476.124, 'text': 'for safari we have safari driver.', 'start': 3474.443, 'duration': 1.681}, {'end': 3478.705, 'text': 'for chrome we have the chrome driver.', 'start': 3476.764, 'duration': 1.941}, {'end': 3483.448, 'text': 'so basically we will perform all our test cases in chrome driver.', 'start': 3478.705, 'duration': 4.743}, {'end': 3492.093, 'text': "we're going to launch the chrome driver frequently, but in the next tutorial i will explain how to launch drivers like the firefox driver,", 'start': 3483.448, 'duration': 8.645}, {'end': 3493.633, 'text': 'the chrome driver.', 'start': 3492.093, 'duration': 1.54}, {'end': 3497.556, 'text': 'so for that we need to download the drivers for it.', 'start': 3493.633, 'duration': 3.923}, {'end': 3510.706, 'text': 'so all we need to do is just click on documentation over here, and here you can see the latest beta version that we have is the chrome driver 86,', 'start': 3497.556, 'duration': 13.15}, {'end': 3513.828, 'text': 'and the stable version that we have, the 85.', 'start': 3510.706, 'duration': 3.122}, {'end': 3519.412, 'text': 'now, see over here you need to check your chrome browser version first.', 'start': 3513.828, 'duration': 5.584}, {'end': 3529.875, 'text': 'so what you need to do is go on settings and go to about chrome, and here you can see your version.', 'start': 3519.412, 'duration': 10.463}, {'end': 3540.182, 'text': "it's version 85, and if it is not updated, then please update it and then download your driver, because your driver version and your google browser,", 'start': 3529.875, 'duration': 10.307}, {'end': 3547.888, 'text': "this chrome browser should match, and if it's not matching and then your browser will not be launched.", 'start': 3540.182, 'duration': 7.706}, {'end': 3552.151, 'text': 'so here i have the stable version, that is, the 85 version.', 'start': 3547.888, 'duration': 4.263}, {'end': 3557.686, 'text': "so i'll be clicking over here And here you can see this page.", 'start': 3552.151, 'duration': 5.535}], 'summary': 'Tutorial on launching and downloading chrome driver, ensuring version compatibility.', 'duration': 83.243, 'max_score': 3474.443, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ3474443.jpg'}, {'end': 3727.312, 'src': 'embed', 'start': 3701.346, 'weight': 5, 'content': [{'end': 3706.727, 'text': 'So as we know, before automating any test script, we have to prepare manual test cases first.', 'start': 3701.346, 'duration': 5.381}, {'end': 3709.868, 'text': 'So first, we will create two sets of test cases over here.', 'start': 3707.147, 'duration': 2.721}, {'end': 3712.283, 'text': 'So the first set.', 'start': 3711.482, 'duration': 0.801}, {'end': 3717.146, 'text': 'In the first set, we will have three test cases.', 'start': 3714.964, 'duration': 2.182}, {'end': 3727.312, 'text': 'The first test case is open the Chrome browser or to launch the Chrome browser.', 'start': 3717.786, 'duration': 9.526}], 'summary': 'Prepare manual test cases before automating, create two sets, first set contains three test cases.', 'duration': 25.966, 'max_score': 3701.346, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ3701346.jpg'}, {'end': 3921.301, 'src': 'embed', 'start': 3889.393, 'weight': 10, 'content': [{'end': 3895.096, 'text': 'So first we will execute for the Chrome driver and then I will execute the test cases for the Firefox driver.', 'start': 3889.393, 'duration': 5.703}, {'end': 3899.899, 'text': 'Okay, for the Chrome browser, we require the Chrome driver.', 'start': 3896.357, 'duration': 3.542}, {'end': 3903.08, 'text': "So now what we're going to do first?", 'start': 3900.859, 'duration': 2.221}, {'end': 3911.318, 'text': 'the very first step that we are having is the open the chrome browser.', 'start': 3903.08, 'duration': 8.238}, {'end': 3912.499, 'text': 'this is the first step, right.', 'start': 3911.318, 'duration': 1.181}, {'end': 3913.479, 'text': "so how we're going to do that?", 'start': 3912.499, 'duration': 0.98}, {'end': 3921.301, 'text': "first thing, we're going to create the object of chrome chrome driver.", 'start': 3913.479, 'duration': 7.822}], 'summary': 'Executing test cases for chrome and firefox drivers, requiring chrome driver and creating object of chrome driver.', 'duration': 31.908, 'max_score': 3889.393, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ3889393.jpg'}, {'end': 4679.131, 'src': 'heatmap', 'start': 4326.297, 'weight': 4, 'content': [{'end': 4330.398, 'text': 'Okay, so this is the complete hierarchy of the Selenium class and the interface.', 'start': 4326.297, 'duration': 4.101}, {'end': 4335.1, 'text': "So now, let's move to the program.", 'start': 4331.519, 'duration': 3.581}, {'end': 4340.078, 'text': 'So now over here for opening the Chrome browser.', 'start': 4336.755, 'duration': 3.323}, {'end': 4344.781, 'text': 'the first thing that we did over here is we created a object of Chrome driver right?', 'start': 4340.078, 'duration': 4.703}, {'end': 4346.863, 'text': 'Now, how do we refer this object??', 'start': 4345.062, 'duration': 1.801}, {'end': 4353.368, 'text': 'Here in the so remember, this Chrome driver is a class right?', 'start': 4347.523, 'duration': 5.845}, {'end': 4358.232, 'text': 'As we are shown in the hierarchy, it is a class.', 'start': 4353.648, 'duration': 4.584}, {'end': 4365.698, 'text': 'Now here, just refer to this hierarchy again and here we can see that the web driver is the parent interface.', 'start': 4358.932, 'duration': 6.766}, {'end': 4371.747, 'text': 'here you can see that the web driver is the parent interface.', 'start': 4368.925, 'duration': 2.822}, {'end': 4377.011, 'text': 'and now you must be saying no, the remote driver, the remote web driver, is the parent.', 'start': 4371.747, 'duration': 5.264}, {'end': 4379.873, 'text': "but whatever talking about, i'm talking about the interface.", 'start': 4377.011, 'duration': 2.862}, {'end': 4380.974, 'text': "focus on what i'm saying.", 'start': 4379.873, 'duration': 1.101}, {'end': 4382.155, 'text': "i'm talking about interface.", 'start': 4380.974, 'duration': 1.181}, {'end': 4387.059, 'text': 'the web driver is the parent interface and the remote web driver is a class.', 'start': 4382.155, 'duration': 4.904}, {'end': 4390.982, 'text': 'okay, remote web driver is a class and the web driver is an interface.', 'start': 4387.059, 'duration': 3.923}, {'end': 4393.664, 'text': 'so here the parent interface will be web driver.', 'start': 4390.982, 'duration': 2.682}, {'end': 4398.014, 'text': 'so the webdriver interface will give a reference to the chrome driver.', 'start': 4394.344, 'duration': 3.67}, {'end': 4402.985, 'text': "how i'm going to write webdriver I will give a reference.", 'start': 4398.014, 'duration': 4.971}, {'end': 4406.307, 'text': 'like driver is equal to new Chrome driver.', 'start': 4402.985, 'duration': 3.322}, {'end': 4412.77, 'text': "So now you're in this command web driver driver is equal to new Chrome driver.", 'start': 4407.167, 'duration': 5.603}, {'end': 4421.155, 'text': 'We are using the dynamic polymorphism concept, in which the child class object, child class object, that is the Chrome driver,', 'start': 4412.85, 'duration': 8.305}, {'end': 4429.239, 'text': 'is referred by the parent interface, that is, the web driver, through a reference variable, and that reference variable is called as driver.', 'start': 4421.155, 'duration': 8.084}, {'end': 4432.758, 'text': 'Okay, so this is how.', 'start': 4429.259, 'duration': 3.499}, {'end': 4443.742, 'text': "uh, we are opening the chrome browser, so let's run this command first.", 'start': 4432.758, 'duration': 10.984}, {'end': 4447.784, 'text': 'so our chrome browser is not launched.', 'start': 4443.742, 'duration': 4.042}, {'end': 4453.386, 'text': "why, let's see here it shows an error which says illegal state except exception,", 'start': 4447.784, 'duration': 5.602}, {'end': 4463.577, 'text': 'which says the path to the driver executable must be set by the webdriver.chrome.driver system property.', 'start': 4455.455, 'duration': 8.122}, {'end': 4467.879, 'text': 'okay, this is your error.', 'start': 4463.577, 'duration': 4.302}, {'end': 4475.061, 'text': 'the path to the driver executable must be set by the webdriver.chrome.driver system property.', 'start': 4467.879, 'duration': 7.182}, {'end': 4481.072, 'text': 'So here it says that I have to define a property, a system property.', 'start': 4476.206, 'duration': 4.866}, {'end': 4485.157, 'text': 'and to define this system property we have a system class.', 'start': 4481.072, 'duration': 4.085}, {'end': 4489.643, 'text': 'So I will write system.setProperty.', 'start': 4485.918, 'duration': 3.725}, {'end': 4497.774, 'text': 'Now this set property command has two values need to be entered over here.', 'start': 4492.332, 'duration': 5.442}, {'end': 4500.595, 'text': 'One is the string key and is the string value.', 'start': 4497.934, 'duration': 2.661}, {'end': 4506.478, 'text': "In the string key, what we have to enter, it's given over here itself, webdriver.chromedrive driver.", 'start': 4501.316, 'duration': 5.162}, {'end': 4509.839, 'text': 'We will simply copy this and paste it over here.', 'start': 4507.058, 'duration': 2.781}, {'end': 4511.74, 'text': 'This is your string key.', 'start': 4510.039, 'duration': 1.701}, {'end': 4517.56, 'text': 'whereas the value will be the path where your executable file is saved.', 'start': 4513.157, 'duration': 4.403}, {'end': 4519.101, 'text': 'That is the Chrome driver.', 'start': 4518.12, 'duration': 0.981}, {'end': 4529.107, 'text': "So in my case, I'll go to D drive, synonym jars and drivers, drivers and the Chrome driver because we're launching the Chrome driver.", 'start': 4519.861, 'duration': 9.246}, {'end': 4535.331, 'text': 'So I will simply just copy this path and I will paste it over here.', 'start': 4529.627, 'duration': 5.704}, {'end': 4543.707, 'text': "Change these slashes OK, and we're going to include our file name over here.", 'start': 4537.252, 'duration': 6.455}, {'end': 4547.349, 'text': 'Our file name is ChromeDriver.', 'start': 4544.407, 'duration': 2.942}, {'end': 4553.912, 'text': "OK, so we're going to write ChromeDriver.exe.", 'start': 4548.509, 'duration': 5.403}, {'end': 4558.594, 'text': "Now, if you're using Mac, you don't need to write exe because Mac does not support exe files.", 'start': 4554.072, 'duration': 4.522}, {'end': 4560.956, 'text': "So there's no requirement to write exe.", 'start': 4559.175, 'duration': 1.781}, {'end': 4564.037, 'text': "But if you're using Windows, then you're going to write exe.", 'start': 4560.976, 'duration': 3.061}, {'end': 4569.1, 'text': "OK, we're going to execute this statement.", 'start': 4564.337, 'duration': 4.763}, {'end': 4574.036, 'text': 'so here you can see my chrome browser is launched.', 'start': 4569.915, 'duration': 4.121}, {'end': 4575.697, 'text': 'you can see this chrome browser.', 'start': 4574.036, 'duration': 1.661}, {'end': 4580.879, 'text': 'it is launched which says chrome is being controlled by automated test software.', 'start': 4575.697, 'duration': 5.182}, {'end': 4586.861, 'text': 'now this chrome browser and this chrome browser, the original chrome browser.', 'start': 4580.879, 'duration': 5.982}, {'end': 4588.401, 'text': 'these two chrome browsers are different.', 'start': 4586.861, 'duration': 1.54}, {'end': 4592.282, 'text': 'here we cannot see any tab which shows that chrome browser is being controlled.', 'start': 4588.401, 'duration': 3.881}, {'end': 4597.325, 'text': 'but over here you can see chrome is being controlled by automated test software.', 'start': 4592.282, 'duration': 5.043}, {'end': 4599.227, 'text': "there's a tab over here.", 'start': 4597.325, 'duration': 1.902}, {'end': 4610.275, 'text': 'okay, so this is difference between the uh chrome browser that we are launching through automation and the chrome browser that we have originally on our computers.', 'start': 4599.227, 'duration': 11.048}, {'end': 4613.637, 'text': "so i'll just close this.", 'start': 4610.275, 'duration': 3.362}, {'end': 4621.944, 'text': 'so we have launched the chrome browser and yes, uh, one important question that you must be thinking is uh,', 'start': 4613.637, 'duration': 8.307}, {'end': 4631.132, 'text': 'by looking at this uh diagram now over here, you must be thinking, as i said, that the parent uh interface is the web driver,', 'start': 4621.944, 'duration': 9.188}, {'end': 4636.177, 'text': "but you're the super parent interface, that this, the search context, is also there.", 'start': 4631.132, 'duration': 5.045}, {'end': 4651.118, 'text': "so why are we not writing a search context driver like i'll just write driver one equal to new chrome driver?", 'start': 4636.177, 'duration': 14.941}, {'end': 4652.818, 'text': 'now, this command is also correct.', 'start': 4651.118, 'duration': 1.7}, {'end': 4654.819, 'text': "i'm not saying that this command is wrong,", 'start': 4652.818, 'duration': 2.001}, {'end': 4662.621, 'text': 'but why are we not writing search context driver is equal to new chrome driver and why are we writing web driver driver is equal to new chrome driver.', 'start': 4654.819, 'duration': 7.802}, {'end': 4666.882, 'text': 'the reason behind this is refer at this diagram again here.', 'start': 4662.621, 'duration': 4.261}, {'end': 4674.284, 'text': 'i have told before that the search context interface contains only two methods, that is, the find element and the find elements.', 'start': 4666.882, 'duration': 7.402}, {'end': 4679.131, 'text': 'So if we are writing search context driver, one is equal to new Chrome driver.', 'start': 4675.049, 'duration': 4.082}], 'summary': 'Demonstration of using selenium to open and control chrome browser, including setting system properties for chromedriver.', 'duration': 76.688, 'max_score': 4326.297, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ4326297.jpg'}, {'end': 4652.818, 'src': 'embed', 'start': 4621.944, 'weight': 13, 'content': [{'end': 4631.132, 'text': 'by looking at this uh diagram now over here, you must be thinking, as i said, that the parent uh interface is the web driver,', 'start': 4621.944, 'duration': 9.188}, {'end': 4636.177, 'text': "but you're the super parent interface, that this, the search context, is also there.", 'start': 4631.132, 'duration': 5.045}, {'end': 4651.118, 'text': "so why are we not writing a search context driver like i'll just write driver one equal to new chrome driver?", 'start': 4636.177, 'duration': 14.941}, {'end': 4652.818, 'text': 'now, this command is also correct.', 'start': 4651.118, 'duration': 1.7}], 'summary': "Parent interface is the web driver, with search context as the super parent. command 'driver one equal to new chrome driver' is also correct.", 'duration': 30.874, 'max_score': 4621.944, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ4621944.jpg'}], 'start': 2541.072, 'title': 'Setting up selenium with java', 'summary': 'Discusses the step-by-step process of installing intellij idea ide, java jdk, and selenium framework on windows 10, emphasizing the need to install jdk before intellij idea ide, setting environment variables, creating separate folders for jar files and drivers, and executing test cases for chrome and firefox drivers.', 'chapters': [{'end': 2621.183, 'start': 2541.072, 'title': 'Installing intellij idea ide and selenium framework on windows 10', 'summary': 'Discusses the installation of intellij idea ide and the required drivers and jar files for the selenium framework on windows 10, highlighting the features and system requirements of intellij idea ide and emphasizing the need to install jdk before intellij idea ide.', 'duration': 80.111, 'highlights': ['IntelliJ IDEA is an integrated development environment written in Java for developing computer software, supporting JVM languages like Java, Kotlin, Scala, Groovy, frameworks like Spring, Java EE, mobile development, and web development with system requirements of 2 GB RAM and 3 GB disk space.', 'Before installing IntelliJ IDEA IDE, it is essential to install the JDK first.']}, {'end': 3126.896, 'start': 2621.183, 'title': 'Installing java jdk and intellij idea ide', 'summary': "Describes the step-by-step process of downloading and installing java jdk 15 and intellij idea ide community version on windows, including setting environment variables, with a demonstration of running a 'hello world' program in intellij idea ide.", 'duration': 505.713, 'highlights': ['The process of downloading and installing Java JDK 15 on Windows, including setting environment variables, is detailed. The chapter details the step-by-step process of downloading and installing Java JDK 15 on Windows, including setting environment variables to ensure successful installation.', 'The step-by-step process of downloading and installing IntelliJ IDEA IDE Community Version on Windows is explained. The chapter explains the step-by-step process of downloading and installing IntelliJ IDEA IDE Community Version on Windows, including the options to select during the installation process.', "A demonstration of running a 'Hello World' program in IntelliJ IDEA IDE is provided. The chapter provides a demonstration of running a 'Hello World' program in IntelliJ IDEA IDE, showcasing the features and functionality of the IDE."]}, {'end': 3652.078, 'start': 3127.056, 'title': 'Setting up selenium with java', 'summary': 'Covers the installation of jdk and intellij idea, downloading selenium java stable version 3.141.59, creating separate folders for jar files and drivers, adding jar files to project structure, and downloading chrome and firefox drivers for selenium.', 'duration': 525.022, 'highlights': ['Downloading Selenium Java stable version 3.141.59 The tutorial guides the user to download the stable version of Selenium for Java, emphasizing the version 3.141.59 as the recommended one.', 'Creating separate folders for jar files and drivers Emphasizes the importance of creating separate folders for jar files and drivers to maintain a systematic approach and avoid issues in locating and managing the files.', 'Adding jar files to project structure Provides step-by-step instructions on adding the downloaded jar files to the project structure in IntelliJ IDEA, ensuring the necessary dependencies are included for Selenium with Java.', 'Downloading Chrome and Firefox drivers for Selenium Guides the user through the process of downloading the Chrome driver and Firefox driver, emphasizing the importance of matching the browser version with the driver version for successful execution.']}, {'end': 4011.415, 'start': 3652.078, 'title': 'Selenium webdriver basics', 'summary': 'Covers creating test cases for launching and navigating browsers, understanding the hierarchy of interfaces and classes in selenium webdriver, and executing test cases for chrome and firefox drivers. it also includes a demonstration of the search context interface and its methods.', 'duration': 359.337, 'highlights': ['Creating test cases for launching and navigating browsers The tutorial covers creating two sets of test cases, with the first set including opening the Chrome browser, navigating to www.google.com, and closing the browser, and the second set involving launching the Firefox browser, navigating to www.google.com, and closing the browser.', 'Understanding the hierarchy of interfaces and classes in Selenium WebDriver The tutorial explains the hierarchy of interfaces and classes in Selenium WebDriver, highlighting the search context interface as the super interface of the web driver and its methods, findElement and findElements, used for locating web elements on a web page.', 'Executing test cases for Chrome and Firefox drivers The chapter demonstrates the execution of test cases for the Chrome driver and the Firefox driver, emphasizing the need to have the respective drivers installed and the ability to apply the knowledge of launching a particular browser to others based on requirements.', 'Demonstrating the search context interface and its methods The tutorial introduces the search context interface and its methods, findElement and findElements, which are utilized to locate web elements such as text boxes and dropdown menus on a web page, with practical implementation of test cases planned for later.']}, {'end': 4787.85, 'start': 4011.415, 'title': 'Selenium class interface hierarchy', 'summary': 'Explains the hierarchy of selenium classed interface, including the super interface search context, web driver interface with nested interfaces, remote web driver as a fully implemented class, and the supported browsers like chrome, firefox, and internet explorer.', 'duration': 776.435, 'highlights': ['The remote web driver is a fully implemented class which contains the abstract methods of the web driver interface and the search context interface and the take screenshot interface and the javascript executor. The remote web driver is a fully implemented class that includes abstract methods from the web driver and search context interfaces, as well as the take screenshot and javascript executor interfaces.', 'The web driver interface, which includes nested interfaces also, has many abstract methods like windows navigation, target locator, timeouts options. The web driver interface contains nested interfaces with abstract methods for windows navigation, target locator, and timeouts options.', 'The web driver also includes the nested interfaces, like which has windows navigation, target locator, and timeouts option, through which we can perform various operations. The web driver includes nested interfaces for windows navigation, target locator, and timeouts options, enabling various operations to be performed.', 'The remote web driver extends the supported browsers, such as Chrome and Firefox, and is a fully implemented class. The remote web driver extends supported browsers like Chrome and Firefox, serving as a fully implemented class.']}], 'duration': 2246.778, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ2541072.jpg', 'highlights': ['Before installing IntelliJ IDEA IDE, it is essential to install the JDK first.', 'The process of downloading and installing Java JDK 15 on Windows, including setting environment variables, is detailed.', 'The step-by-step process of downloading and installing IntelliJ IDEA IDE Community Version on Windows is explained.', "A demonstration of running a 'Hello World' program in IntelliJ IDEA IDE is provided.", 'Downloading Selenium Java stable version 3.141.59', 'Creating separate folders for jar files and drivers Emphasizes the importance of creating separate folders for jar files and drivers to maintain a systematic approach and avoid issues in locating and managing the files.', 'Adding jar files to project structure Provides step-by-step instructions on adding the downloaded jar files to the project structure in IntelliJ IDEA, ensuring the necessary dependencies are included for Selenium with Java.', 'Downloading Chrome and Firefox drivers for Selenium Guides the user through the process of downloading the Chrome driver and Firefox driver, emphasizing the importance of matching the browser version with the driver version for successful execution.', 'Creating test cases for launching and navigating browsers The tutorial covers creating two sets of test cases, with the first set including opening the Chrome browser, navigating to www.google.com, and closing the browser, and the second set involving launching the Firefox browser, navigating to www.google.com, and closing the browser.', 'Understanding the hierarchy of interfaces and classes in Selenium WebDriver The tutorial explains the hierarchy of interfaces and classes in Selenium WebDriver, highlighting the search context interface as the super interface of the web driver and its methods, findElement and findElements, used for locating web elements on a web page.', 'Executing test cases for Chrome and Firefox drivers The chapter demonstrates the execution of test cases for the Chrome driver and the Firefox driver, emphasizing the need to have the respective drivers installed and the ability to apply the knowledge of launching a particular browser to others based on requirements.', 'The remote web driver is a fully implemented class which contains the abstract methods of the web driver interface and the search context interface and the take screenshot interface and the javascript executor.', 'The web driver interface, which includes nested interfaces also, has many abstract methods like windows navigation, target locator, timeouts options.', 'The web driver also includes the nested interfaces, like which has windows navigation, target locator, and timeouts option, through which we can perform various operations.', 'The remote web driver extends the supported browsers, such as Chrome and Firefox, and is a fully implemented class.']}, {'end': 5632.071, 'segs': [{'end': 4815.94, 'src': 'embed', 'start': 4787.85, 'weight': 1, 'content': [{'end': 4792.412, 'text': 'the best practice is to include the web driver driver is equal to new chrome driver.', 'start': 4787.85, 'duration': 4.562}, {'end': 4797.713, 'text': "okay, so i'll delete these commands.", 'start': 4793.211, 'duration': 4.502}, {'end': 4800.354, 'text': 'and yeah, through system.set property.', 'start': 4797.713, 'duration': 2.641}, {'end': 4803.335, 'text': 'uh, we have a key value.', 'start': 4800.354, 'duration': 2.981}, {'end': 4805.556, 'text': 'uh, we have entered the string value over here.', 'start': 4803.335, 'duration': 2.221}, {'end': 4812.599, 'text': 'that is the webdriver.chrome.driver, and here we have entered the path of our executable chrome driver.', 'start': 4805.556, 'duration': 7.043}, {'end': 4815.94, 'text': 'next we have written webdriver driver is equal to new chrome driver.', 'start': 4812.599, 'duration': 3.341}], 'summary': 'Best practice: use new chrome driver and set property with key-value pair.', 'duration': 28.09, 'max_score': 4787.85, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ4787850.jpg'}, {'end': 4939.19, 'src': 'embed', 'start': 4868.307, 'weight': 0, 'content': [{'end': 4873.969, 'text': 'The Chrome browser is launched, but it has not navigated to the URL.', 'start': 4868.307, 'duration': 5.662}, {'end': 4874.99, 'text': "Why? Let's see.", 'start': 4874.23, 'duration': 0.76}, {'end': 4885.68, 'text': 'So here it says Chrome driver was started successfully and here it says invalid argument exception.', 'start': 4877.694, 'duration': 7.986}, {'end': 4887.101, 'text': 'There is invalid argument.', 'start': 4885.72, 'duration': 1.381}, {'end': 4889.263, 'text': 'Why? Let me tell you.', 'start': 4887.582, 'duration': 1.681}, {'end': 4896.589, 'text': 'Here when we write the URL, you need to write the complete URL which includes HTTPS colon and slash.', 'start': 4889.824, 'duration': 6.765}, {'end': 4899.331, 'text': "Now let's see.", 'start': 4898.73, 'duration': 0.601}, {'end': 4907.786, 'text': 'So our Chrome browser is launched and here it is.', 'start': 4904.645, 'duration': 3.141}, {'end': 4911.728, 'text': 'It is navigated to the URL that is the google.com.', 'start': 4908.227, 'duration': 3.501}, {'end': 4914.429, 'text': "Okay I'll just close this.", 'start': 4912.128, 'duration': 2.301}, {'end': 4917.171, 'text': "I'll close this as well.", 'start': 4916.01, 'duration': 1.161}, {'end': 4924.034, 'text': 'Okay So now you have understood to navigate to a URL, we will write driver.get.', 'start': 4917.791, 'duration': 6.243}, {'end': 4926.915, 'text': 'The get command is used to navigate to the URL.', 'start': 4924.054, 'duration': 2.861}, {'end': 4931.597, 'text': 'Okay So the third test case.', 'start': 4927.235, 'duration': 4.362}, {'end': 4936.128, 'text': 'is to close the browser.', 'start': 4933.846, 'duration': 2.282}, {'end': 4939.19, 'text': 'how are we going to do that?', 'start': 4936.128, 'duration': 3.062}], 'summary': 'Chrome browser successfully launched, navigated to google.com, and closed. explanation of url format and driver.get command provided.', 'duration': 70.883, 'max_score': 4868.307, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ4868307.jpg'}], 'start': 4787.85, 'title': 'Automating browser actions and selenium webdriver browser automation', 'summary': 'Demonstrates how to automate browser actions using selenium webdriver, including launching chrome and firefox browsers, navigating to specific urls, and closing the browsers, with emphasis on common steps and key differences between the browsers. it also discusses the importance of selenium webdriver in automating browser testing, including the need to support cross-browser testing, and highlights best practices for writing webdriver commands and the hierarchy of classes and interfaces within selenium webdriver.', 'chapters': [{'end': 5281.523, 'start': 4787.85, 'title': 'Automating browser actions', 'summary': 'Demonstrates how to automate browser actions using selenium webdriver, including launching chrome and firefox browsers, navigating to specific urls, and closing the browsers, with emphasis on common steps and key differences between the browsers.', 'duration': 493.673, 'highlights': ["The chapter demonstrates the process of automating browser actions using Selenium WebDriver, including launching Chrome and Firefox browsers, navigating to specific URLs, and closing the browsers. The key steps involve initializing the WebDriver, navigating to URLs using 'get' command, and closing the browsers using 'close' command.", "Launching the Chrome browser and navigating to a URL involves initializing the WebDriver with 'new ChromeDriver()' and using 'driver.get()' to navigate to the specified URL, while closing the browser is achieved by using 'driver.close()'.", "Emphasis is placed on the common steps involved in automating browser actions, such as initializing the WebDriver and using 'get' command to navigate to URLs, which are consistent across different test cases for launching browsers and navigating to URLs.", "The tutorial also highlights the process of automating browser actions for the Firefox browser, involving similar steps to the Chrome browser, such as initializing the WebDriver with 'new FirefoxDriver()' and using 'driver.get()' to navigate to the specified URL, followed by closing the browser using 'driver.close()'.", 'The tutorial addresses the possibility of including multiple browsers in a single program, demonstrating the sequential execution of launching and closing both Chrome and Firefox browsers using different reference variables, emphasizing that there is no harm in including multiple browsers in one program.']}, {'end': 5632.071, 'start': 5282.898, 'title': 'Selenium webdriver browser automation', 'summary': 'Discusses the importance of selenium webdriver in automating browser testing, including the need to support cross-browser testing, and highlights best practices for writing webdriver commands and the hierarchy of classes and interfaces within selenium webdriver.', 'duration': 349.173, 'highlights': ['The chapter discusses the importance of Selenium WebDriver in automating browser testing It mentions the need to automate at least 500 test cases, with 250 requiring automation, emphasizing the significance of browser automation in large-scale testing.', 'The need to support cross-browser testing is highlighted It emphasizes the requirement to simultaneously run multiple browsers and the advantage of not being specific to a single browser when writing WebDriver commands.', 'Best practices for writing WebDriver commands are explained It contrasts the drawbacks of being specific to a particular browser when writing commands (e.g., FirefoxDriver driver = new FirefoxDriver) versus the flexibility of using WebDriverDriver = new ChromeDriver, enabling easy switching between browsers without extensive code changes.', 'The hierarchy of classes and interfaces within Selenium WebDriver is detailed It covers the relationships between SearchContext, WebDriver, RemoteWebDriver, and browser-specific drivers, providing insights into the structure and implementation of Selenium WebDriver.']}], 'duration': 844.221, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ4787850.jpg', 'highlights': ['The tutorial addresses the possibility of including multiple browsers in a single program, demonstrating the sequential execution of launching and closing both Chrome and Firefox browsers using different reference variables, emphasizing that there is no harm in including multiple browsers in one program.', 'The need to support cross-browser testing is highlighted. It emphasizes the requirement to simultaneously run multiple browsers and the advantage of not being specific to a single browser when writing WebDriver commands.', "The chapter demonstrates the process of automating browser actions using Selenium WebDriver, including launching Chrome and Firefox browsers, navigating to specific URLs, and closing the browsers. The key steps involve initializing the WebDriver, navigating to URLs using 'get' command, and closing the browsers using 'close' command.", 'The chapter discusses the importance of Selenium WebDriver in automating browser testing. It mentions the need to automate at least 500 test cases, with 250 requiring automation, emphasizing the significance of browser automation in large-scale testing.', 'Best practices for writing WebDriver commands are explained. It contrasts the drawbacks of being specific to a particular browser when writing commands (e.g., FirefoxDriver driver = new FirefoxDriver) versus the flexibility of using WebDriverDriver = new ChromeDriver, enabling easy switching between browsers without extensive code changes.']}, {'end': 8641.338, 'segs': [{'end': 7042.61, 'src': 'embed', 'start': 7017.307, 'weight': 1, 'content': [{'end': 7022.771, 'text': "We'll write driver dot find element by dot link text printed summer dress.", 'start': 7017.307, 'duration': 5.464}, {'end': 7024.813, 'text': 'Here you can see this is printed summer dress.', 'start': 7022.871, 'duration': 1.942}, {'end': 7029.457, 'text': 'This link text is used to identify this element.', 'start': 7025.373, 'duration': 4.084}, {'end': 7032.481, 'text': 'here you can see there is printed summer dress.', 'start': 7030.319, 'duration': 2.162}, {'end': 7034.022, 'text': 'this printed summer dress.', 'start': 7032.481, 'duration': 1.541}, {'end': 7039.367, 'text': 'right, this text is used to identify this element, that is, the printed summer dress.', 'start': 7034.022, 'duration': 5.345}, {'end': 7041.569, 'text': "okay, so i'll just simply write printed summer dress.", 'start': 7039.367, 'duration': 2.202}, {'end': 7042.61, 'text': 'this is case sensitive.', 'start': 7041.569, 'duration': 1.041}], 'summary': 'Identifying printed summer dress using link text.', 'duration': 25.303, 'max_score': 7017.307, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ7017307.jpg'}, {'end': 7440.426, 'src': 'embed', 'start': 7408.154, 'weight': 2, 'content': [{'end': 7412.155, 'text': 'So tag names are used to find multiple elements on the web page.', 'start': 7408.154, 'duration': 4.001}, {'end': 7417.897, 'text': 'For example, suppose this page.', 'start': 7413.296, 'duration': 4.601}, {'end': 7422.499, 'text': 'Now I want to find the number of links present on this page.', 'start': 7418.618, 'duration': 3.881}, {'end': 7427.081, 'text': "So how can I do that? I'll simply click on inspect.", 'start': 7423.259, 'duration': 3.822}, {'end': 7433.123, 'text': "I'll find the anchor tags, the number of anchor tags present on this page.", 'start': 7428.041, 'duration': 5.082}, {'end': 7438.565, 'text': 'through that i can find out the number of links that is present in this page.', 'start': 7434.383, 'duration': 4.182}, {'end': 7440.426, 'text': 'okay, so tag name.', 'start': 7438.565, 'duration': 1.861}], 'summary': 'Using tag names to find multiple elements on a webpage, such as counting the number of links present.', 'duration': 32.272, 'max_score': 7408.154, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ7408154.jpg'}, {'end': 8248.884, 'src': 'embed', 'start': 8219.071, 'weight': 0, 'content': [{'end': 8220.593, 'text': 'name like here.', 'start': 8219.071, 'duration': 1.522}, {'end': 8221.855, 'text': 'i can use id.', 'start': 8220.593, 'duration': 1.262}, {'end': 8222.957, 'text': 'i can use name.', 'start': 8221.855, 'duration': 1.102}, {'end': 8225.28, 'text': 'i can use class, anything i can use.', 'start': 8222.957, 'duration': 2.323}, {'end': 8226.602, 'text': "so i'm using name.", 'start': 8225.28, 'duration': 1.322}, {'end': 8227.663, 'text': 'name is equal to from.', 'start': 8226.602, 'duration': 1.061}, {'end': 8228.764, 'text': 'that is the attribute.', 'start': 8227.663, 'duration': 1.101}, {'end': 8230.326, 'text': 'name is name.', 'start': 8228.764, 'duration': 1.562}, {'end': 8236.795, 'text': 'my attribute value is from here, you can see, and my tag name is input.', 'start': 8230.326, 'duration': 6.469}, {'end': 8241.419, 'text': 'okay, My next CSS locator is tag and class and attribute.', 'start': 8236.795, 'duration': 4.624}, {'end': 8248.884, 'text': 'So how am I going to do that? Simply I just have this text box that is the email address and I have the syntax over here.', 'start': 8242.058, 'duration': 6.826}], 'summary': 'Using css locator to find element by name, class, and attribute.', 'duration': 29.813, 'max_score': 8219.071, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ8219071.jpg'}], 'start': 5632.071, 'title': 'Web automation with selenium', 'summary': 'Covers best practices for using web drivers, understanding web elements and their types, locators, and the difference between id and name locators, emphasizing the importance of id as a reliable and unique locator for web element automation. it also includes details on automating the search bar on a web page, precise ways of locating web elements in selenium, usage of id, class, and tag name locators, and locating elements using css selectors and the find element method, with practical examples and demonstrations.', 'chapters': [{'end': 6184.909, 'start': 5632.071, 'title': 'Web elements and locators', 'summary': 'Discusses the best practices for using web drivers, understanding web elements and their types, locators, and the difference between id and name locators, emphasizing the importance of id as a reliable and unique locator for web element automation.', 'duration': 552.838, 'highlights': ['The chapter discusses the best practices for using web drivers, understanding web elements and their types, locators, and the difference between id and name locators, emphasizing the importance of ID as a reliable and unique locator for web element automation. The chapter covers best practices for using web drivers, understanding web elements and their types, locators, and the difference between id and name locators.', 'ID is emphasized as one of the most reliable and unique locators for web element automation, as the value of ID is always unique for each element, making it the fastest and safest locator. ID is emphasized as one of the most reliable and unique locators for web element automation, as the value of ID is always unique for each element, making it the fastest and safest locator.', 'The difference between id and name locators is explained, stating that id values are unique for each element, while name locators are not unique for a page. The difference between id and name locators is explained, stating that id values are unique for each element, while name locators are not unique for a page.']}, {'end': 6834.304, 'start': 6184.909, 'title': 'Automating web page search bar', 'summary': 'Covers automating the search bar on a web page using selenium, with details on launching and maximizing the chrome browser, locating the search box by id and name, and sending keys for automation.', 'duration': 649.395, 'highlights': ['The chapter covers automating the search bar on a web page using Selenium, with details on launching and maximizing the Chrome browser, locating the search box by ID and name, and sending keys for automation.', 'The commands for launching the Chrome browser are system.set property with key value webdriver.chrome.driver and the path of the executable file, and webdriver driver is equal to new chrome driver.', 'Demonstration of locating the search box by ID using driver.findElement(By.id("search_query_top")) and sending keys \'t-shirts\' for automation.', 'Demonstration of locating the search box by name using driver.findElement(By.name("search_query")) and sending keys \'shirts\' for automation.']}, {'end': 7352.562, 'start': 6834.865, 'title': 'Locating web elements in selenium', 'summary': 'Explains the precise ways of locating web elements in selenium, covering id, name, link text, and partial link text, with examples and practical demonstrations. it also introduces the method of locating elements by class name.', 'duration': 517.697, 'highlights': ['The chapter covers the precise ways of locating web elements in Selenium, including ID, name, link text, and partial link text. It explains the most precise ways of locating web elements, mentioning that ID and name are used for precise location, while link text and partial link text are used for identifying links in HTML.', 'Practical demonstrations of locating elements by link text and partial link text are provided. The practical demonstrations include examples of locating elements by link text and partial link text, showing how to click on specific links using these locators.', 'Introduction to the method of locating elements by class name is provided. The method of locating elements by class name is introduced, explaining how to locate web elements using the class attribute and practical examples.']}, {'end': 7894.399, 'start': 7353.522, 'title': 'Selenium locators and inspecting web elements', 'summary': 'Covers the usage of id, class, and tag name locators in selenium, with a focus on finding and counting multiple elements on a web page, using a practical example to find and print the names of 27 links on a webpage.', 'duration': 540.877, 'highlights': ['The chapter explains the unique value of id and similar values of class for each element, highlighting that automation testers use class locator less than id and name locators.', 'It elaborates on the usage of tag name for finding multiple elements on a webpage, exemplifying the identification of links and images through tag names and inspecting the number of sliders present.', 'The practical demonstration involves using Selenium to find and print the names of 27 links on a webpage, showcasing the usage of find elements by tag name locator and the get text method within a for loop to retrieve and display the names of the links.']}, {'end': 8641.338, 'start': 7894.399, 'title': 'Css selectors and find element method', 'summary': 'Covers locating elements using css selectors and the find element method, including the usage of css concepts and differences between find element and find elements, with examples and explanations.', 'duration': 746.939, 'highlights': ['The find elements method is used to access multiple web elements on a web page. The find elements method is used to access multiple web elements on a web page, as shown when finding multiple anchor tags on the web page.', 'Differences between find element and find elements, including exception handling and return types. Explains the differences between find element and find elements, including exception handling when the element is not found and the return types, such as throwing an exception for find element and returning an empty list for find elements.', 'Usage of CSS selectors and concepts for styling elements using class and id. Covers the usage of CSS selectors and concepts for styling elements using class and id, with examples and explanations of using dot for class and hash for id.']}], 'duration': 3009.267, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ5632071.jpg', 'highlights': ['ID is emphasized as one of the most reliable and unique locators for web element automation, as the value of ID is always unique for each element, making it the fastest and safest locator.', 'The chapter covers automating the search bar on a web page using Selenium, with details on launching and maximizing the Chrome browser, locating the search box by ID and name, and sending keys for automation.', 'The chapter covers the precise ways of locating web elements in Selenium, including ID, name, link text, and partial link text. It explains the most precise ways of locating web elements, mentioning that ID and name are used for precise location, while link text and partial link text are used for identifying links in HTML.', 'The chapter explains the unique value of id and similar values of class for each element, highlighting that automation testers use class locator less than id and name locators.', 'The find elements method is used to access multiple web elements on a web page. The find elements method is used to access multiple web elements on a web page, as shown when finding multiple anchor tags on the web page.']}, {'end': 9936.875, 'segs': [{'end': 8667.267, 'src': 'embed', 'start': 8641.338, 'weight': 3, 'content': [{'end': 8646.44, 'text': 'it will just return like if the element is not found, it will return an empty list over here it returned 0.', 'start': 8641.338, 'duration': 5.102}, {'end': 8650.442, 'text': 'so there is no tag name name ar.', 'start': 8646.44, 'duration': 4.002}, {'end': 8654.243, 'text': 'so this is what is the difference between find element and find elements.', 'start': 8650.442, 'duration': 3.801}, {'end': 8660.346, 'text': 'this is one of the interview question which is asked in selenium and it is also one of the most important question that is asked.', 'start': 8654.243, 'duration': 6.103}, {'end': 8663.184, 'text': 'so this is all for today.', 'start': 8661.482, 'duration': 1.702}, {'end': 8667.267, 'text': 'in the next tutorial we will learn what is xpath and we will execute.', 'start': 8663.184, 'duration': 4.083}], 'summary': 'In selenium, find_element returns an element, while find_elements returns a list. this is a crucial interview question and important topic in selenium.', 'duration': 25.929, 'max_score': 8641.338, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ8641338.jpg'}, {'end': 8774.556, 'src': 'embed', 'start': 8747.511, 'weight': 8, 'content': [{'end': 8754.092, 'text': "and i'm going to count how many a tags are present on that web page through which i will retrieve multiple elements.", 'start': 8747.511, 'duration': 6.581}, {'end': 8755.053, 'text': 'so that is a that.', 'start': 8754.092, 'duration': 0.961}, {'end': 8762.654, 'text': 'so for that we are using tag name, whereas the css selector we use the tag in id, we have the tag in class.', 'start': 8756.413, 'duration': 6.241}, {'end': 8764.054, 'text': 'we have tag in attribute.', 'start': 8762.654, 'duration': 1.4}, {'end': 8766.075, 'text': 'we have tag, class and attribute.', 'start': 8764.054, 'duration': 2.021}, {'end': 8770.696, 'text': 'so these are the different types of css selector also we understood in the previous tutorial.', 'start': 8766.075, 'duration': 4.621}, {'end': 8774.556, 'text': 'so these were the some of the concepts that we learned in the previous tutorial.', 'start': 8770.696, 'duration': 3.86}], 'summary': 'Counting a tags on web page to retrieve multiple elements using different types of css selectors.', 'duration': 27.045, 'max_score': 8747.511, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ8747511.jpg'}, {'end': 8896.563, 'src': 'embed', 'start': 8862.506, 'weight': 1, 'content': [{'end': 8866.708, 'text': 'Next, we use the get text command, which is used to retrieve specific elements text.', 'start': 8862.506, 'duration': 4.202}, {'end': 8877.514, 'text': 'If you remember that we were using, we were counting the number of links in a page, right? So in that, I wanted to know the name of those links.', 'start': 8867.089, 'duration': 10.425}, {'end': 8879.616, 'text': 'So we use the get text command.', 'start': 8878.075, 'duration': 1.541}, {'end': 8882.097, 'text': 'Next, we learned about the size command.', 'start': 8880.336, 'duration': 1.761}, {'end': 8885.878, 'text': 'The size command is used to get the number of elements in the list.', 'start': 8882.657, 'duration': 3.221}, {'end': 8896.563, 'text': 'Now, if you remember, while counting the number of links, we use the size command to know how many links are present on the web page.', 'start': 8886.539, 'duration': 10.024}], 'summary': "Learned 'get text' and 'size' commands to retrieve elements' text and count the number of links on a web page.", 'duration': 34.057, 'max_score': 8862.506, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ8862506.jpg'}, {'end': 8939.241, 'src': 'embed', 'start': 8915.517, 'weight': 6, 'content': [{'end': 8921.941, 'text': 'The key is like the webdriver.chrome.driver and the value is the path of your executable file.', 'start': 8915.517, 'duration': 6.424}, {'end': 8926.851, 'text': 'okay, so these were the commands that we learned in the previous tutorial.', 'start': 8923.208, 'duration': 3.643}, {'end': 8930.474, 'text': 'so now here I have prepared some of the test cases.', 'start': 8926.851, 'duration': 3.623}, {'end': 8932.596, 'text': 'first is open the Chrome browser.', 'start': 8930.474, 'duration': 2.122}, {'end': 8934.257, 'text': 'we will navigate to the URL.', 'start': 8932.596, 'duration': 1.661}, {'end': 8937.479, 'text': 'enter the valid username, enter the valid password.', 'start': 8934.257, 'duration': 3.222}, {'end': 8939.241, 'text': 'next we will click on login button.', 'start': 8937.479, 'duration': 1.762}], 'summary': 'In the tutorial, commands for test cases were learned, including opening chrome, navigating to a url, entering valid username and password, and clicking the login button.', 'duration': 23.724, 'max_score': 8915.517, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ8915517.jpg'}, {'end': 9280.021, 'src': 'embed', 'start': 9211.048, 'weight': 0, 'content': [{'end': 9214.637, 'text': "let's verify the URL now.", 'start': 9211.048, 'duration': 3.589}, {'end': 9217.98, 'text': 'for that, we are going to use the get current URL.', 'start': 9214.637, 'duration': 3.343}, {'end': 9221.422, 'text': 'this is the command that we are going to use to verify the URL.', 'start': 9217.98, 'duration': 3.442}, {'end': 9226.186, 'text': 'now this command returns the current URL of the web page.', 'start': 9221.422, 'duration': 4.764}, {'end': 9230.169, 'text': "okay, so let's see what we are going to do.", 'start': 9226.186, 'duration': 3.983}, {'end': 9237.474, 'text': 'is we are going to write driver dot, get current URL.', 'start': 9230.169, 'duration': 7.305}, {'end': 9240.276, 'text': 'okay, and we are going to store this in a variable.', 'start': 9237.474, 'duration': 2.802}, {'end': 9242.638, 'text': 'we are going to store this in a string type variable.', 'start': 9240.276, 'duration': 2.362}, {'end': 9252.587, 'text': 'let me write the actual url.', 'start': 9244.881, 'duration': 7.706}, {'end': 9255.309, 'text': 'okay, so we are storing in a string type variable.', 'start': 9252.587, 'duration': 2.722}, {'end': 9259.431, 'text': 'i have named the variable as actual url and i have written string.', 'start': 9255.309, 'duration': 4.122}, {'end': 9262.013, 'text': 'actual url is equal to driver dot.', 'start': 9259.431, 'duration': 2.582}, {'end': 9263.354, 'text': 'get current urls.', 'start': 9262.013, 'duration': 1.341}, {'end': 9275.838, 'text': "okay, now, let me print this Let's see the actual URL of this web page.", 'start': 9263.354, 'duration': 12.484}, {'end': 9277.84, 'text': 'And then we will verify it first.', 'start': 9276.359, 'duration': 1.481}, {'end': 9280.021, 'text': "So let's run.", 'start': 9279.18, 'duration': 0.841}], 'summary': "Using 'get current url' command to verify and print the actual url of the web page.", 'duration': 68.973, 'max_score': 9211.048, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ9211048.jpg'}, {'end': 9562.059, 'src': 'embed', 'start': 9510.635, 'weight': 4, 'content': [{'end': 9514.376, 'text': 'For that the command that we will use is the get title command.', 'start': 9510.635, 'duration': 3.741}, {'end': 9522.219, 'text': "Okay So what you're going to do is we're going to simply write string.", 'start': 9518.197, 'duration': 4.022}, {'end': 9525.31, 'text': 'actual title.', 'start': 9524.429, 'duration': 0.881}, {'end': 9529.652, 'text': 'that will be driver dot.', 'start': 9525.31, 'duration': 4.342}, {'end': 9532.054, 'text': 'get title.', 'start': 9529.652, 'duration': 2.402}, {'end': 9549.125, 'text': "okay, next let's print this title, write actual title and let's see, my chrome browser is launched.", 'start': 9532.054, 'duration': 17.071}, {'end': 9550.186, 'text': "it's navigated.", 'start': 9549.125, 'duration': 1.061}, {'end': 9554.737, 'text': 'valid username password is entered.', 'start': 9552.677, 'duration': 2.06}, {'end': 9557.658, 'text': "it's logged in.", 'start': 9554.737, 'duration': 2.921}, {'end': 9562.059, 'text': 'okay, so this is the title that i got.', 'start': 9557.658, 'duration': 4.401}], 'summary': "Using 'get title' command to retrieve and print the title of a chrome browser after login.", 'duration': 51.424, 'max_score': 9510.635, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ9510635.jpg'}, {'end': 9860.765, 'src': 'embed', 'start': 9831.598, 'weight': 11, 'content': [{'end': 9835.061, 'text': 'And we learned how to verify the commands.', 'start': 9831.598, 'duration': 3.463}, {'end': 9836.943, 'text': 'So this is what we learned today.', 'start': 9835.461, 'duration': 1.482}, {'end': 9838.724, 'text': 'We executed this test case.', 'start': 9837.163, 'duration': 1.561}, {'end': 9839.945, 'text': 'We opened the Chrome browser.', 'start': 9838.764, 'duration': 1.181}, {'end': 9841.386, 'text': 'We navigated to the URL.', 'start': 9839.985, 'duration': 1.401}, {'end': 9844.089, 'text': 'We entered the valid username, the valid password.', 'start': 9841.847, 'duration': 2.242}, {'end': 9847.492, 'text': 'we clicked on login, we verified the url.', 'start': 9844.469, 'duration': 3.023}, {'end': 9849.614, 'text': 'we verified the title of the web page.', 'start': 9847.492, 'duration': 2.122}, {'end': 9853.277, 'text': 'next, we closed the browser so we executed these test cases.', 'start': 9849.614, 'duration': 3.663}, {'end': 9858.023, 'text': 'By executing these test cases, we learned how to verify the title.', 'start': 9854.741, 'duration': 3.282}, {'end': 9860.765, 'text': 'We learned how to verify the URL.', 'start': 9858.063, 'duration': 2.702}], 'summary': 'Learned to verify commands, execute and verify test cases for url and title.', 'duration': 29.167, 'max_score': 9831.598, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ9831598.jpg'}], 'start': 8641.338, 'title': 'Selenium test automation', 'summary': 'Discusses web element commands, locators, and test case execution in selenium, emphasizing element verification. it covers automating login process, url verification, and verifying url and title, resulting in 2 passing and 2 failing test cases.', 'chapters': [{'end': 8981.335, 'start': 8641.338, 'title': 'Selenium tutorial 5: web element commands', 'summary': 'Discusses the difference between find element and find elements, the various web element locators, and the commands for creating and executing test cases in selenium, with emphasis on verifying elements and learning different types of commands. it also covers the preparation of test cases and the use of commands such as send keys, click, get, get text, size, manage window, system set property, and chrome driver.', 'duration': 339.997, 'highlights': ['The chapter discusses the difference between find element and find elements, emphasizing its importance as an interview question in Selenium. The chapter highlights the difference between find element and find elements, stating that it is an important interview question in Selenium.', 'It covers the various web element locators, such as ID, name, tag name, class name, link text, partial link text, and CSS selector, providing a comprehensive understanding of how to identify web elements on a web page. The chapter explains the various web element locators, including ID, name, tag name, class name, link text, partial link text, and CSS selector, for identifying web elements on a web page.', 'The chapter details the preparation of test cases and the commands for creating and executing them in Selenium, including opening the Chrome browser, navigating to a URL, entering valid username and password, clicking on login button, verifying the URL and title, and closing the browser. It provides detailed information on preparing and executing test cases in Selenium, covering commands for tasks such as opening the Chrome browser, navigating to a URL, entering valid credentials, verifying URL and title, and closing the browser.', 'It emphasizes the verification of elements and learning different types of commands, drawing parallels to manual testing and highlighting the importance of verifying elements such as page title and URL. The chapter emphasizes the importance of verifying elements and learning different commands, drawing parallels to manual testing and highlighting the significance of verifying page elements like title and URL.', 'It covers the usage of commands such as send keys, click, get, get text, size, manage window, system set property, and chrome driver, providing a comprehensive understanding of these commands for Selenium testing. The chapter covers the usage of commands like send keys, click, get, get text, size, manage window, system set property, and chrome driver, offering a comprehensive understanding of these commands for Selenium testing.']}, {'end': 9312.734, 'start': 8982.195, 'title': 'Automating login process and url verification', 'summary': 'Covers the process of automating the login using valid username and password, clicking on the login button, and verifying the current url, with a focus on using selenium commands and attributes.', 'duration': 330.539, 'highlights': ['The process involves entering a valid username and password, clicking on the login button, and verifying the current URL using Selenium commands and attributes.', 'The transcript demonstrates using Selenium commands such as find element by ID and find element by name to locate and interact with web elements.', 'The importance of verifying the URL of the current web page is highlighted, showcasing the use of the get current URL command and storing it in a string variable for verification.']}, {'end': 9936.875, 'start': 9313.134, 'title': 'Verifying url and title', 'summary': "Demonstrates how to verify the url and title of a web page using selenium commands such as 'get current url' and 'get title', and showcases the process of matching and validating urls and titles, resulting in 2 test cases passing and 2 failing.", 'duration': 623.741, 'highlights': ['The test case for verifying the URL is passed. Successfully matching the desired URL with the actual URL resulted in a passed test case.', 'The test case for verifying the title is passed. Matching the desired title with the actual title led to a passed test case.', 'The test case for verifying the URL is failed. Changing the desired URL from the actual URL led to a failed test case.', 'The test case for verifying the title is failed. Changing the desired title from the actual title resulted in a failed test case.', "The source code of the page is visible. Using the 'get page source' command, the source code of the page is successfully retrieved and displayed."]}], 'duration': 1295.537, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ8641338.jpg', 'highlights': ['The chapter emphasizes the importance of verifying elements and learning different commands, drawing parallels to manual testing and highlighting the significance of verifying page elements like title and URL.', 'The chapter covers the usage of commands like send keys, click, get, get text, size, manage window, system set property, and chrome driver, offering a comprehensive understanding of these commands for Selenium testing.', 'The chapter discusses the difference between find element and find elements, emphasizing its importance as an interview question in Selenium.', 'The chapter details the preparation of test cases and the commands for creating and executing them in Selenium, including opening the Chrome browser, navigating to a URL, entering valid username and password, clicking on login button, verifying the URL and title, and closing the browser.', 'The chapter explains the various web element locators, including ID, name, tag name, class name, link text, partial link text, and CSS selector, for identifying web elements on a web page.', 'The process involves entering a valid username and password, clicking on the login button, and verifying the current URL using Selenium commands and attributes.', 'The importance of verifying the URL of the current web page is highlighted, showcasing the use of the get current URL command and storing it in a string variable for verification.', 'The test case for verifying the URL is passed. Successfully matching the desired URL with the actual URL resulted in a passed test case.', 'The test case for verifying the title is passed. Matching the desired title with the actual title led to a passed test case.', 'The test case for verifying the URL is failed. Changing the desired URL from the actual URL led to a failed test case.', 'The test case for verifying the title is failed. Changing the desired title from the actual title resulted in a failed test case.', 'The transcript demonstrates using Selenium commands such as find element by ID and find element by name to locate and interact with web elements.', "The source code of the page is visible. Using the 'get page source' command, the source code of the page is successfully retrieved and displayed."]}, {'end': 11554.21, 'segs': [{'end': 10008.808, 'src': 'embed', 'start': 9980.133, 'weight': 0, 'content': [{'end': 9984.954, 'text': 'we are going to use the group plugin, the cropath plugin for the chrome browser,', 'start': 9980.133, 'duration': 4.821}, {'end': 9990.875, 'text': 'and through that chrome cropath plugin we are going to retrieve our xpath.', 'start': 9984.954, 'duration': 5.921}, {'end': 9994.576, 'text': "so we're going to study what are the different types of xpath also.", 'start': 9990.875, 'duration': 3.701}, {'end': 9997.097, 'text': 'so in this tutorial we will understand about the xpath.', 'start': 9994.576, 'duration': 2.521}, {'end': 10002.927, 'text': 'We will understand what is XPath, how to locate the element using the XPath.', 'start': 9998.646, 'duration': 4.281}, {'end': 10008.808, 'text': 'We will also understand about the crowpath plugin, the types of XPath, what are their syntax.', 'start': 10003.807, 'duration': 5.001}], 'summary': 'Using chrome cropath plugin to retrieve and study different types of xpath.', 'duration': 28.675, 'max_score': 9980.133, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ9980133.jpg'}, {'end': 10451.78, 'src': 'heatmap', 'start': 10174.047, 'weight': 0.717, 'content': [{'end': 10177.288, 'text': 'that is, the different nodes are created automatically over here.', 'start': 10174.047, 'duration': 3.241}, {'end': 10179.049, 'text': 'you can see we have the HTML head.', 'start': 10177.288, 'duration': 1.761}, {'end': 10182.83, 'text': 'title is just simply written over here, but over here we have the nodes.', 'start': 10179.049, 'duration': 3.781}, {'end': 10184.491, 'text': 'there are nodes present over here.', 'start': 10182.83, 'duration': 1.661}, {'end': 10191.073, 'text': 'so that is the reason why it is called the HTML DOM structure and it is created automatically by the browser.', 'start': 10184.491, 'duration': 6.582}, {'end': 10195.255, 'text': 'DOM is basically an API interface that is provided by the browser.', 'start': 10191.073, 'duration': 4.182}, {'end': 10200.114, 'text': 'now see if we go detailing into the dom structure.', 'start': 10196.892, 'duration': 3.222}, {'end': 10201.555, 'text': "it's a very huge concept.", 'start': 10200.114, 'duration': 1.441}, {'end': 10210.259, 'text': 'but for now, to understand that the x part, the xml expression that we will derive, we will derive from the html dom structure.', 'start': 10201.555, 'duration': 8.704}, {'end': 10212.12, 'text': 'you know this structure that we have.', 'start': 10210.259, 'duration': 1.861}, {'end': 10214.622, 'text': 'we will derive from this, for example.', 'start': 10212.12, 'duration': 2.502}, {'end': 10217.245, 'text': 'So this is the web page.', 'start': 10216.004, 'duration': 1.241}, {'end': 10222.749, 'text': "Now if I want to inspect any of the element, I'll simply click on inspect.", 'start': 10217.765, 'duration': 4.984}, {'end': 10226.773, 'text': 'And here you see, this is the DOM structure of a web page.', 'start': 10223.21, 'duration': 3.563}, {'end': 10230.916, 'text': 'Like we have the HTML head, body, the HTML tag is closed.', 'start': 10226.793, 'duration': 4.123}, {'end': 10235.36, 'text': 'Inside head, we have different types of meta property.', 'start': 10231.396, 'duration': 3.964}, {'end': 10239.563, 'text': 'We have the style, we have the script.', 'start': 10235.44, 'duration': 4.123}, {'end': 10245.588, 'text': 'So all these are in the form of the HTML DOM structure okay?', 'start': 10240.484, 'duration': 5.104}, {'end': 10259.57, 'text': 'So when a web page is loaded, the browser automatically creates this DOM object, and this DOM is an API interface that is provided by the browser.', 'start': 10249.781, 'duration': 9.789}, {'end': 10266.017, 'text': 'Okay? Next, let us see how can we capture the XPath.', 'start': 10260.692, 'duration': 5.325}, {'end': 10275.564, 'text': 'now, this is the page that we want to inspect now.', 'start': 10272.441, 'duration': 3.123}, {'end': 10281.829, 'text': 'suppose this is the email address field we have and we want to inspect this element.', 'start': 10275.564, 'duration': 6.265}, {'end': 10283.85, 'text': "so i'll simply click on inspect.", 'start': 10281.829, 'duration': 2.021}, {'end': 10286.092, 'text': 'and here you can see this text box is highlighted.', 'start': 10283.85, 'duration': 2.242}, {'end': 10287.974, 'text': "right now i'm.", 'start': 10286.092, 'duration': 1.882}, {'end': 10291.136, 'text': 'i want to capture the x path of this text box.', 'start': 10287.974, 'duration': 3.162}, {'end': 10293.138, 'text': 'how am i going to do that?', 'start': 10291.136, 'duration': 2.002}, {'end': 10297.475, 'text': 'i will simply this syntax.', 'start': 10293.138, 'duration': 4.337}, {'end': 10304.138, 'text': 'i will simply right click over here, go to copy and i will click on copy full xpath.', 'start': 10297.475, 'duration': 6.663}, {'end': 10308.42, 'text': 'see here i have two options i have copy xpath and i have copy full xpath.', 'start': 10304.138, 'duration': 4.282}, {'end': 10310.28, 'text': 'so i will use copy full xpath.', 'start': 10308.42, 'duration': 1.86}, {'end': 10312.241, 'text': 'there is a difference between the two.', 'start': 10310.28, 'duration': 1.961}, {'end': 10320.004, 'text': "we will understand that later, but for now, let's click on copy full xpath.", 'start': 10312.241, 'duration': 7.763}, {'end': 10321.085, 'text': "i'll paste it over here.", 'start': 10320.004, 'duration': 1.081}, {'end': 10329.856, 'text': 'Okay, so here you see, this is the complete XPath that we are having for this field.', 'start': 10322.253, 'duration': 7.603}, {'end': 10331.076, 'text': 'that is the email address.', 'start': 10329.856, 'duration': 1.22}, {'end': 10332.077, 'text': 'How is it??', 'start': 10331.557, 'duration': 0.52}, {'end': 10340.28, 'text': 'First we have the HTML, then we have the body, then we have the different div tags that we have over here, and the last we have the input,', 'start': 10332.837, 'duration': 7.443}, {'end': 10342.181, 'text': 'because we want to access this element.', 'start': 10340.28, 'duration': 1.901}, {'end': 10344.201, 'text': 'We have the input tag over here.', 'start': 10342.621, 'duration': 1.58}, {'end': 10348.841, 'text': 'Now here you can see these numbers 1, 2, 1.', 'start': 10344.782, 'duration': 4.059}, {'end': 10350.704, 'text': 'These are the index numbers.', 'start': 10348.843, 'duration': 1.861}, {'end': 10353.046, 'text': 'that is present over here.', 'start': 10351.084, 'duration': 1.962}, {'end': 10356.048, 'text': 'okay, these are the index number that is given over here.', 'start': 10353.046, 'duration': 3.002}, {'end': 10358.35, 'text': 'that is the first element of div.', 'start': 10356.048, 'duration': 2.302}, {'end': 10361.953, 'text': 'under the first element of div, i am selecting the second div.', 'start': 10358.35, 'duration': 3.603}, {'end': 10364.515, 'text': 'under the second div, i am selecting the first div.', 'start': 10361.953, 'duration': 2.562}, {'end': 10367.297, 'text': 'as you can see, there are different divs over here.', 'start': 10364.515, 'duration': 2.782}, {'end': 10375.443, 'text': 'so, uh, through these uh acts, by accessing these divs, i have reached to input tag and over here i am accessing the email address.', 'start': 10367.297, 'duration': 8.146}, {'end': 10376.264, 'text': 'that is this field.', 'start': 10375.443, 'duration': 0.821}, {'end': 10379.999, 'text': 'Okay, so this is how we can access.', 'start': 10376.997, 'duration': 3.002}, {'end': 10383.501, 'text': 'So this is the first method of accessing the XPath.', 'start': 10381.06, 'duration': 2.441}, {'end': 10387.023, 'text': 'The second method that we have is the Cropath plugin.', 'start': 10383.821, 'duration': 3.202}, {'end': 10396.97, 'text': "Okay, so what we'll do is we'll simply go to Google and type Cropath plugin.", 'start': 10390.566, 'duration': 6.404}, {'end': 10401.653, 'text': "The very first link that we have, I'll give the link in the description box.", 'start': 10398.21, 'duration': 3.443}, {'end': 10405.215, 'text': 'Just simply click add to Chrome.', 'start': 10403.474, 'duration': 1.741}, {'end': 10414.138, 'text': 'add extension and it is added.', 'start': 10408.234, 'duration': 5.904}, {'end': 10415.959, 'text': 'okay, now, here you can see.', 'start': 10414.138, 'duration': 1.821}, {'end': 10419.461, 'text': 'uh, there is no option over here of cropath.', 'start': 10415.959, 'duration': 3.502}, {'end': 10421.762, 'text': 'but now, uh, let me refresh this page.', 'start': 10419.461, 'duration': 2.301}, {'end': 10431.789, 'text': "i'll just close this browser and here you can see we have the option cropath because we have added the extension to the chrome browser.", 'start': 10421.762, 'duration': 10.027}, {'end': 10434.83, 'text': 'so we can see this option cropath.', 'start': 10431.789, 'duration': 3.041}, {'end': 10436.872, 'text': 'okay, now, i inspected this element.', 'start': 10434.83, 'duration': 2.042}, {'end': 10439.635, 'text': 'This element I have inspected.', 'start': 10438.294, 'duration': 1.341}, {'end': 10441.555, 'text': "So let's see the crow path.", 'start': 10440.095, 'duration': 1.46}, {'end': 10444.076, 'text': 'And here it is.', 'start': 10443.396, 'duration': 0.68}, {'end': 10449.339, 'text': 'So here you can see this crow path, right? We have the relative x path.', 'start': 10445.377, 'duration': 3.962}, {'end': 10451.78, 'text': 'Now as I said, the x path are of two types.', 'start': 10449.379, 'duration': 2.401}], 'summary': 'Html dom structure is automatically created by the browser. xpath can be captured using syntax or cropath plugin.', 'duration': 277.733, 'max_score': 10174.047, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ10174047.jpg'}, {'end': 11058.051, 'src': 'embed', 'start': 11028.372, 'weight': 4, 'content': [{'end': 11033.657, 'text': "So here you don't need to mention this long XPath, because there is no need to start from the root element.", 'start': 11028.372, 'duration': 5.285}, {'end': 11040.022, 'text': 'You can start, the path can start from the middle of the HTML DOM structure.', 'start': 11034.217, 'duration': 5.805}, {'end': 11041.324, 'text': 'That is of your choice.', 'start': 11040.403, 'duration': 0.921}, {'end': 11051.848, 'text': 'But the disadvantage is that it will take more time in identifying the element as we are specifying the partial path and not the exact path.', 'start': 11042.383, 'duration': 9.465}, {'end': 11058.051, 'text': 'Whereas in absolute XPath, we are specifying the exact path of the element.', 'start': 11052.668, 'duration': 5.383}], 'summary': 'Using partial xpath reduces mentioning long paths, but may take more time for element identification compared to absolute xpath.', 'duration': 29.679, 'max_score': 11028.372, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ11028372.jpg'}, {'end': 11312.23, 'src': 'embed', 'start': 11285.071, 'weight': 2, 'content': [{'end': 11290.194, 'text': 'So that is the reason why absolute XPath is not mostly used by the automation testers,', 'start': 11285.071, 'duration': 5.123}, {'end': 11293.616, 'text': 'whereas the relative XPath is mostly used by the automation testers.', 'start': 11290.194, 'duration': 3.422}, {'end': 11297.958, 'text': 'Because in relative XPath, the attributes used are fixed.', 'start': 11294.656, 'duration': 3.302}, {'end': 11299.119, 'text': 'They are not changing.', 'start': 11298.279, 'duration': 0.84}, {'end': 11302.181, 'text': 'We are not using the root element to the desired element.', 'start': 11299.139, 'duration': 3.042}, {'end': 11307.624, 'text': 'Okay? So that is the reason why we use the relative XPath and not the absolute XPath.', 'start': 11302.761, 'duration': 4.863}, {'end': 11312.23, 'text': 'So, in the previous tutorial we learned about the XPath.', 'start': 11309.588, 'duration': 2.642}], 'summary': 'Automation testers prefer relative xpath over absolute xpath due to its fixed attributes and non-changing nature.', 'duration': 27.159, 'max_score': 11285.071, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ11285071.jpg'}], 'start': 9937.918, 'title': 'Selenium and xpath tutorials', 'summary': 'Covers selenium tutorial on obtaining page source, title, and current url, understanding xpath using the cropath plugin, accessing xpath using cropath plugin, relative vs absolute xpath, and using the selectors hub plugin for selenium, preparing for the next tutorial on xpath operators and functions.', 'chapters': [{'end': 9980.133, 'start': 9937.918, 'title': 'Selenium tutorial: get page source, title, current url', 'summary': 'Covers the selenium tutorial on obtaining page source, title, and current url, highlighting the three commands and their functionalities, preparing for the next tutorial on xpath.', 'duration': 42.215, 'highlights': ['The chapter covers the Selenium tutorial on obtaining page source, title, and current URL, highlighting the three commands and their functionalities, preparing for the next tutorial on xpath.', 'The tutorial introduces three commands: get page source, get title, and get current URL, providing essential functionalities for web scraping and testing automation.', 'The get page source command allows obtaining the source code of the web page, enabling access to the underlying HTML content for analysis and processing.', 'The get title command facilitates retrieving the title of the web page, which is crucial for verifying page content and ensuring accurate navigation.', 'The get current URL command provides the current URL of the web page, aiding in verifying navigation and ensuring accurate redirection within automated testing processes.']}, {'end': 10379.999, 'start': 9980.133, 'title': 'Understanding xpath and using the cropath plugin', 'summary': 'Discusses the usage of the cropath plugin for chrome to retrieve xpath, understanding different types of xpath, capturing xpath using the html dom structure, and the process of capturing xpath for elements on a web page.', 'duration': 399.866, 'highlights': ['The chapter discusses the usage of the Cropath plugin for Chrome to retrieve XPath. It mentions the use of the Cropath plugin for Chrome to retrieve XPath, which provides a practical application and tool for using XPath in web development.', 'Understanding different types of XPath. It covers the different types of XPath, including relative and absolute XPath, offering a comprehensive understanding of XPath variations.', 'Capturing XPath using the HTML DOM structure. It explains the process of capturing XPath using the HTML DOM structure, providing practical insights into deriving XPath from the DOM.', 'The process of capturing XPath for elements on a web page. It details the process of capturing XPath for elements on a web page, offering a practical demonstration of capturing XPath for specific elements.']}, {'end': 11000.711, 'start': 10381.06, 'title': 'Accessing xpath and understanding relative and absolute xpath', 'summary': 'Explains methods for accessing xpath using cropath plugin, understanding relative and absolute xpath, their advantages and disadvantages, and how to capture xpath for elements on a webpage.', 'duration': 619.651, 'highlights': ["Understanding the advantages and disadvantages of Absolute XPath The advantages of Absolute XPath include faster element identification, while the disadvantage is that it fails to work if the element's path is modified, as demonstrated when a new email field was added and the previously written XPath for the login button no longer worked.", 'Explaining Relative XPath and its syntax Relative XPath allows starting the path anywhere on the webpage, uses double slashes to start the path, includes the tag name, brackets, and @ symbol to select an attribute, making it versatile for locating elements.', 'Demonstrating the method of capturing XPath for specific elements The speaker demonstrates capturing the XPath for the login button, explaining the importance of forward slashes, and using the index to access the desired element, providing a practical example of XPath usage.', 'Introduction to XPath and its two types The chapter introduces XPath and its two types: relative and absolute XPath, providing a foundational understanding of the concept before delving into their specific syntax and usage.']}, {'end': 11332.784, 'start': 11001.492, 'title': 'Relative vs absolute xpath', 'summary': 'Discusses the advantages and disadvantages of relative xpath, examples of relative xpath syntax, accessing xpath with multiple attributes, and the difference between absolute and relative xpath, highlighting the preference for relative xpath due to its stability and fixed attributes, as well as the upcoming tutorial on xpath operators and functions.', 'duration': 331.292, 'highlights': ['The relative XPath provides the advantage of not needing to mention the long XPath from the root element to the desired element, although it takes more time in identifying the element due to specifying the partial path (quantifiable data: advantage of not needing to mention the long XPath, disadvantage of taking more time in identifying the element).', "The tutorial offers examples of relative XPath syntax, including accessing tags with attributes such as 'a' and 'img', demonstrating the practical application of relative XPath (quantifiable data: examples of relative XPath syntax).", 'Explaining the usage of multiple attributes in relative XPath, it emphasizes using ID as one of the attributes for better element access, with a clear syntax provided for using multiple attributes in relative XPath (quantifiable data: emphasizing the usage of ID as one of the attributes for better element access).', 'The chapter compares absolute XPath, containing the complete path from the root element to the desired element, with relative XPath, which starts from the middle of the HTML DOM structure, highlighting the frequent usage of relative XPath due to its stability and fixed attributes (quantifiable data: comparison between absolute and relative XPath, frequent usage of relative XPath due to its stability and fixed attributes).', 'The preference for relative XPath over absolute XPath is emphasized due to the stability and fixed attributes in relative XPath, making it suitable in cases where the application and attributes are frequently changing, contrasting with the instability of absolute XPath (quantifiable data: preference for relative XPath due to stability and fixed attributes, contrast with the instability of absolute XPath).']}, {'end': 11554.21, 'start': 11333.184, 'title': 'Using selectors hub plugin for selenium', 'summary': 'Discusses using the selectors hub plugin for selenium to inspect and locate elements on a website, comparing it to the cropath plugin and highlighting its advanced features and benefits.', 'duration': 221.026, 'highlights': ['The Selectors Hub plugin is the advanced version of the Cropath, offering more features and support for shadow DOM objects.', 'It provides various features such as ID, name, class name, JavaScript path, absolute XPath, and tag name, making it preferred by many automation testers.', 'The chapter demonstrates the process of installing the Selectors Hub plugin and using it to inspect and locate elements on a website.']}], 'duration': 1616.292, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ9937918.jpg', 'highlights': ['The Selectors Hub plugin offers more features and support for shadow DOM objects, making it preferred by many automation testers.', 'The tutorial introduces three commands: get page source, get title, and get current URL, providing essential functionalities for web scraping and testing automation.', "Understanding the advantages and disadvantages of Absolute XPath, including faster element identification and the disadvantage of failing to work if the element's path is modified.", 'The chapter compares absolute XPath, containing the complete path from the root element to the desired element, with relative XPath, which starts from the middle of the HTML DOM structure, highlighting the frequent usage of relative XPath due to its stability and fixed attributes.', 'The get page source command allows obtaining the source code of the web page, enabling access to the underlying HTML content for analysis and processing.']}, {'end': 14805.8, 'segs': [{'end': 12244.536, 'src': 'embed', 'start': 12188.026, 'weight': 2, 'content': [{'end': 12196.667, 'text': 'Similarly, if my A value that is the ID value is right whereas my name value is wrong, still the element is identified.', 'start': 12188.026, 'duration': 8.641}, {'end': 12199.468, 'text': 'And if both are right, the element is identified.', 'start': 12197.188, 'duration': 2.28}, {'end': 12202.169, 'text': 'But if both are wrong, the element is not identified.', 'start': 12199.528, 'duration': 2.641}, {'end': 12204.429, 'text': 'So this is all about the OR operator.', 'start': 12202.569, 'duration': 1.86}, {'end': 12207.65, 'text': "Now let's check out the AND operator.", 'start': 12205.95, 'duration': 1.7}, {'end': 12212.189, 'text': "okay, it's the same as it is all, only the rules are bit different.", 'start': 12208.348, 'duration': 3.841}, {'end': 12213.249, 'text': 'you will understand that.', 'start': 12212.189, 'duration': 1.06}, {'end': 12216.85, 'text': 'practically so we are testing for and operators.', 'start': 12213.249, 'duration': 3.601}, {'end': 12220.19, 'text': "so i'll just write and over here.", 'start': 12216.85, 'duration': 3.34}, {'end': 12220.651, 'text': "let's see.", 'start': 12220.19, 'duration': 0.461}, {'end': 12224.491, 'text': 'so the id value is same and the name value is also correct.', 'start': 12220.651, 'duration': 3.84}, {'end': 12226.072, 'text': "so let's see if it is inspected.", 'start': 12224.491, 'duration': 1.581}, {'end': 12227.472, 'text': 'the element is inspected or not.', 'start': 12226.072, 'duration': 1.4}, {'end': 12230.013, 'text': 'let me comment this.', 'start': 12227.472, 'duration': 2.541}, {'end': 12244.536, 'text': "okay, all right, Chrome browser is launched, it's navigated, it's maximized and here you can see the shirts for men.", 'start': 12230.013, 'duration': 14.523}], 'summary': 'Testing or and and operators for element identification.', 'duration': 56.51, 'max_score': 12188.026, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ12188026.jpg'}, {'end': 14582.308, 'src': 'heatmap', 'start': 14024.093, 'weight': 0.812, 'content': [{'end': 14029.817, 'text': 'This is your next HTML tag, which is just next to it, right? Next to your self tag, which is seven and eight.', 'start': 14024.093, 'duration': 5.724}, {'end': 14031.278, 'text': 'So this will be your following sibling.', 'start': 14029.837, 'duration': 1.441}, {'end': 14043.527, 'text': 'going to preceding sibling traverse from current html tag to previous sibling html tag.', 'start': 14035.182, 'duration': 8.345}, {'end': 14045.888, 'text': 'current html tag is self.', 'start': 14043.527, 'duration': 2.361}, {'end': 14050.111, 'text': 'previous sibling html tag is this that is the five and the six.', 'start': 14045.888, 'duration': 4.223}, {'end': 14057.736, 'text': 'okay, next we have the ancestors, that is, your grandparents in parent traverse, all the ancestor elements of the current html tag.', 'start': 14050.111, 'duration': 7.625}, {'end': 14061.269, 'text': 'so the ancestor over here is one.', 'start': 14059.508, 'duration': 1.761}, {'end': 14065.152, 'text': 'this is your current html tag itself and the ancestor is one.', 'start': 14061.269, 'duration': 3.883}, {'end': 14066.452, 'text': 'next we have the descendant.', 'start': 14065.152, 'duration': 1.3}, {'end': 14073.877, 'text': 'it travels all the descended elements now, which consists of the child node, the grandchild nodes of the current html tag.', 'start': 14066.452, 'duration': 7.425}, {'end': 14083.823, 'text': 'so this is the current html tag the child node that is the 9, 10, 11, 12 and 13, and the grandchild nodes, that is the 14, 15, 16, 17 and 18.', 'start': 14073.877, 'duration': 9.946}, {'end': 14091.55, 'text': 'so this is all about the relationship table in which we covered about the ancestor, the parent, the child descendant, the following, the preceding,', 'start': 14083.823, 'duration': 7.727}, {'end': 14094.113, 'text': 'the preceding sibling and the following siblings.', 'start': 14091.55, 'duration': 2.563}, {'end': 14095.294, 'text': "now let's implement this.", 'start': 14094.113, 'duration': 1.181}, {'end': 14101.96, 'text': 'so these two pages, these two sites, we will automate today.', 'start': 14098.399, 'duration': 3.561}, {'end': 14105.241, 'text': 'we will automate this table as well as this form.', 'start': 14101.96, 'duration': 3.281}, {'end': 14107.942, 'text': 'now this table is dynamic, it keeps on changing.', 'start': 14105.241, 'duration': 2.701}, {'end': 14115.864, 'text': 'it is the redif, money.redif.com, the gainers page, in which we have the markets companies present over here,', 'start': 14107.942, 'duration': 7.922}, {'end': 14121.766, 'text': "which keeps on changing according to their prices, and so we're going to automate this table today, which is dynamic.", 'start': 14115.864, 'duration': 5.902}, {'end': 14124.007, 'text': "also, we're going to automate this form now.", 'start': 14121.766, 'duration': 2.241}, {'end': 14124.807, 'text': 'this form is static.', 'start': 14124.007, 'duration': 0.8}, {'end': 14128.074, 'text': 'this is dynamic, so just open your intellij idea id.', 'start': 14125.427, 'duration': 2.647}, {'end': 14142.008, 'text': "Okay, so I've already created a Java class in this Selenium package and I have named it as Selenium Tutorial 7..", 'start': 14134.505, 'duration': 7.503}, {'end': 14149.391, 'text': "So we're going to implement our advanced XPath accesses in this Selenium Tutorial 7.", 'start': 14142.008, 'duration': 7.383}, {'end': 14153.573, 'text': 'So like the three lines is always the same in all the programs.', 'start': 14149.391, 'duration': 4.182}, {'end': 14155.774, 'text': 'So first is the open the Chrome browser.', 'start': 14153.773, 'duration': 2.001}, {'end': 14161.196, 'text': 'that is the system.set property, in which we have to specify the key value and the value that is present.', 'start': 14155.774, 'duration': 5.422}, {'end': 14164.137, 'text': 'that is the executable file you need to write over here.', 'start': 14161.196, 'duration': 2.941}, {'end': 14167.678, 'text': 'and the key that we use is the webdriver.chrome.driver.', 'start': 14164.597, 'duration': 3.081}, {'end': 14173.641, 'text': "because we're launching the chrome browser, the next line that we write is the webdriver driver is equal to new chrome driver.", 'start': 14167.678, 'duration': 5.963}, {'end': 14174.682, 'text': 'and why do we write this?', 'start': 14173.641, 'duration': 1.041}, {'end': 14177.723, 'text': 'i have explained in the previous tutorials, so you can go and check out that.', 'start': 14174.682, 'duration': 3.041}, {'end': 14181.832, 'text': 'The next thing that we are going to do is we are navigating to the URL.', 'start': 14179.11, 'duration': 2.722}, {'end': 14186.695, 'text': 'So we are going to use the driver.get command in which we are going to navigate to the particular URL.', 'start': 14181.892, 'duration': 4.803}, {'end': 14194.601, 'text': 'The next thing we are going to write is the maximizing the window in which we are using the driver.manage.window.maximize command.', 'start': 14187.116, 'duration': 7.485}, {'end': 14197.223, 'text': 'Okay, so these are the three things that we are going to do.', 'start': 14195.061, 'duration': 2.162}, {'end': 14198.584, 'text': "So let's execute this.", 'start': 14197.363, 'duration': 1.221}, {'end': 14208.713, 'text': 'And yeah, we are automating this table first, and then we will jump onto this page, okay? So first automate this one.', 'start': 14200.089, 'duration': 8.624}, {'end': 14211.615, 'text': "So let's execute this first.", 'start': 14209.894, 'duration': 1.721}, {'end': 14214.777, 'text': "Let's see whether we can launch the Chrome browser or not.", 'start': 14211.655, 'duration': 3.122}, {'end': 14223.041, 'text': 'So our Chrome browser is launched.', 'start': 14221.4, 'duration': 1.641}, {'end': 14224.922, 'text': "It's navigated.", 'start': 14224.101, 'duration': 0.821}, {'end': 14229.289, 'text': "and it's maximized.", 'start': 14228.149, 'duration': 1.14}, {'end': 14235.151, 'text': 'okay. so so far our this commands are working.', 'start': 14229.289, 'duration': 5.862}, {'end': 14240.032, 'text': "so let's get started with the xpath axis.", 'start': 14235.151, 'duration': 4.881}, {'end': 14243.853, 'text': 'so first important thing that we need to identify is the self node.', 'start': 14240.032, 'duration': 3.821}, {'end': 14250.575, 'text': 'on the basis of the self node we will identify the other relationships, that is, the ancestor, the parent, the descendants and everything.', 'start': 14243.853, 'duration': 6.722}, {'end': 14254.015, 'text': 'okay. so first thing is, we will identify the self node.', 'start': 14250.575, 'duration': 3.44}, {'end': 14259.493, 'text': "so uh, i'll take any of the let me take this one.", 'start': 14254.015, 'duration': 5.478}, {'end': 14266.836, 'text': 'ok, so i will just click on inspect and i will be using the selectors hub xpath tool.', 'start': 14259.493, 'duration': 7.343}, {'end': 14270.417, 'text': 'i have explained about the selectors hub in the previous tutorial how to install it.', 'start': 14266.836, 'duration': 3.581}, {'end': 14274.679, 'text': 'so you can check out that i will also give the link in the description box to install it.', 'start': 14270.417, 'duration': 4.262}, {'end': 14278.1, 'text': 'ok, so this is the element that i inspected.', 'start': 14274.679, 'duration': 3.421}, {'end': 14281.742, 'text': 'here you can see rash television network.', 'start': 14278.1, 'duration': 3.642}, {'end': 14285.043, 'text': 'so what i will do is i will copy this relative path.', 'start': 14281.742, 'duration': 3.301}, {'end': 14287.179, 'text': "I'll paste it over here.", 'start': 14286.178, 'duration': 1.001}, {'end': 14291.702, 'text': "And I'll write the contains method over here.", 'start': 14288.92, 'duration': 2.782}, {'end': 14292.983, 'text': 'Let me use the contains method.', 'start': 14291.722, 'duration': 1.261}, {'end': 14295.905, 'text': 'So here you can see we have one element matching.', 'start': 14293.824, 'duration': 2.081}, {'end': 14298.827, 'text': "So what I'll do first I'll identify the self.", 'start': 14296.486, 'duration': 2.341}, {'end': 14301.99, 'text': "So the syntax for it is that I'm writing the tag name.", 'start': 14299.228, 'duration': 2.762}, {'end': 14305.472, 'text': "I'm using the function that is the contains function of the x path.", 'start': 14302.09, 'duration': 3.382}, {'end': 14307.614, 'text': "I'll place a slash over here.", 'start': 14306.313, 'duration': 1.301}, {'end': 14309.776, 'text': "Then I'll write self.", 'start': 14308.915, 'duration': 0.861}, {'end': 14312.461, 'text': 'and the tag name.', 'start': 14311.761, 'duration': 0.7}, {'end': 14315.523, 'text': 'here you can see the tag name is a right.', 'start': 14312.461, 'duration': 3.062}, {'end': 14320.886, 'text': "so i will write a and click on enter and here you can see there's one element matching.", 'start': 14315.523, 'duration': 5.363}, {'end': 14322.447, 'text': 'that is this one.', 'start': 14320.886, 'duration': 1.561}, {'end': 14338.435, 'text': "okay, so i'll copy this and i'll write driver dot, find element by dot x path, and i'll place it over here.", 'start': 14322.447, 'duration': 15.988}, {'end': 14343.046, 'text': 'and what i want to do is i want to, uh, click this link.', 'start': 14338.435, 'duration': 4.611}, {'end': 14344.547, 'text': "so let's see.", 'start': 14343.046, 'duration': 1.501}, {'end': 14352.408, 'text': 'so let me run this.', 'start': 14344.547, 'duration': 7.861}, {'end': 14363.851, 'text': "so our chrome browser is executed, it's navigated and it's maximized and here you can see the raj television network is clicked.", 'start': 14352.408, 'duration': 11.443}, {'end': 14368.793, 'text': "okay, so we were performing the operation of clicks, so it's clicked.", 'start': 14363.851, 'duration': 4.942}, {'end': 14369.933, 'text': "so i'll just close this.", 'start': 14368.793, 'duration': 1.14}, {'end': 14373.927, 'text': 'So here you can see, this is the self note.', 'start': 14372.145, 'duration': 1.782}, {'end': 14375.93, 'text': 'We are using the self command.', 'start': 14374.348, 'duration': 1.582}, {'end': 14384.361, 'text': "We are identifying the self command over here just by writing one slash self, two colons, and the tag name that is we're using is A okay?", 'start': 14376.23, 'duration': 8.131}, {'end': 14391.598, 'text': "Next, let's see, is the parent node okay?", 'start': 14386.383, 'duration': 5.215}, {'end': 14393.159, 'text': "let's find the parent node.", 'start': 14391.598, 'duration': 1.561}, {'end': 14394.7, 'text': 'this is our element.', 'start': 14393.159, 'duration': 1.541}, {'end': 14396.221, 'text': 'now we have to find the parent node.', 'start': 14394.7, 'duration': 1.521}, {'end': 14398.403, 'text': 'that is the node above the self node.', 'start': 14396.221, 'duration': 2.182}, {'end': 14400.985, 'text': "that is the current html tag that we're taking.", 'start': 14398.403, 'duration': 2.582}, {'end': 14402.046, 'text': 'is the a right?', 'start': 14400.985, 'duration': 1.061}, {'end': 14403.868, 'text': 'above it we have the td tag.', 'start': 14402.046, 'duration': 1.822}, {'end': 14407.01, 'text': 'okay, so this will be our parent node.', 'start': 14403.868, 'duration': 3.142}, {'end': 14408.732, 'text': "so now what if we don't know?", 'start': 14407.01, 'duration': 1.722}, {'end': 14414.556, 'text': "What I'll do is I'll just write this will be the command that I'm writing, the tag name A.", 'start': 14409.312, 'duration': 5.244}, {'end': 14415.937, 'text': "I'm using the contains function.", 'start': 14414.556, 'duration': 1.381}, {'end': 14420.62, 'text': "And then I'll write one slash and I'll use the parent over here.", 'start': 14416.337, 'duration': 4.283}, {'end': 14422.882, 'text': "And what I'll do is I'll write the asterisks.", 'start': 14421.081, 'duration': 1.801}, {'end': 14431.148, 'text': 'And here I can see I have one parent over here which is identified for this element, that is the Raj Television Network.', 'start': 14424.583, 'duration': 6.565}, {'end': 14433.69, 'text': 'okay?, For this element the parent is here.', 'start': 14431.148, 'duration': 2.542}, {'end': 14436.572, 'text': "This is the parent where you can see it's identified over here.", 'start': 14433.97, 'duration': 2.602}, {'end': 14438.414, 'text': "Here you can see it's highlighted.", 'start': 14437.353, 'duration': 1.061}, {'end': 14441.014, 'text': 'So this is the parent.', 'start': 14440.233, 'duration': 0.781}, {'end': 14445.937, 'text': "This is in case when we don't know the parent of the current HTML tag.", 'start': 14441.534, 'duration': 4.403}, {'end': 14448.379, 'text': 'okay?. Now, here we know the parent, right?', 'start': 14445.937, 'duration': 2.442}, {'end': 14457.667, 'text': "So since I have written one slash parent and the two colons over here, which is in scope operator, and then I'll write td.", 'start': 14448.78, 'duration': 8.887}, {'end': 14461.45, 'text': "okay?. So here I can see again it's a one element matching.", 'start': 14457.667, 'duration': 3.783}, {'end': 14462.53, 'text': 'That is this one.', 'start': 14461.89, 'duration': 0.64}, {'end': 14465.453, 'text': "So what I'll do is I'll copy this.", 'start': 14463.131, 'duration': 2.322}, {'end': 14470.957, 'text': 'and driver dot.', 'start': 14467.476, 'duration': 3.481}, {'end': 14482.839, 'text': "find element by dot x path this, and let's do one thing i will retrieve the text over here.", 'start': 14470.957, 'duration': 11.882}, {'end': 14484.72, 'text': "okay, so let's retrieve the text.", 'start': 14482.839, 'duration': 1.881}, {'end': 14494.121, 'text': "so i'll write get text method and let me give a string variable over here.", 'start': 14484.72, 'duration': 9.401}, {'end': 14496.922, 'text': "i'll write parent node.", 'start': 14494.121, 'duration': 2.801}, {'end': 14502.1, 'text': "Then the next thing that I'll write is the system out dot println.", 'start': 14498.598, 'duration': 3.502}, {'end': 14508.143, 'text': "I'll type the parent node is.", 'start': 14502.86, 'duration': 5.283}, {'end': 14515.286, 'text': "Similarly, I'll do for this one also.", 'start': 14513.285, 'duration': 2.001}, {'end': 14517.207, 'text': "Let's see what value do we get.", 'start': 14515.386, 'duration': 1.821}, {'end': 14525.011, 'text': 'Get text and I will give a variable over here.', 'start': 14518.648, 'duration': 6.363}, {'end': 14533.78, 'text': "So I'll write the self node is.", 'start': 14527.856, 'duration': 5.924}, {'end': 14536.922, 'text': "So let's see what value it prints.", 'start': 14534.78, 'duration': 2.142}, {'end': 14538.863, 'text': "So I'll execute this command.", 'start': 14537.562, 'duration': 1.301}, {'end': 14542.205, 'text': 'Our Chrome browser is launched.', 'start': 14538.883, 'duration': 3.322}, {'end': 14543.826, 'text': "It's navigated.", 'start': 14543.006, 'duration': 0.82}, {'end': 14546.188, 'text': "It's maximized.", 'start': 14545.187, 'duration': 1.001}, {'end': 14548.249, 'text': "So let's see.", 'start': 14547.709, 'duration': 0.54}, {'end': 14553.072, 'text': 'See the self node is Raj Television Network and the parent node is Raj Television Network.', 'start': 14548.609, 'duration': 4.463}, {'end': 14559.568, 'text': "Now here there's one thing to notice that is there any value in TD? Here we can see, it's here.", 'start': 14553.593, 'duration': 5.975}, {'end': 14563.472, 'text': 'Is there any value in TD? There is no value in TD.', 'start': 14559.948, 'duration': 3.524}, {'end': 14564.933, 'text': 'There is no value in TD.', 'start': 14563.672, 'duration': 1.261}, {'end': 14569.999, 'text': 'So that is the reason why we are not getting any value printed over here.', 'start': 14564.953, 'duration': 5.046}, {'end': 14574.284, 'text': 'The only value that we are getting over here is Raj Television Network.', 'start': 14570.179, 'duration': 4.105}, {'end': 14582.308, 'text': 'because under the parent element, under the td tag, we have the a tag right which has the link of the rash television network.', 'start': 14574.804, 'duration': 7.504}], 'summary': 'The transcript covers html tag relationships and implementation of advanced xpath accesses in selenium, including navigating, maximizing windows, and identifying self and parent nodes.', 'duration': 558.215, 'max_score': 14024.093, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ14024093.jpg'}, {'end': 14254.015, 'src': 'embed', 'start': 14229.289, 'weight': 1, 'content': [{'end': 14235.151, 'text': 'okay. so so far our this commands are working.', 'start': 14229.289, 'duration': 5.862}, {'end': 14240.032, 'text': "so let's get started with the xpath axis.", 'start': 14235.151, 'duration': 4.881}, {'end': 14243.853, 'text': 'so first important thing that we need to identify is the self node.', 'start': 14240.032, 'duration': 3.821}, {'end': 14250.575, 'text': 'on the basis of the self node we will identify the other relationships, that is, the ancestor, the parent, the descendants and everything.', 'start': 14243.853, 'duration': 6.722}, {'end': 14254.015, 'text': 'okay. so first thing is, we will identify the self node.', 'start': 14250.575, 'duration': 3.44}], 'summary': 'Introducing xpath axis, starting with identifying the self node.', 'duration': 24.726, 'max_score': 14229.289, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ14229289.jpg'}, {'end': 14737.33, 'src': 'embed', 'start': 14704.242, 'weight': 3, 'content': [{'end': 14707.523, 'text': "Okay, so I've gone to my ancestor, I've traversed to my ancestor.", 'start': 14704.242, 'duration': 3.281}, {'end': 14710.124, 'text': 'Now I want to find the child elements of my ancestor.', 'start': 14707.583, 'duration': 2.541}, {'end': 14714.406, 'text': "So what I'm going to do is I'm going to put another slash over here.", 'start': 14710.545, 'duration': 3.861}, {'end': 14722.358, 'text': "write child Colons and let's see how many I'm getting five child elements over here.", 'start': 14714.406, 'duration': 7.952}, {'end': 14724.88, 'text': 'This is the first one.', 'start': 14724.12, 'duration': 0.76}, {'end': 14726.622, 'text': 'This is the second one.', 'start': 14724.9, 'duration': 1.722}, {'end': 14728.003, 'text': 'This is the third one.', 'start': 14727.082, 'duration': 0.921}, {'end': 14730.344, 'text': 'This is the fourth one and this is the fifth one.', 'start': 14728.383, 'duration': 1.961}, {'end': 14737.33, 'text': 'OK, now see selectors hub is having this feature of identifying these five elements which are matching which is showing over here also.', 'start': 14730.965, 'duration': 6.365}], 'summary': 'Identified 5 child elements of ancestor using selectors hub.', 'duration': 33.088, 'max_score': 14704.242, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ14704242.jpg'}, {'end': 14818.16, 'src': 'embed', 'start': 14791.511, 'weight': 0, 'content': [{'end': 14796.654, 'text': 'i explained about the crowpath plugin also, but the selectors hub is the advanced version of the crowpath plugin.', 'start': 14791.511, 'duration': 5.143}, {'end': 14801.497, 'text': "so i would recommend not to use crowpath for now because it's absolute.", 'start': 14796.654, 'duration': 4.843}, {'end': 14803.258, 'text': "it's not that updated till now.", 'start': 14801.497, 'duration': 1.761}, {'end': 14804.919, 'text': 'so selectors hub is more updated.', 'start': 14803.258, 'duration': 1.661}, {'end': 14805.8, 'text': 'so use selectors, hub.', 'start': 14804.919, 'duration': 0.881}, {'end': 14812.537, 'text': 'okay, like here you can see, i place the asterisk mark and here you can see there are different td tags present over here.', 'start': 14806.553, 'duration': 5.984}, {'end': 14816.159, 'text': 'that is a child elements one, two, three, four, five.', 'start': 14812.537, 'duration': 3.622}, {'end': 14818.16, 'text': 'we are having five elements over here.', 'start': 14816.159, 'duration': 2.001}], 'summary': 'Selectors hub is more updated than crowpath, with 5 child elements.', 'duration': 26.649, 'max_score': 14791.511, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ14791511.jpg'}], 'start': 11554.731, 'title': 'Advanced xpath access', 'summary': 'Covers the practical implementation of advanced xpath accesses in selenium java class, including usage of absolute and relative xpaths, and and or xpath operators, contains and text methods, and xpath relationships, aiding in easier locating of elements in the html dom structure.', 'chapters': [{'end': 11743.529, 'start': 11554.731, 'title': 'Xpath absolute and relative usage', 'summary': 'Demonstrates the usage of absolute and relative xpaths in selenium, launching the chrome browser, maximizing it, sending a command to the search box, and clicking on the search button using both xpaths.', 'duration': 188.798, 'highlights': ['Demonstrating the usage of absolute and relative XPaths in Selenium Showcases practical usage of XPaths in Selenium automation', 'Launching the Chrome browser, navigating, and maximizing it Utilizing Selenium to automate the process of launching and navigating the Chrome browser', "Sending the command 't-shirts' to the search box and clicking on the search button Utilizing Selenium to send a specific command to the search box and performing a click action"]}, {'end': 13088.821, 'start': 11743.549, 'title': 'Xpath operators and functions', 'summary': 'Covers the practical implementation and syntax of or and and xpath operators, demonstrating their functionality in identifying web elements, followed by a demonstration of the contains, starts with, and text functions in locating web elements based on partial or complete attribute values, and text of the web element, respectively.', 'duration': 1345.272, 'highlights': ['The chapter covers the practical implementation and syntax of OR and AND XPath operators, demonstrating their functionality in identifying web elements. The tutorial explains the syntax and practical implementation of OR and AND XPath operators for identifying web elements based on attribute values, providing a comprehensive understanding of their functionality.', 'Demonstration of the contains, starts with, and text functions in locating web elements based on partial or complete attribute values, and text of the web element, respectively. The transcript provides a detailed demonstration of the contains, starts with, and text functions, showcasing their usage in locating web elements based on partial or complete attribute values, and the text of the web element, contributing to a better understanding of these functions.']}, {'end': 13640.413, 'start': 13088.821, 'title': 'Using contains and text methods in xpath', 'summary': 'Discusses the usage of contains and text methods in xpath, highlighting how contains method identifies six matching elements while the text method identifies only one, and when to use contains, starts with, and text methods in xpath.', 'duration': 551.592, 'highlights': ['Contains method identifies six matching elements while text method identifies only one When using the contains method, six elements are identified as matching, while the text method only identifies one element.', 'Explanation of when to use contains, starts with, and text methods in XPath The transcript explains when to use contains method for partial constant visible text, starts with method for initial partial constant visible text, and text method for absolute visible text in XPath.', 'Introduction to advanced XPath functions and access methods The chapter introduces advanced XPath functions and access methods, highlighting the upcoming study of XPath axis, including ancestors, parent, child, following siblings, and preceding siblings.']}, {'end': 14128.074, 'start': 13640.413, 'title': 'Understanding xpath relationships', 'summary': 'Explains the relationship of nodes in xpath, covering ancestor, parent, child, descendant, following, preceding, preceding sibling, and following siblings, with practical implementation and examples, aiding in easier locating of elements in the html dom structure.', 'duration': 487.661, 'highlights': ['The chapter covers the relationship of nodes in XPath, including ancestor, parent, child, descendant, following, preceding, preceding sibling, and following siblings, with practical implementation and examples. This encompasses the main content of the transcript, providing an overview of the key points covered.', 'Practical implementation examples are provided for better understanding, aiding in easier location of elements in the HTML DOM structure. This emphasizes the practical application of the concepts, enhancing comprehension and application for the learner.', 'The explanation uses family tree terms to facilitate understanding of the relationships, making it easier to grasp the concepts. This approach simplifies the comprehension of complex terms by relating them to familiar family tree concepts.']}, {'end': 14805.8, 'start': 14134.505, 'title': 'Selenium tutorial 7: advanced xpath access', 'summary': 'Covers the implementation of advanced xpath accesses in a selenium java class, including launching the chrome browser, navigating to a url, maximizing the window, and demonstrating xpath axis like self, parent, ancestor, and child nodes.', 'duration': 671.295, 'highlights': ['The chapter demonstrates implementing advanced XPath accesses in a Selenium Java class, including launching the Chrome browser, navigating to a URL, maximizing the window, and demonstrating XPath axis like self, parent, ancestor, and child nodes.', 'The tutorial explains the identification of the self node using XPath and demonstrates the use of the contains method to identify elements matching the self node, with a specific example resulting in one matching element.', 'It elaborates on the identification of the parent node using XPath, showcasing the usage of the parent axis to find the parent node of a given element, along with a practical example resulting in the identification of the parent node.', 'The tutorial explains the process of identifying child nodes using XPath, demonstrating the use of the child axis to traverse and identify child elements of a given ancestor node, with a specific example resulting in the identification of five child elements.', 'It recommends the use of the Selectors Hub tool for XPath access, highlighting its features and advantages in aiding the writing and validation of XPath expressions, and emphasizes its superiority over the outdated CrowPath plugin.']}], 'duration': 3251.069, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ11554731.jpg', 'highlights': ['Practical implementation of advanced XPath accesses in Selenium Java class', 'Demonstrating the usage of absolute and relative XPaths in Selenium automation', 'Demonstration of the contains, starts with, and text functions in locating web elements', 'Introduction to advanced XPath functions and access methods', 'Covers the relationship of nodes in XPath with practical implementation and examples', 'Demonstrates implementing advanced XPath accesses in a Selenium Java class']}, {'end': 16157.018, 'segs': [{'end': 14884.287, 'src': 'embed', 'start': 14855.066, 'weight': 0, 'content': [{'end': 14861.108, 'text': "Now, what I'll do is I want to know the number of child elements present over here.", 'start': 14855.066, 'duration': 6.042}, {'end': 14863.689, 'text': "I'll print the number of child elements present over here.", 'start': 14861.148, 'duration': 2.541}, {'end': 14868.251, 'text': "So, I'll write child node is equal to this.", 'start': 14863.729, 'duration': 4.522}, {'end': 14878.555, 'text': "Now, what we are finding? We are finding a web element, a multiple web elements we are finding, right? So, I'll write web element.", 'start': 14868.671, 'duration': 9.884}, {'end': 14882.426, 'text': 'now this is a web element, child node.', 'start': 14879.645, 'duration': 2.781}, {'end': 14884.287, 'text': 'but we are finding multiple elements.', 'start': 14882.426, 'duration': 1.861}], 'summary': 'Finding the number of child web elements present and printing the count.', 'duration': 29.221, 'max_score': 14855.066, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ14855066.jpg'}, {'end': 15747.767, 'src': 'embed', 'start': 15720.25, 'weight': 2, 'content': [{'end': 15726.693, 'text': 'here you can see we have the input tag and the id locator has been used, the id locator in which the value is the company.', 'start': 15720.25, 'duration': 6.443}, {'end': 15736.903, 'text': 'okay, so, as i said, the xpath access can be used with any of the locators and in fact it can be used with the methods also, okay.', 'start': 15728.16, 'duration': 8.743}, {'end': 15741.765, 'text': "so now what i'm going to do is i'm just going to write a slash.", 'start': 15736.903, 'duration': 4.862}, {'end': 15742.665, 'text': 'this is the self element.', 'start': 15741.765, 'duration': 0.9}, {'end': 15747.767, 'text': "so i'll write the cells, two colons and the in the tag.", 'start': 15742.665, 'duration': 5.102}], 'summary': 'Demonstrating the use of id locator and xpath access with the input tag, highlighting the versatility of xpath in accessing elements.', 'duration': 27.517, 'max_score': 15720.25, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ15720250.jpg'}, {'end': 16137.961, 'src': 'embed', 'start': 16103.425, 'weight': 1, 'content': [{'end': 16112.846, 'text': "So I'll just write list and the web element driver dot, find elements.", 'start': 16103.425, 'duration': 9.421}, {'end': 16119.752, 'text': "i'm using find elements by dot xpath and i will specify the xpath over here.", 'start': 16112.846, 'duration': 6.906}, {'end': 16131.082, 'text': 'and what i want is i want to find the number of child nodes right plus child nodes dot size.', 'start': 16119.752, 'duration': 11.33}, {'end': 16133.797, 'text': "we're using the size method.", 'start': 16132.236, 'duration': 1.561}, {'end': 16137.14, 'text': "see the reason why i'm automating two web pages, because that was a dynamic one.", 'start': 16133.797, 'duration': 3.343}, {'end': 16137.961, 'text': 'this is a static one.', 'start': 16137.14, 'duration': 0.821}], 'summary': 'Using find elements and xpath to automate web pages, finding number of child nodes for dynamic and static pages.', 'duration': 34.536, 'max_score': 16103.425, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ16103425.jpg'}], 'start': 14806.553, 'title': 'Web automation and xpath navigation', 'summary': 'Covers selenium web automation, including identifying elements, xpath navigation with a total of almost 13,000 following elements and 1705 following siblings, and automating web pages using xpath access with code available on github.', 'chapters': [{'end': 15034.847, 'start': 14806.553, 'title': 'Selenium web automation', 'summary': 'Covers the process of finding and interacting with web elements using selenium, including identifying child nodes, finding multiple elements, and printing the number of child nodes, with a focus on the td tags and the ancestor node, while also launching, navigating, maximizing, and closing the chrome browser.', 'duration': 228.294, 'highlights': ['The chapter covers the process of finding and interacting with web elements using Selenium. Describes the main focus of the chapter.', 'Identifying child nodes, finding multiple elements, and printing the number of child nodes. Key points of the process explained in the chapter.', 'Focus on the TD tags and the ancestor node. Specific elements of the web page that are highlighted for interaction.', 'Launching, navigating, maximizing, and closing the Chrome browser. Details the actions related to the Chrome browser during the process.']}, {'end': 15467.383, 'start': 15037.253, 'title': 'Understanding xpath navigation', 'summary': 'Explains the navigation through ancestor, following, following sibling, preceding, and preceding sibling elements in xpath, detailing the count of elements and their differences, with a total of almost 13,000 following elements and 1705 following siblings.', 'duration': 430.13, 'highlights': ['Detailing the count of following elements and their identification. A total of almost 13,000 following elements are identified, showcasing the abundance of matching elements for the following criteria.', 'Explaining the count of following siblings and their identification. A total of 1705 following siblings are identified, emphasizing the substantial number of elements following the current HTML tag.', 'Distinguishing between preceding and preceding sibling elements. Highlighting the difference between preceding and preceding sibling elements, clarifying the elements preceding a specific node and their relationship with its siblings.']}, {'end': 15662.823, 'start': 15467.383, 'title': 'Xpath access and web element identification', 'summary': 'Covers the execution of code for xpath access, identifying self node, parent node, child node, ancestor node, following, following siblings, preceding, and preceding siblings, demonstrating the identification of 200 elements, 6 preceding siblings, and the dynamic nature of web elements.', 'duration': 195.44, 'highlights': ['The chapter demonstrates the identification of 200 elements, 6 preceding siblings, and the dynamic nature of web elements.', 'The code executed illustrates xpath access and the identification of self node, parent node, child node, ancestor node, following, following siblings, preceding, and preceding siblings.', 'The table representing web elements is dynamic and subject to change, showcasing the dynamic nature of web elements.']}, {'end': 15884.614, 'start': 15662.823, 'title': 'Automating web page with xpath access', 'summary': 'Demonstrates automating web pages using xpath access, including identifying self and parent elements, with code available on github, and a demonstration of using xpath access to send keys and locate parent elements.', 'duration': 221.791, 'highlights': ['The code for automating web pages using xpath access is available on Github, providing a practical resource for learners.', "Demonstration of using xpath access to locate and send keys to the company name element, with 'ABC' as the specific command sent.", 'Explanation of identifying parent elements using xpath access, including a detailed breakdown of the hierarchy of elements.', "Clarification on the usage of xpath access, emphasizing that there is only one xpath method, 'by dot xpath', for both relative and absolute xpath."]}, {'end': 16157.018, 'start': 15884.614, 'title': 'Automating web elements and finding values', 'summary': 'Demonstrates automating web elements by finding parent and child nodes, using the get text method to print values, and finding the number of child nodes using find elements by xpath, with a focus on practical application and practice.', 'duration': 272.404, 'highlights': ['The get text method is used to print the values of all elements under the parent tag, including name, email, role, company, country, postal code, and username. The get text method is used to print the values of all elements under the parent tag, including name, email, role, company, country, postal code, and username.', 'The chapter highlights the process of finding the number of child nodes using find elements by xpath and the size method, with 26 elements identified under the parent tag. The chapter highlights the process of finding the number of child nodes using find elements by xpath and the size method, with 26 elements identified under the parent tag.', 'The importance of practicing automation, including dynamic and static web pages, is emphasized for gaining proficiency and practical application. The importance of practicing automation, including dynamic and static web pages, is emphasized for gaining proficiency and practical application.']}], 'duration': 1350.465, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ14806553.jpg', 'highlights': ['Covers selenium web automation, including identifying elements, xpath navigation with a total of almost 13,000 following elements and 1705 following siblings, and automating web pages using xpath access with code available on github.', 'Detailing the count of following elements and their identification. A total of almost 13,000 following elements are identified, showcasing the abundance of matching elements for the following criteria.', 'Explaining the count of following siblings and their identification. A total of 1705 following siblings are identified, emphasizing the substantial number of elements following the current HTML tag.', 'The code for automating web pages using xpath access is available on Github, providing a practical resource for learners.', 'The code executed illustrates xpath access and the identification of self node, parent node, child node, ancestor node, following, following siblings, preceding, and preceding siblings.']}, {'end': 17248.39, 'segs': [{'end': 16341.24, 'src': 'embed', 'start': 16312.72, 'weight': 0, 'content': [{'end': 16316.863, 'text': 'so under the parent tag after the company name, all the values that is coming,', 'start': 16312.72, 'duration': 4.143}, {'end': 16321.366, 'text': 'all the web elements that is identified after the company name are your following siblings.', 'start': 16316.863, 'duration': 4.503}, {'end': 16326.229, 'text': "whereas following means the country, the postal, the username, there's the sign up and then this login.", 'start': 16321.366, 'duration': 4.863}, {'end': 16328.931, 'text': 'already have a salesforce developer environment.', 'start': 16326.229, 'duration': 2.702}, {'end': 16336.096, 'text': "all this is the following and where's the following siblings is the country, postal code, username and this value in the sign up value.", 'start': 16328.931, 'duration': 7.165}, {'end': 16341.24, 'text': 'similarly, for proceeding, let me show you the preceding as well.', 'start': 16336.096, 'duration': 5.144}], 'summary': 'The transcript discusses the relationship between web elements and their position relative to the company name tag.', 'duration': 28.52, 'max_score': 16312.72, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ16312720.jpg'}, {'end': 16662.462, 'src': 'embed', 'start': 16631.895, 'weight': 1, 'content': [{'end': 16633.655, 'text': 'for example, the start and the stop button.', 'start': 16631.895, 'duration': 1.76}, {'end': 16637.198, 'text': 'right they have the two words, that is, the st words.', 'start': 16633.655, 'duration': 3.543}, {'end': 16640.2, 'text': 'the starting value are same right, so we can use that.', 'start': 16637.198, 'duration': 3.002}, {'end': 16641.881, 'text': 'so starts with is used in that case.', 'start': 16640.2, 'duration': 1.681}, {'end': 16644.363, 'text': 'The next we have the XPath accesses.', 'start': 16642.501, 'duration': 1.862}, {'end': 16648.726, 'text': 'that is the self following following sibling ancestor, preceding descendant parent and child.', 'start': 16644.363, 'duration': 4.363}, {'end': 16655.875, 'text': 'These are the syntaxes of all these self and following which we studied till now.', 'start': 16649.248, 'duration': 6.627}, {'end': 16658.237, 'text': 'So you can study this and get a hang of it.', 'start': 16655.895, 'duration': 2.342}, {'end': 16662.462, 'text': 'So this is a small cheat sheet which I usually refer while studying the XPath.', 'start': 16658.698, 'duration': 3.764}], 'summary': 'The transcript covers examples of xpath syntaxes and their use cases.', 'duration': 30.567, 'max_score': 16631.895, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ16631895.jpg'}, {'end': 16872.65, 'src': 'embed', 'start': 16839.043, 'weight': 2, 'content': [{'end': 16841.284, 'text': "Okay, now I'll use a DOM property.", 'start': 16839.043, 'duration': 2.241}, {'end': 16857.9, 'text': 'that is, the inner HTML is equal to welcome to programming knowledge.', 'start': 16841.284, 'duration': 16.616}, {'end': 16862.223, 'text': "okay, now let's run this command here.", 'start': 16857.9, 'duration': 4.323}, {'end': 16866.025, 'text': 'you can see the output is welcome to programming knowledge.', 'start': 16862.223, 'duration': 3.802}, {'end': 16870.968, 'text': 'now, what we can see over here is that welcome to programming knowledge is overriding.', 'start': 16866.025, 'duration': 4.943}, {'end': 16872.65, 'text': 'this is not shown.', 'start': 16870.968, 'duration': 1.682}], 'summary': "Using dom property innerhtml to display 'welcome to programming knowledge' output.", 'duration': 33.607, 'max_score': 16839.043, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ16839043.jpg'}], 'start': 16158.234, 'title': 'Automating chrome browser, xpath, and shadow dom', 'summary': 'Covers automating chrome browser with 562 elements identified, xpath usage with 25 child nodes, 560 following nodes, and 108 preceding nodes, and understanding shadow dom in web development with practical examples.', 'chapters': [{'end': 16274.781, 'start': 16158.234, 'title': 'Automating chrome browser with node counting', 'summary': 'Demonstrates automating the chrome browser to navigate, maximize, and count the number of child nodes and following nodes, with a total of 562 elements identified and the practice of proceeding nodes to automate web pages.', 'duration': 116.547, 'highlights': ['The chapter demonstrates automating the Chrome browser to navigate, maximize, and count the number of child nodes and following nodes, with a total of 562 elements identified and the practice of proceeding nodes to automate web pages.', 'The number of following nodes identified is 562, and the practice is focused on automating web pages for practice purposes.', "The Chrome browser is launched, navigated, and maximized, and the company name 'abc' is utilized in the process."]}, {'end': 16669.509, 'start': 16275.702, 'title': 'Xpath relationships and syntax', 'summary': 'Covers the usage of xpath in web automation, highlighting the concepts of following and preceding nodes along with their differences and syntax, encompassing 25 child nodes, 560 following nodes, and 108 preceding nodes, and provides a comprehensive overview of xpath syntax and operators.', 'duration': 393.807, 'highlights': ['The chapter covers the usage of XPath in web automation, highlighting the concepts of following and preceding nodes along with their differences and syntax, encompassing 25 child nodes, 560 following nodes, and 108 preceding nodes It explains the concepts of following and preceding nodes, providing quantifiable data on the number of child nodes (25), following nodes (560), and preceding nodes (108).', 'The chapter provides a comprehensive overview of XPath syntax and operators It delves into the syntax and operators of XPath, including absolute and relative XPath, XPath operators (AND, OR), XPath accesses, and methods like contains, text, and starts with.']}, {'end': 17248.39, 'start': 16669.509, 'title': 'Understanding shadow dom in web development', 'summary': 'Explores the concept of shadow dom, its need in web development, and its role in encapsulating html code and style components to prevent overriding, with practical examples and explanations.', 'duration': 578.881, 'highlights': ['Shadow DOM is a web standard used to encapsulate HTML code and style components to prevent overriding, addressing the need for isolating web components from external interference. Explains the purpose of Shadow DOM and its role in preventing external style components from overriding the encapsulated code.', 'DOM provides JavaScript the power to change elements, attributes, add or remove elements, create new HTML events, and react to events, demonstrated through practical examples of altering web page elements using JavaScript. Details the capabilities of DOM in enabling JavaScript to manipulate web page elements and events, demonstrated through a practical example of using JavaScript to alter a web page element.', 'Illustrates the use of iframes to encapsulate functionalities, ensuring changes in one iframe do not affect another, providing an overview of iframe functionality. Provides an overview of iframes and their functionality in encapsulating functionalities to prevent interference between different iframes.']}], 'duration': 1090.156, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ16158234.jpg', 'highlights': ['The chapter demonstrates automating the Chrome browser to navigate, maximize, and count the number of child nodes and following nodes, with a total of 562 elements identified and the practice of proceeding nodes to automate web pages.', 'The chapter covers the usage of XPath in web automation, highlighting the concepts of following and preceding nodes along with their differences and syntax, encompassing 25 child nodes, 560 following nodes, and 108 preceding nodes.', 'Shadow DOM is a web standard used to encapsulate HTML code and style components to prevent overriding, addressing the need for isolating web components from external interference.']}, {'end': 18425.81, 'segs': [{'end': 17610.61, 'src': 'embed', 'start': 17570.733, 'weight': 2, 'content': [{'end': 17572.514, 'text': 'This is the shadow trees that we are having.', 'start': 17570.733, 'duration': 1.781}, {'end': 17575.335, 'text': 'It is a dorm tree inside the shadow dorm.', 'start': 17573.194, 'duration': 2.141}, {'end': 17577.256, 'text': 'Inside the shadow dorm, these are the dorm trees.', 'start': 17575.515, 'duration': 1.741}, {'end': 17580.629, 'text': 'Next we have the shadow boundary.', 'start': 17579.249, 'duration': 1.38}, {'end': 17582.93, 'text': 'Here you can see this is the shadow boundary.', 'start': 17581.049, 'duration': 1.881}, {'end': 17587.711, 'text': 'This is the place where the shadow dome ends and the regular dome begins.', 'start': 17583.57, 'duration': 4.141}, {'end': 17591.591, 'text': 'Okay, so this is the place where the shadow dome ends and the regular dome begins.', 'start': 17588.291, 'duration': 3.3}, {'end': 17593.592, 'text': 'Next we have the shadow root.', 'start': 17592.331, 'duration': 1.261}, {'end': 17596.152, 'text': 'That is the root node of the shadow tree.', 'start': 17593.972, 'duration': 2.18}, {'end': 17599.333, 'text': 'Now this is the most important element that we are going to inspect.', 'start': 17596.192, 'duration': 3.141}, {'end': 17604.614, 'text': 'Like suppose if you want to inspect this element, we will inspect the shadow root, we will inspect the shadow host.', 'start': 17599.393, 'duration': 5.221}, {'end': 17605.934, 'text': 'So we will understand that.', 'start': 17604.974, 'duration': 0.96}, {'end': 17610.61, 'text': 'But for now, these are some of the terminologies that is used in the shadow DOM structure.', 'start': 17606.414, 'duration': 4.196}], 'summary': 'The transcript discusses the elements of the shadow dom structure, including shadow trees, shadow boundary, and shadow root.', 'duration': 39.877, 'max_score': 17570.733, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ17570733.jpg'}, {'end': 17747.238, 'src': 'embed', 'start': 17675.038, 'weight': 0, 'content': [{'end': 17679.519, 'text': 'The elements that are under shadow root is style, div, div, slotName.', 'start': 17675.038, 'duration': 4.481}, {'end': 17682.08, 'text': 'These are the elements that is present under shadow root.', 'start': 17679.619, 'duration': 2.461}, {'end': 17687.746, 'text': 'this input is under book input decorator top.', 'start': 17683.843, 'duration': 3.903}, {'end': 17693.39, 'text': 'okay, this book input decorator top is not under the shadow root.', 'start': 17687.746, 'duration': 5.644}, {'end': 17696.612, 'text': 'if you are thinking this is under shadow root because the shadow root is written over here.', 'start': 17693.39, 'duration': 3.222}, {'end': 17706.399, 'text': 'no, if we click on this, we can see the style and the slot tags are under the shadow root, but the book input decor top is not under the shadow root.', 'start': 17696.612, 'duration': 9.787}, {'end': 17712.109, 'text': 'okay, So this book input decor top is under the app toolbar.', 'start': 17706.399, 'duration': 5.71}, {'end': 17720.034, 'text': 'So, this book input decor top is under the app toolbar and this app toolbar is not under the shadow root.', 'start': 17712.829, 'duration': 7.205}, {'end': 17726.697, 'text': 'Can you see anything? Can you see the shadow root? The shadow root is present over here in which we have the style and the div tags.', 'start': 17720.714, 'duration': 5.983}, {'end': 17731.14, 'text': 'Okay? So, this app toolbar is not present under the shadow root.', 'start': 17727.238, 'duration': 3.902}, {'end': 17735.562, 'text': 'This book input decor is present into app toolbar.', 'start': 17732.36, 'duration': 3.202}, {'end': 17742.035, 'text': 'Okay?. next, this app toolbar is present under the app header.', 'start': 17736.263, 'duration': 5.772}, {'end': 17747.238, 'text': 'this is the app header, okay, which is inside the shadow root.', 'start': 17742.035, 'duration': 5.203}], 'summary': 'Elements under shadow root: style, div, slot. book input decorator top not under shadow root.', 'duration': 72.2, 'max_score': 17675.038, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ17675038.jpg'}, {'end': 17935.655, 'src': 'embed', 'start': 17904.293, 'weight': 1, 'content': [{'end': 17907.635, 'text': 'after app header, we will access the app toolbar.', 'start': 17904.293, 'duration': 3.342}, {'end': 17910.476, 'text': 'we will inspect the app toolbar.', 'start': 17907.635, 'duration': 2.841}, {'end': 17915.958, 'text': 'after that we will inspect the book input decor and then we can move on to input.', 'start': 17910.476, 'duration': 5.482}, {'end': 17919.04, 'text': "okay, so this is the entire process that we're going to follow.", 'start': 17915.958, 'duration': 3.082}, {'end': 17921.661, 'text': "so let's do that.", 'start': 17919.04, 'duration': 2.621}, {'end': 17924.582, 'text': "so first let's inspect the host.", 'start': 17921.661, 'duration': 2.921}, {'end': 17932.414, 'text': 'we will write a driver dot find element By dot tag name.', 'start': 17924.582, 'duration': 7.832}, {'end': 17935.655, 'text': "Over here we're going to write.", 'start': 17934.534, 'duration': 1.121}], 'summary': 'Inspect app toolbar, book input decor, and input in the process using driver.find element by tag name.', 'duration': 31.362, 'max_score': 17904.293, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ17904293.jpg'}, {'end': 18064.836, 'src': 'embed', 'start': 18039.455, 'weight': 3, 'content': [{'end': 18045.862, 'text': 'now, just because this is of javascript executed type, we need to cast it to web element because i want to inspect web elements over here.', 'start': 18039.455, 'duration': 6.407}, {'end': 18050.948, 'text': "okay, now, whatever we're going to do, we're going to do inside this shadow dom.", 'start': 18045.862, 'duration': 5.086}, {'end': 18053.83, 'text': 'okay, This is a shadow Dom.', 'start': 18050.948, 'duration': 2.882}, {'end': 18059.473, 'text': 'we inspected the host element we are and we inspected the shadow root element.', 'start': 18053.83, 'duration': 5.643}, {'end': 18064.836, 'text': 'So we are inside shadow root now now inside shadow root inside the shadow root.', 'start': 18059.733, 'duration': 5.103}], 'summary': 'Javascript executed, casting to web element, inspecting shadow dom.', 'duration': 25.381, 'max_score': 18039.455, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ18039455.jpg'}], 'start': 17248.991, 'title': 'Understanding and implementing shadow dom in web development', 'summary': 'Explains the concept of shadow dom, its challenges, and key terminologies, while also discussing the identification, implementation, and inspection of shadow dom elements. it emphasizes practical steps, structure, traversal, and suggests practicing on specific websites.', 'chapters': [{'end': 17591.591, 'start': 17248.991, 'title': 'Understanding shadow dom in web development', 'summary': 'Explains the concept of shadow dom, a web standard used by developers to encapsulate html code and css components, preventing other css components from overriding their code. it also highlights the challenges of locating and inspecting shadow dom elements using selenium locators, emphasizing the need to use css selectors and javascript executor, and introduces key terminologies including shadow host, shadow tree, and shadow boundary.', 'duration': 342.6, 'highlights': ['Shadow DOM is a web standard that developers use to encapsulate their HTML code and CSS components, preventing other CSS components from overriding their code. Developers use Shadow DOM to encapsulate their HTML code and CSS components, preventing overrides.', 'Challenges of locating and inspecting Shadow DOM elements using Selenium locators, emphasizing the need to use CSS selectors and JavaScript executor. Locating and inspecting Shadow DOM elements using Selenium locators requires using CSS selectors and JavaScript executor.', 'Introduces key terminologies including shadow host, shadow tree, and shadow boundary. Key terminologies in Shadow DOM include shadow host, shadow tree, and shadow boundary.']}, {'end': 18008.475, 'start': 17592.331, 'title': 'Identifying and implementing shadow dom', 'summary': 'Discusses the identification and implementation of shadow dom, including terminology, identifying elements in shadow dom, and practical implementation steps, detailing the structure and traversal process, along with the usage of javascript executor.', 'duration': 416.144, 'highlights': ['The shadow root is the most important element to inspect in the shadow DOM, and identifying it involves recognizing its presence in the DOM structure and using selectors hub to determine if an element is in the shadow DOM, along with the limitations of XPath for such elements. The shadow root is crucial to inspect in the shadow DOM, and its identification involves recognizing its presence in the DOM structure and using selectors hub to determine if an element is in the shadow DOM. Additionally, limitations of XPath for such elements are highlighted.', 'Understanding the structure and elements within and outside the shadow root is essential before writing code for automation, as demonstrated by differentiating between elements under the shadow root and those outside, and examining the hierarchical structure of elements. Understanding the structure and elements within and outside the shadow root is essential before writing code for automation. This is demonstrated by differentiating between elements under the shadow root and those outside, and examining the hierarchical structure of elements.', 'The process of implementing shadow DOM involves a step-by-step traversal from the host element to the shadow root and subsequent elements, utilizing JavaScript executor and practical inspection of the desired element, such as entering values into a search box. The process of implementing shadow DOM involves a step-by-step traversal from the host element to the shadow root and subsequent elements. This includes utilizing JavaScript executor and practical inspection of the desired element, such as entering values into a search box.']}, {'end': 18425.81, 'start': 18008.475, 'title': 'Inspecting shadow dom elements', 'summary': 'Discusses navigating and inspecting elements within a shadow dom, providing a step-by-step process, including finding the host element, navigating through shadow dom, and inspecting specific elements like app header, app toolbar, book input decorator, and input tags, with an emphasis on understanding the dom structure before writing code for shadow dom, and suggestions for practicing on websites like the chrome download page and shadow dom practice website.', 'duration': 417.335, 'highlights': ['The process of navigating and inspecting elements within a shadow DOM is explained, including finding the host element, navigating through shadow DOM, and inspecting specific elements like app header, app toolbar, book input decorator, and input tags. Explaining the process of navigating and inspecting elements within a shadow DOM.', 'Emphasis is placed on understanding the DOM structure before writing code for shadow DOM, ensuring clarity on which elements are under shadow DOM and which are not. Emphasizing the importance of understanding the DOM structure before writing code for shadow DOM.', 'Suggestions are provided for practicing on websites with shadow DOM elements, such as the chrome download page and a shadow DOM practice website. Providing suggestions for practicing on websites with shadow DOM elements.']}], 'duration': 1176.819, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ17248991.jpg', 'highlights': ['Developers use Shadow DOM to encapsulate their HTML code and CSS components, preventing overrides.', 'Locating and inspecting Shadow DOM elements using Selenium locators requires using CSS selectors and JavaScript executor.', 'Key terminologies in Shadow DOM include shadow host, shadow tree, and shadow boundary.', 'The shadow root is crucial to inspect in the shadow DOM, and its identification involves recognizing its presence in the DOM structure and using selectors hub to determine if an element is in the shadow DOM. Additionally, limitations of XPath for such elements are highlighted.', 'Understanding the structure and elements within and outside the shadow root is essential before writing code for automation. This is demonstrated by differentiating between elements under the shadow root and those outside, and examining the hierarchical structure of elements.', 'The process of implementing shadow DOM involves a step-by-step traversal from the host element to the shadow root and subsequent elements. This includes utilizing JavaScript executor and practical inspection of the desired element, such as entering values into a search box.', 'Explaining the process of navigating and inspecting elements within a shadow DOM.', 'Emphasizing the importance of understanding the DOM structure before writing code for shadow DOM.', 'Providing suggestions for practicing on websites with shadow DOM elements.']}, {'end': 19530.214, 'segs': [{'end': 18652.6, 'src': 'embed', 'start': 18622.852, 'weight': 0, 'content': [{'end': 18626.634, 'text': 'to navigate to the url we use the drive driver.get command.', 'start': 18622.852, 'duration': 3.782}, {'end': 18629.516, 'text': 'right, so this is the part of the browser command.', 'start': 18626.634, 'duration': 2.882}, {'end': 18631.817, 'text': 'next we will maximize the window.', 'start': 18629.516, 'duration': 2.301}, {'end': 18634.478, 'text': 'the next we will verify the current url of the page.', 'start': 18631.817, 'duration': 2.661}, {'end': 18636.54, 'text': 'for this we will use the current.', 'start': 18634.478, 'duration': 2.062}, {'end': 18638.541, 'text': 'uh, get current url command.', 'start': 18636.54, 'duration': 2.001}, {'end': 18644.296, 'text': 'okay, through if statement, okay, then we have to verify the title of the page.', 'start': 18638.541, 'duration': 5.755}, {'end': 18648.778, 'text': 'now, to verify the title of the page, we will use the get title command.', 'start': 18644.296, 'duration': 4.482}, {'end': 18652.6, 'text': 'okay, and we will verify it through if statement.', 'start': 18648.778, 'duration': 3.822}], 'summary': 'Using selenium, we navigate to the url, maximize the window, verify the current url and title of the page.', 'duration': 29.748, 'max_score': 18622.852, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ18622852.jpg'}, {'end': 18777.968, 'src': 'embed', 'start': 18744.503, 'weight': 3, 'content': [{'end': 18752.569, 'text': 'The second method that you can do or you can navigate is I can assign the url to a string variable.', 'start': 18744.503, 'duration': 8.066}, {'end': 18761.937, 'text': "like I'll write string, I will name that variable as URL and I will place my URL in this variable.", 'start': 18752.569, 'duration': 9.368}, {'end': 18767.141, 'text': 'Next, I will write driver dot get URL.', 'start': 18762.797, 'duration': 4.344}, {'end': 18772.685, 'text': 'So, I can navigate to the URL through this way as well as this way.', 'start': 18769.122, 'duration': 3.563}, {'end': 18774.166, 'text': 'Both the ways it will work.', 'start': 18773.125, 'duration': 1.041}, {'end': 18777.968, 'text': "For example, let's see whether we can navigate or not.", 'start': 18774.206, 'duration': 3.762}], 'summary': 'Two methods for navigation: assigning url to string variable and using driver.get()', 'duration': 33.465, 'max_score': 18744.503, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ18744503.jpg'}, {'end': 19157.545, 'src': 'embed', 'start': 19083.982, 'weight': 1, 'content': [{'end': 19087.724, 'text': "That's the reason why the output is the URL is not verified.", 'start': 19083.982, 'duration': 3.742}, {'end': 19091.647, 'text': 'The next test case is verify the title of the page.', 'start': 19088.525, 'duration': 3.122}, {'end': 19094.549, 'text': 'So first we will find the title of the page.', 'start': 19092.287, 'duration': 2.262}, {'end': 19103.631, 'text': "So I'll write driver dot get title and I will store this in a string variable.", 'start': 19095.543, 'duration': 8.088}, {'end': 19110.939, 'text': 'I will write string title is equal to driver dot get title.', 'start': 19105.614, 'duration': 5.325}, {'end': 19113.161, 'text': 'Next I will print it.', 'start': 19112.1, 'duration': 1.061}, {'end': 19115.704, 'text': "So let's execute it.", 'start': 19114.503, 'duration': 1.201}, {'end': 19118.327, 'text': 'My Chrome browser is launched.', 'start': 19117.126, 'duration': 1.201}, {'end': 19126.801, 'text': 'so here it is.', 'start': 19126.141, 'duration': 0.66}, {'end': 19128.282, 'text': 'see, this is the URL of the page.', 'start': 19126.801, 'duration': 1.481}, {'end': 19133.126, 'text': 'the URL is verified and then here the title of the page is tools QA.', 'start': 19128.282, 'duration': 4.844}, {'end': 19134.707, 'text': 'this is the title of the page.', 'start': 19133.126, 'duration': 1.581}, {'end': 19136.868, 'text': 'now, how do you see the title of the pages?', 'start': 19134.707, 'duration': 2.161}, {'end': 19149.957, 'text': "so I'll just inspect and here in the head tab, here you can see, you can see title tools QA, title.", 'start': 19136.868, 'duration': 13.089}, {'end': 19151.138, 'text': 'this is the title of the page.', 'start': 19149.957, 'duration': 1.181}, {'end': 19157.545, 'text': 'this is the title of the page and the title that we got is the tools qa.', 'start': 19152.884, 'duration': 4.661}], 'summary': 'Automated test to verify url and title; title found: tools qa', 'duration': 73.563, 'max_score': 19083.982, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ19083982.jpg'}], 'start': 18427.031, 'title': 'Selenium browser commands and automated browser testing', 'summary': 'Covers essential selenium browser commands, including get title, quit, close, and managing the browser, with a focus on interview preparation and test case execution. it also covers automated browser testing, including url and title verification and interaction with web page elements using practical examples.', 'chapters': [{'end': 18576.535, 'start': 18427.031, 'title': 'Selenium browser commands', 'summary': 'Covers essential selenium browser commands including getting title, quitting, managing, and closing the browser, and the difference between close and quit methods, with a focus on preparing for interviews and test case execution.', 'duration': 149.504, 'highlights': ['The chapter covers essential Selenium browser commands including getting title, quitting, managing, and closing the browser. The tutorial focuses on understanding the basic operations of the web driver, such as closing the browser, getting the title, quitting, managing, and closing the browser.', 'The difference between close and quit methods is explained. The tutorial explains the difference between the close method and the quit method in Selenium, providing clarity on their distinct functionalities.', 'Preparation for interviews is emphasized, with a provided sheet containing commands, descriptions, syntax, parameters, and returns. The tutorial offers a prepared sheet including browser commands, navigational commands, web element commands, and their details, aiming to assist in interview preparation by addressing commonly asked questions and providing a quick recap for interviews.', 'Test cases are provided for execution and to cover the discussed commands. The tutorial offers test cases for execution, allowing learners to apply the covered commands practically and gain hands-on experience.']}, {'end': 18958.633, 'start': 18576.535, 'title': 'Selenium browser commands', 'summary': 'Covers commands like get title, get current url, get page source, close, and quit, and demonstrates practical examples of using these commands to open the chrome browser, navigate to a url, maximize the window, verify the current url and title of the page, print the page source, and close/quit the browser.', 'duration': 382.098, 'highlights': ['The chapter covers practical examples of using commands like get title, get current url, get page source, close, and quit to automate tasks such as opening the Chrome browser, navigating to a URL, maximizing the window, verifying the current URL and title of the page, and printing the page source. practical examples, commands covered, tasks automated', "Demonstrates opening the Chrome browser using 'system.set property' and 'web driver driver is equal to new chrome driver' commands, and navigating to a URL using the 'driver.get' command. opening Chrome browser, navigating to a URL", "Shows how to maximize the window using the 'driver.manage.window.maximize' command. maximizing the window", "Illustrates verifying the current URL of the page using the 'driver.get current URL' command and if statement. verifying current URL", "Explains how to verify the title of the page using the 'get title' command and if statement, and print the length of the title using the 'length' command. verifying title, printing length of the title", "Shows how to print the page source using the 'get page source' command, and print the length of the page source. printing page source, printing length of the page source", "Demonstrates the 'close' and 'quit' commands to close and quit the browser, and offers practical understanding of their differences. using close and quit commands, understanding differences practically"]}, {'end': 19157.545, 'start': 18959.033, 'title': 'Automated browser testing', 'summary': 'Covers the process of verifying the url and title of a web page using selenium webdriver, where the expected and actual urls are compared to determine the verification status, resulting in examples of both verified and unverified urls, and showcases the extraction and comparison of the web page title.', 'duration': 198.512, 'highlights': ['The process of verifying the URL and title of a web page using Selenium WebDriver The transcript covers the steps involved in verifying the URL and title of a web page using Selenium WebDriver.', 'Comparison of expected and actual URLs to determine verification status The chapter demonstrates the comparison of expected and actual URLs to determine whether the URL is verified or not.', 'Examples of both verified and unverified URLs The transcript provides examples of both verified and unverified URLs, showcasing the outcome of matching and mismatching expected and actual URLs.', 'Extraction and comparison of the web page title It showcases the extraction and comparison of the web page title using Selenium WebDriver, demonstrating the process of obtaining and verifying the title of the web page.']}, {'end': 19530.214, 'start': 19157.545, 'title': 'Webpage title verification and action execution', 'summary': 'Demonstrates how to verify and interact with the title, page source, and new tab of a webpage using selenium webdriver, including verifying the title, printing its length, displaying the page source, and clicking on a new tab.', 'duration': 372.669, 'highlights': ['Verifying the title of the page Demonstrates using if-else statement to verify the title by comparing expected and actual outputs.', 'Printing the length of the title of the page Shows using the length command to print the length of the title, which is seven in this case, and storing it in an integer variable.', 'Displaying the page source of the page Illustrates obtaining and printing the entire page source using driver.getPageSource and highlighting its length, which is not explicitly stated.', 'Clicking on a new tab on the webpage Explains the process of locating and clicking a new tab using driver.findElementByXPath and the click command.']}], 'duration': 1103.183, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ18427031.jpg', 'highlights': ['The tutorial offers a prepared sheet including browser commands, navigational commands, web element commands, and their details, aiming to assist in interview preparation by addressing commonly asked questions and providing a quick recap for interviews.', 'The chapter covers practical examples of using commands like get title, get current url, get page source, close, and quit to automate tasks such as opening the Chrome browser, navigating to a URL, maximizing the window, verifying the current URL and title of the page, and printing the page source.', 'The transcript covers the steps involved in verifying the URL and title of a web page using Selenium WebDriver.', 'Explains the process of locating and clicking a new tab using driver.findElementByXPath and the click command.']}, {'end': 21350.399, 'segs': [{'end': 19700.318, 'src': 'embed', 'start': 19671.23, 'weight': 0, 'content': [{'end': 19673.792, 'text': 'it will not close the child tab.', 'start': 19671.23, 'duration': 2.562}, {'end': 19680.334, 'text': 'okay, Whereas when I write driver.quick command, it will close the parent tab as well as the child tab.', 'start': 19673.792, 'duration': 6.542}, {'end': 19683.054, 'text': "So let's have a recap of what we have done till now.", 'start': 19680.814, 'duration': 2.24}, {'end': 19691.176, 'text': 'Now the first test case was to open the Chrome browser in which I have written the system.set property in which I have given the key and the value.', 'start': 19683.435, 'duration': 7.741}, {'end': 19697.297, 'text': 'The key is given that the webdriver.chrome.driver and the value is the Chrome driver executable file.', 'start': 19691.216, 'duration': 6.081}, {'end': 19700.318, 'text': 'Next, we have to navigate to the URL.', 'start': 19698.337, 'duration': 1.981}], 'summary': 'Using driver.quit vs driver.close in automated testing workflow', 'duration': 29.088, 'max_score': 19671.23, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ19671230.jpg'}, {'end': 19915.655, 'src': 'embed', 'start': 19890.836, 'weight': 3, 'content': [{'end': 19898.944, 'text': 'okay, now, to get this title, i have used the get title command, which retrieves the title of the web page.', 'start': 19890.836, 'duration': 8.108}, {'end': 19901.326, 'text': 'now it accepts nothing as a parameter here.', 'start': 19898.944, 'duration': 2.382}, {'end': 19902.868, 'text': 'can you see any parameters?', 'start': 19901.326, 'duration': 1.542}, {'end': 19903.248, 'text': 'no, right.', 'start': 19902.868, 'duration': 0.38}, {'end': 19906.531, 'text': 'so it accepts nothing as a parameter, but it returns a string value.', 'start': 19903.248, 'duration': 3.283}, {'end': 19908.632, 'text': 'Here you can see the value.', 'start': 19907.612, 'duration': 1.02}, {'end': 19910.193, 'text': 'The title of the page is this.', 'start': 19908.713, 'duration': 1.48}, {'end': 19912.214, 'text': 'This is the string value that it is returning.', 'start': 19910.313, 'duration': 1.901}, {'end': 19915.655, 'text': 'So to get the title of the page, I have written string title.', 'start': 19912.674, 'duration': 2.981}], 'summary': "Using 'get title' command retrieves the web page title, accepting no parameters, returning a string value.", 'duration': 24.819, 'max_score': 19890.836, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ19890836.jpg'}, {'end': 20231.716, 'src': 'embed', 'start': 20203.782, 'weight': 5, 'content': [{'end': 20208.626, 'text': 'also, we will understand the difference between the navigate.to command and the get command.', 'start': 20203.782, 'duration': 4.844}, {'end': 20211.768, 'text': 'in the previous tutorial i explained about the browser commands.', 'start': 20208.626, 'duration': 3.142}, {'end': 20213.67, 'text': 'you can check out the tutorial.', 'start': 20211.768, 'duration': 1.902}, {'end': 20215.411, 'text': "i'll give the link in the description box.", 'start': 20213.67, 'duration': 1.741}, {'end': 20218.113, 'text': 'we will understand what is the navigation commands today.', 'start': 20215.411, 'duration': 2.702}, {'end': 20221.934, 'text': 'so first let us understand what is navigation commands.', 'start': 20218.473, 'duration': 3.461}, {'end': 20226.235, 'text': 'now the webdriver provides some basic browser navigation commands.', 'start': 20221.934, 'duration': 4.301}, {'end': 20231.716, 'text': 'that allows the browser to move backward, forward or to refresh the browser.', 'start': 20226.235, 'duration': 5.481}], 'summary': 'Learn about the difference between navigate.to and get commands, and basic browser navigation commands provided by webdriver.', 'duration': 27.934, 'max_score': 20203.782, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ20203782.jpg'}, {'end': 20358.298, 'src': 'embed', 'start': 20329.278, 'weight': 1, 'content': [{'end': 20332.9, 'text': 'this is the first test case that we will implement today.', 'start': 20329.278, 'duration': 3.622}, {'end': 20335.621, 'text': 'so open your IntelliJ IDE now.', 'start': 20332.9, 'duration': 2.721}, {'end': 20337.422, 'text': 'under package com.selenium.', 'start': 20335.621, 'duration': 1.801}, {'end': 20339.904, 'text': 'I have already created a Java class.', 'start': 20337.422, 'duration': 2.482}, {'end': 20343.183, 'text': 'I have named it as selenium tutorials 11.', 'start': 20339.904, 'duration': 3.279}, {'end': 20346.506, 'text': 'so first is that we have to launch the chrome browser.', 'start': 20343.183, 'duration': 3.323}, {'end': 20349.109, 'text': 'the test cases says that we have to launch the chrome browser.', 'start': 20346.506, 'duration': 2.603}, {'end': 20351.892, 'text': 'for that we have to write system.set property,', 'start': 20349.109, 'duration': 2.783}, {'end': 20358.298, 'text': 'in which the key is the webdriver.chrome.driver and the value is the executable file of the chrome driver.', 'start': 20351.892, 'duration': 6.406}], 'summary': 'Implementing a test case to launch chrome browser using selenium in intellij ide.', 'duration': 29.02, 'max_score': 20329.278, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ20329278.jpg'}], 'start': 19530.654, 'title': 'Selenium webdriver commands and test automation', 'summary': 'Covers the basics of using selenium webdriver, browser commands, navigational commands, test case implementation, and test automation, demonstrating practical implementations and showcasing the usage of various webdriver commands for test automation.', 'chapters': [{'end': 19804.165, 'start': 19530.654, 'title': 'Selenium webdriver basics', 'summary': 'Covers the basics of using selenium webdriver, including opening a chrome browser, navigating to a url, maximizing the window, and finding the current url with methods such as driver.get, driver.manage.window.maximize, and get current url.', 'duration': 273.511, 'highlights': ['Using driver.quit closes both the parent and child tabs, while driver.close only closes the parent tab. The driver.quit command closes both the parent and child tabs, as opposed to the driver.close command, which only closes the parent tab.', 'The driver.get command opens a specified URL in the browser and returns nothing. The driver.get command opens a specified URL in the browser and returns nothing, accepting a string as a parameter.', 'The driver.manage.window.maximize method maximizes the window. The driver.manage.window.maximize method is used to maximize the window.', 'The get current URL method fetches the string representing the current URL opened in the browser. The get current URL method fetches the string representing the current URL opened in the browser, accepting nothing as a parameter and returning a string value.']}, {'end': 20059.502, 'start': 19805.444, 'title': 'Web browser commands overview', 'summary': 'Covers the usage of browser commands such as getcurrenturl, gettitle, and getpagesource in selenium, demonstrating how to retrieve and verify the current url, title, and length of the page source, with a focus on practical implementations.', 'duration': 254.058, 'highlights': ['Demonstrating the usage of getCurrentURL to fetch the current URL and verify it, with practical implementation The speaker explains how to use the getCurrentURL method to fetch the string representing the current URL in the browser, followed by verifying the URL using the if command and the equals method to match the expected and actual outputs.', 'Explaining the usage of getTitle to retrieve the title of the web page and verify it, including practical demonstration The tutorial covers the implementation of the getTitle command to retrieve the title of the web page, utilizing the equals method to compare expected and actual outputs, and includes a demonstration of printing the length of the title.', 'Illustrating the application of getPageSource to retrieve the source code of the page and obtain its length The speaker demonstrates the use of the getPageSource command to retrieve the source code of the page and explains the process of determining the length of the page source, showcasing its practical implementation.']}, {'end': 20306.742, 'start': 20059.523, 'title': 'Browser commands and navigational commands', 'summary': 'Discussed the difference between the close and the quit commands in selenium webdriver, showcasing how driver.quit terminates all active instances while driver.close terminates the focused browser. it also highlighted the navigational commands in selenium webdriver and the implementation of two test cases.', 'duration': 247.219, 'highlights': ['The chapter explained the difference between driver.quit and driver.close commands, demonstrating that driver.quit closes all active web driver instances while driver.close terminates the focused browser. The chapter provided a clear distinction between driver.quit and driver.close, emphasizing that driver.quit closes all active web driver instances, while driver.close terminates the focused browser.', 'It introduced the navigational commands in Selenium WebDriver, including moving backward, forward, and refreshing the browser using commands like driver.navigate.back(), driver.navigate.forward(), and driver.navigate.refresh(). The chapter introduced navigational commands in Selenium WebDriver, such as driver.navigate.back(), driver.navigate.forward(), and driver.navigate.refresh(), enabling browser navigation by moving backward, forward, and refreshing the page.', 'The implementation of two test cases was mentioned, indicating the practical application of the discussed concepts in Selenium WebDriver. The chapter referenced the implementation of two test cases, showcasing the practical application of the discussed concepts in Selenium WebDriver.']}, {'end': 20705.018, 'start': 20306.742, 'title': 'Selenium test case implementation', 'summary': 'Covers the implementation of a selenium test case to launch the chrome browser, navigate to amazon and ebay, perform actions such as maximizing the window, entering a value in the search box, refreshing the page, navigating back to amazon, and navigating forward, showcasing the usage of various webdriver commands.', 'duration': 398.276, 'highlights': ['The chapter covers the implementation of a Selenium test case to launch the Chrome browser, navigate to Amazon and eBay, perform actions such as maximizing the window, entering a value in the search box, refreshing the page, navigating back to Amazon, and navigating forward, showcasing the usage of various WebDriver commands. The chapter provides a comprehensive overview of the Selenium test case implementation, emphasizing the use of WebDriver commands to perform specific actions such as window maximization, page navigation, and user input.', 'The driver.get command is used to open the Amazon website. The driver.get command is utilized to navigate to the Amazon website, showcasing the initial step of the test case implementation.', 'The driver.navigate.to method is employed to navigate to the eBay website. The driver.navigate.to method is utilized to navigate to the eBay website, demonstrating the subsequent step in the test case flow.', 'The driver.manage.window.maximize command is used to maximize the browser window. The driver.manage.window.maximize command is employed to maximize the browser window, showcasing a specific action in the test case execution.', 'The driver.findElementByXPath and sendKeys commands are used to enter a value in the search box. The usage of driver.findElementByXPath and sendKeys commands for entering a value in the search box is highlighted, presenting a key user input action in the test case.']}, {'end': 21001.862, 'start': 20706.556, 'title': 'Selenium webdriver test automation', 'summary': 'Demonstrates the automation of test cases using selenium webdriver, including navigating to different web pages, entering text values, refreshing the browser, and using relative xpaths for element inspection.', 'duration': 295.306, 'highlights': ['The test case involves launching the Chrome browser, navigating to different web pages, and using commands such as thread.sleep and driver.close. The chapter demonstrates the automation of test cases using Selenium WebDriver, including navigating to different web pages, entering text values, refreshing the browser, and using relative xpaths for element inspection.', 'The navigate.to method is used to load a new web page in the current browser window, accepting a string as a parameter, and returning nothing. The navigate.to method is used to load a new web page in the current browser window, accepting a string as a parameter, and returning nothing.', 'The refresh method simulates clicking on the refresh button on the browser and accepts nothing as a parameter, returning nothing. The refresh method simulates clicking on the refresh button on the browser and accepts nothing as a parameter, returning nothing.', "The navigate back command is used to return to the previous page in the browser's history, accepting nothing as a parameter and returning nothing. The navigate back command is used to return to the previous page in the browser's history, accepting nothing as a parameter and returning nothing.", 'The navigate forward method is used to move forward to the next page in the current browser window, accepting nothing as a parameter and returning nothing. The navigate forward method is used to move forward to the next page in the current browser window, accepting nothing as a parameter and returning nothing.']}, {'end': 21350.399, 'start': 21001.862, 'title': 'Selenium webdriver navigation commands', 'summary': 'Covers navigating commands in selenium webdriver, including navigateto, refresh, back, forward, driver.navigate.to vs driver.get, with examples and differences, and concludes with a resource-sharing announcement.', 'duration': 348.537, 'highlights': ['The chapter covers navigating commands like navigateTo, refresh, back, forward, driver.navigate.to vs driver.get, with examples and differences, and concludes with a resource-sharing announcement.', 'The navigateTo method loads a new web page in the current browser window and accepts a string as a parameter and returns nothing.', "The refresh command works the same as the refresh button of any browser and doesn't accept any parameter and returns nothing.", "The back command is used to return to the previous page in the browser's history and doesn't accept any parameter and returns nothing.", "The forward command is used to move to the forward page and doesn't accept any parameter and returns nothing.", 'The driver.navigate.to command is responsible for redirecting the page and returning immediately, while driver.get is responsible for loading the page and waiting until the page has finished loading.', 'The driver.navigate.to command tracks the browser history and can perform back and forth in the browser, whereas the driver.get command does not track the history of the browser.', 'The resource-sharing announcement includes providing a sheet with commands, descriptions, syntax, parameters, and returns, along with a link to download the PDF format and the drive for interview revision.']}], 'duration': 1819.745, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ19530654.jpg', 'highlights': ['The chapter provides a comprehensive overview of the Selenium test case implementation, emphasizing the use of WebDriver commands.', 'The chapter introduced navigational commands in Selenium WebDriver, such as driver.navigate.back(), driver.navigate.forward(), and driver.navigate.refresh().', 'The chapter explained the difference between driver.quit and driver.close commands, demonstrating that driver.quit closes all active web driver instances while driver.close terminates the focused browser.', 'The driver.get command opens a specified URL in the browser and returns nothing, accepting a string as a parameter.', 'The driver.manage.window.maximize method maximizes the window.', 'The test case involves launching the Chrome browser, navigating to different web pages, and using commands such as thread.sleep and driver.close.']}, {'end': 23158.023, 'segs': [{'end': 21794.605, 'src': 'embed', 'start': 21769.169, 'weight': 6, 'content': [{'end': 21774.654, 'text': 'so here comes the difference between the click command and the submit command, these two commands.', 'start': 21769.169, 'duration': 5.485}, {'end': 21776.877, 'text': 'for that i have an example.', 'start': 21774.654, 'duration': 2.223}, {'end': 21782.662, 'text': "let's understand that with the help of the example first and then we'll perform the test case.", 'start': 21776.877, 'duration': 5.785}, {'end': 21788.043, 'text': 'to understand the difference between the summit and the click, this is the page that i have made.', 'start': 21782.662, 'duration': 5.381}, {'end': 21790.083, 'text': 'there are two divisions present over here.', 'start': 21788.043, 'duration': 2.04}, {'end': 21794.605, 'text': 'one is the outside form tag and the second division is the inside form tag.', 'start': 21790.083, 'duration': 4.522}], 'summary': 'Explaining the difference between click and submit commands for web testing.', 'duration': 25.436, 'max_score': 21769.169, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ21769169.jpg'}, {'end': 22342.786, 'src': 'embed', 'start': 22303.081, 'weight': 4, 'content': [{'end': 22305.742, 'text': 'You heard there is a text present, right? Forget your password.', 'start': 22303.081, 'duration': 2.661}, {'end': 22309.264, 'text': 'So it will print forget your password through getText method.', 'start': 22305.762, 'duration': 3.502}, {'end': 22313.786, 'text': "So what I'll do is I'll write driver.findElement.", 'start': 22310.064, 'duration': 3.722}, {'end': 22333.244, 'text': "by dot link text and the text that is present over here is this so I'll simply copy this and I'll write get text here,", 'start': 22315.18, 'duration': 18.064}, {'end': 22339.045, 'text': "I'll give some string value and I will print it.", 'start': 22333.244, 'duration': 5.801}, {'end': 22341.726, 'text': 'let me execute this.', 'start': 22339.045, 'duration': 2.681}, {'end': 22342.786, 'text': 'my chrome browse is launched.', 'start': 22341.726, 'duration': 1.06}], 'summary': "Using gettext method to retrieve 'forget your password' text from a web page.", 'duration': 39.705, 'max_score': 22303.081, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ22303081.jpg'}, {'end': 22503.798, 'src': 'embed', 'start': 22477.017, 'weight': 0, 'content': [{'end': 22480.639, 'text': 'now, remember, the get size method is different and the size method is different.', 'start': 22477.017, 'duration': 3.622}, {'end': 22481.659, 'text': 'they both are different.', 'start': 22480.639, 'duration': 1.02}, {'end': 22488.203, 'text': 'okay, now, uh, this get size method it accepts nothing as a parameter, but it returns the dimension object.', 'start': 22481.659, 'duration': 6.544}, {'end': 22490.105, 'text': "so similarly i'll write the code for this.", 'start': 22488.203, 'duration': 1.902}, {'end': 22503.798, 'text': "I'll write driver dot, find element by dot ID and I will store this in a web element type of variable.", 'start': 22491.252, 'duration': 12.546}], 'summary': 'The get size method returns the dimension object and accepts no parameters.', 'duration': 26.781, 'max_score': 22477.017, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ22477017.jpg'}, {'end': 22680.743, 'src': 'embed', 'start': 22636.936, 'weight': 1, 'content': [{'end': 22637.777, 'text': 'That is the input.', 'start': 22636.936, 'duration': 0.841}, {'end': 22643.59, 'text': 'So the next test case is that we have to print the number of links present on the page.', 'start': 22638.649, 'duration': 4.941}, {'end': 22649.052, 'text': 'Now I have given this test case to understand the difference between the find element and the find elements.', 'start': 22644.091, 'duration': 4.961}, {'end': 22656.434, 'text': "So what I'll do is I'll write driver dot find elements by dot tag name.", 'start': 22649.912, 'duration': 6.522}, {'end': 22662.836, 'text': "I'll use the tag name and to find the links on the page, the tag that we use is the A tag, right? The anchor tag.", 'start': 22656.654, 'duration': 6.182}, {'end': 22663.496, 'text': "So I'll write A.", 'start': 22662.876, 'duration': 0.62}, {'end': 22667.758, 'text': 'and I will store this in a list.', 'start': 22665.797, 'duration': 1.961}, {'end': 22673.08, 'text': "I'll use the web element because I have to inspect the web element over here.", 'start': 22668.678, 'duration': 4.402}, {'end': 22680.743, 'text': 'The different types of web element, that is, I want to know the list of links that is present over here, right?', 'start': 22674.48, 'duration': 6.263}], 'summary': "Test case to find and print the number of links on the page using driver.findelements('a').", 'duration': 43.807, 'max_score': 22636.936, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ22636936.jpg'}, {'end': 23158.023, 'src': 'embed', 'start': 23135.521, 'weight': 7, 'content': [{'end': 23143.267, 'text': 'whereas in case of find elements it will return a list of multiple matching web elements and it throws no exception.', 'start': 23135.521, 'duration': 7.746}, {'end': 23148.83, 'text': 'it is just that it returns an empty list, whereas in find element, it throws no such element.', 'start': 23143.267, 'duration': 5.563}, {'end': 23156.54, 'text': 'exception if the element is not found, detects a unique web element, whereas the driver.findElements it returns the collection of matching elements.', 'start': 23148.83, 'duration': 7.71}, {'end': 23158.023, 'text': 'This is the example.', 'start': 23157.101, 'duration': 0.922}], 'summary': 'Comparison between findelement and findelements in web automation', 'duration': 22.502, 'max_score': 23135.521, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ23135521.jpg'}], 'start': 21350.399, 'title': 'Selenium web element commands', 'summary': 'Covers understanding web element commands, different types of commands, including syntax, implementation, differences between find elements and find element, is displayed, is enabled, is selected methods, click, and submit methods, and usage of selenium test methods, with examples and output values.', 'chapters': [{'end': 21455.125, 'start': 21350.399, 'title': 'Understanding web element commands', 'summary': 'Covers understanding web element commands, including different types of commands with syntax, implementation, and differences between find elements and find element, is displayed, is enabled, is selected methods, click, and submit methods. it also includes a document with commands, descriptions, syntax, parameters, and returns available in pdf format.', 'duration': 104.726, 'highlights': ['The chapter covers understanding web element commands, including different types of commands with syntax, implementation, and differences between find elements and find element, is displayed, is enabled, is selected methods, click, and submit methods. This is the main highlight summarizing the key points of the chapter.', 'The document includes commands, descriptions, syntax, parameters, and returns available in PDF format. The availability of a document with comprehensive information in PDF format is highlighted.', 'The tutorial explains what web element commands are and how they are used to interact with web elements using various locators like ID, name, class, and XPath. This provides an overview of the tutorial content and its focus on web element commands and locators.']}, {'end': 21769.169, 'start': 21455.125, 'title': 'Selenium web element commands', 'summary': 'Covers the implementation of selenium web element commands including launching the chrome browser, opening a url, maximizing the page, sending username and password, and clearing the entered credentials.', 'duration': 314.044, 'highlights': ['The chapter covers the implementation of Selenium web element commands including launching the chrome browser, opening a URL, maximizing the page, sending username and password, and clearing the entered credentials.', 'The first test case involves launching the chrome browser using system.set property and webdriver driver commands.', 'The next test case includes opening a specific URL and maximizing the page using driver.get and driver.manage.window.maximize commands.', 'The process of entering the username and password involves using the find element by id and send keys commands to input the credentials.', 'The clear command is used to clear the entered username and password in the subsequent test case.']}, {'end': 22255.932, 'start': 21769.169, 'title': 'Difference between click and submit methods', 'summary': 'Explains the difference between the click and submit methods, demonstrating through an example how the click method works for both submit and button elements inside and outside form tags, while the submit method only works for buttons inside the form tag, with no restrictions for the click method but limitations for the submit method.', 'duration': 486.763, 'highlights': ['The click method works for both submit and button elements inside and outside form tags. The click method can be used to click on any button, whether it is of element type button or type submit, inside or outside the form tag.', 'The submit method only works for buttons inside the form tag, with limitations for elements outside the form tag. The submit method is applicable only for buttons inside the form tag, showing restrictions for elements outside the form tag and no restrictions for elements inside the form tag.', 'An example demonstrates the difference between the click and submit methods in action. The chapter provides an example illustrating how the click method works for both submit and button elements inside and outside form tags, while the submit method only works for buttons inside the form tag.']}, {'end': 22752.504, 'start': 22255.932, 'title': 'Selenium test methods', 'summary': 'Covers the usage of selenium test methods including gettext, getlocation, getsize, gettagname, and findelements to find visible inner text, locate the element on the page, fetch the width and height of the element, retrieve the tag name of the element, and find the number of links present on the page, with an example of finding six links present.', 'duration': 496.572, 'highlights': ["The getText method fetches the visible inner text of the element, retrieving 'forget your password' as an example. The getText method retrieves the visible inner text of the element, providing the example of fetching 'forget your password' as the visible text.", 'The findElements method is used to find the number of links present on the page, finding six links present. The findElements method is used to find the number of links present on the page, revealing the presence of six links.', 'The getSize method fetches the width and the height of the element, illustrating the height and width of the username element. The getSize method fetches the width and height of the element, exemplifying the dimensions of the username element.', 'The getTagName method retrieves the tag name of the element, demonstrating the retrieval of the input tag name. The getTagName method retrieves the tag name of the element, showcasing the retrieval of the input tag name.', "The getLocation method locates the location of the element on the page, showing the x and y coordinates of the 'forget your password' text. The getLocation method locates the location of the element on the page, displaying the x and y coordinates of the 'forget your password' text."]}, {'end': 23158.023, 'start': 22752.504, 'title': 'Difference in web element commands', 'summary': 'Explains the difference between findelement and findelements, and demonstrates the usage of isdisplayed, isenabled, and isselected methods to check the visibility and status of web elements, showing examples and output values.', 'duration': 405.519, 'highlights': ['The chapter explains the difference between findElement and findElements, and demonstrates the usage of isDisplayed, isEnabled, and isSelected methods It covers the main difference between findElement and findElements and highlights the usage of isDisplayed, isEnabled, and isSelected methods.', 'The isDisplayed method determines if an element is currently displayed or not, returning a boolean value. It showcases the usage of isDisplayed method to determine the visibility of an element, returning a boolean value.', 'The isEnabled method determines if the element is currently enabled or not, returning a boolean value. It demonstrates the usage of isEnabled method to determine the status of an element, returning a boolean value.', 'The isSelected method determines whether the element is selected or not, returning a boolean value. It explains the usage of isSelected method to check if an element is selected, returning a boolean value.']}], 'duration': 1807.624, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ21350399.jpg', 'highlights': ['The chapter covers understanding web element commands, including different types of commands with syntax, implementation, and differences between find elements and find element, is displayed, is enabled, is selected methods, click, and submit methods.', 'The document includes commands, descriptions, syntax, parameters, and returns available in PDF format.', 'The tutorial explains what web element commands are and how they are used to interact with web elements using various locators like ID, name, class, and XPath.', 'The chapter covers the implementation of Selenium web element commands including launching the chrome browser, opening a URL, maximizing the page, sending username and password, and clearing the entered credentials.', 'The click method works for both submit and button elements inside and outside form tags.', 'The submit method only works for buttons inside the form tag, with limitations for elements outside the form tag.', "The getText method fetches the visible inner text of the element, retrieving 'forget your password' as an example.", 'The findElements method is used to find the number of links present on the page, finding six links present.', 'The chapter explains the difference between findElement and findElements, and demonstrates the usage of isDisplayed, isEnabled, and isSelected methods.']}, {'end': 24715.062, 'segs': [{'end': 23479.335, 'src': 'embed', 'start': 23453.445, 'weight': 4, 'content': [{'end': 23459.567, 'text': 'the get window handles is used for retrieving the window ids of multiple open windows,', 'start': 23453.445, 'duration': 6.122}, {'end': 23465.11, 'text': 'and get window handle is used for retrieving the window id of the current focused window, for example.', 'start': 23459.567, 'duration': 5.543}, {'end': 23473.733, 'text': 'now the get window handles will retrieve the window id of this one, as well as this child window and this child window.', 'start': 23465.11, 'duration': 8.623}, {'end': 23479.335, 'text': 'okay, whereas the get window handles will retrieve only the parent window handle value.', 'start': 23473.733, 'duration': 5.602}], 'summary': 'Get window handles retrieves window ids of multiple open windows and get window handle retrieves window id of current focused window.', 'duration': 25.89, 'max_score': 23453.445, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ23453445.jpg'}, {'end': 23527.452, 'src': 'embed', 'start': 23497.729, 'weight': 0, 'content': [{'end': 23500.551, 'text': 'that will be driver dot switch to dot window.', 'start': 23497.729, 'duration': 2.822}, {'end': 23504.654, 'text': "next, uh, how we're going to implement this is we're going to execute three test cases today.", 'start': 23500.551, 'duration': 4.103}, {'end': 23510.419, 'text': 'The first test case will teach that how to print the value, how to print the handle values,', 'start': 23505.836, 'duration': 4.583}, {'end': 23513.822, 'text': 'and we will learn the difference between the getWindowHandle and getWindowHandles.', 'start': 23510.419, 'duration': 3.403}, {'end': 23519.686, 'text': 'The next set of test case will teach us that how to switch and navigate to the other sides also.', 'start': 23514.562, 'duration': 5.124}, {'end': 23527.452, 'text': 'And the third test case, we will know how to close the browser like the parent window we will close and then we will close the child window.', 'start': 23520.267, 'duration': 7.185}], 'summary': 'Implementing 3 test cases for driver switch and window handling.', 'duration': 29.723, 'max_score': 23497.729, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ23497729.jpg'}, {'end': 23932.982, 'src': 'heatmap', 'start': 23639.831, 'weight': 0.734, 'content': [{'end': 23651.804, 'text': "so i'll write for int i is equal to one, i less than or equal to three, and i will increment it.", 'start': 23639.831, 'duration': 11.973}, {'end': 23661.608, 'text': 'next i will write driver dot, find element by dot, x path, and i will place the x path over here.', 'start': 23651.804, 'duration': 9.804}, {'end': 23670.384, 'text': 'and what operation do I want to perform is the click operation, which is one of the web element command.', 'start': 23665.04, 'duration': 5.344}, {'end': 23673.065, 'text': 'so over here I have clicked three times.', 'start': 23670.384, 'duration': 2.681}, {'end': 23678.509, 'text': 'now. let me give some time so that we can see the execution properly now.', 'start': 23673.065, 'duration': 5.444}, {'end': 23680.27, 'text': "let's execute this now.", 'start': 23678.509, 'duration': 1.761}, {'end': 23688.595, 'text': "my chrome browser is launched, it's navigated, it's maximized, the window is opened.", 'start': 23680.27, 'duration': 8.325}, {'end': 23692.598, 'text': 'this is the next new window and this is the next one.', 'start': 23688.595, 'duration': 4.003}, {'end': 23693.238, 'text': 'here you can see.', 'start': 23692.598, 'duration': 0.64}, {'end': 23699.277, 'text': 'We have three windows over here.', 'start': 23694.252, 'duration': 5.025}, {'end': 23701.839, 'text': 'Okay This is the child window one.', 'start': 23700.198, 'duration': 1.641}, {'end': 23702.62, 'text': 'This is child window two.', 'start': 23701.859, 'duration': 0.761}, {'end': 23703.521, 'text': 'This is child window three.', 'start': 23702.64, 'duration': 0.881}, {'end': 23704.682, 'text': 'And this is the parent window.', 'start': 23703.561, 'duration': 1.121}, {'end': 23706.784, 'text': "So I'll just close this.", 'start': 23705.643, 'duration': 1.141}, {'end': 23717.591, 'text': 'Now the next test case says that we have to print the window handles.', 'start': 23710.288, 'duration': 7.303}, {'end': 23718.392, 'text': 'we have to print all.', 'start': 23717.591, 'duration': 0.801}, {'end': 23724.5, 'text': 'the window has a handle, so so I will write over here driver dot.', 'start': 23718.392, 'duration': 6.108}, {'end': 23728.165, 'text': 'get window handles now.', 'start': 23724.5, 'duration': 3.665}, {'end': 23731.93, 'text': 'this get window handles returns set.', 'start': 23728.165, 'duration': 3.765}, {'end': 23737.183, 'text': 'so this get window handles returns.', 'start': 23734.582, 'duration': 2.601}, {'end': 23738.983, 'text': 'the set of string type.', 'start': 23737.183, 'duration': 1.8}, {'end': 23740.423, 'text': 'and why set?', 'start': 23738.983, 'duration': 1.44}, {'end': 23742.744, 'text': 'because the get window handles are unique in nature.', 'start': 23740.423, 'duration': 2.321}, {'end': 23747.825, 'text': "so that's why it's set and i have named the variable window handles and is equal to driver dot.", 'start': 23742.744, 'duration': 5.081}, {'end': 23751.246, 'text': 'get window handles now, because i want to print all of them.', 'start': 23747.825, 'duration': 3.421}, {'end': 23753.886, 'text': "what i'm going to do is i'm going to use the for loop.", 'start': 23751.246, 'duration': 2.64}, {'end': 23757.267, 'text': "so i'll write for and over here because it's of string type.", 'start': 23753.886, 'duration': 3.381}, {'end': 23761.568, 'text': "so i'll write string and i'll name it as handle.", 'start': 23757.267, 'duration': 4.301}, {'end': 23771.963, 'text': "Next, the values from which it's going to store in handle is from the windows handles and here I will print it.", 'start': 23763.419, 'duration': 8.544}, {'end': 23774.144, 'text': "And now let's execute this.", 'start': 23772.843, 'duration': 1.301}, {'end': 23777.785, 'text': 'So my Chrome browser is launched.', 'start': 23776.605, 'duration': 1.18}, {'end': 23780.226, 'text': "It's navigated.", 'start': 23779.246, 'duration': 0.98}, {'end': 23782.847, 'text': "It's maximized.", 'start': 23780.246, 'duration': 2.601}, {'end': 23784.528, 'text': 'The child window is opened.', 'start': 23783.487, 'duration': 1.041}, {'end': 23787.329, 'text': 'The second child window is clicked.', 'start': 23786.128, 'duration': 1.201}, {'end': 23789.65, 'text': 'The third child window.', 'start': 23788.469, 'duration': 1.181}, {'end': 23797.494, 'text': "now let's see their values.", 'start': 23792.893, 'duration': 4.601}, {'end': 23799.674, 'text': 'here it is the parent window handle.', 'start': 23797.494, 'duration': 2.18}, {'end': 23802.455, 'text': 'is this is the parent window handle?', 'start': 23799.674, 'duration': 2.781}, {'end': 23807.316, 'text': 'this is these are the child window handles and the parent window handles.', 'start': 23802.455, 'duration': 4.861}, {'end': 23811.777, 'text': 'so here you can see there is a difference between get window handle and get window handles.', 'start': 23807.316, 'duration': 4.461}, {'end': 23816.317, 'text': 'the get window handle it returns the window handle of the currently focused window or tap.', 'start': 23811.777, 'duration': 4.54}, {'end': 23825.184, 'text': 'here our currently focused window tap is the parent window, Whereas the get window handles returns all the windows that is handled or launched,', 'start': 23816.317, 'duration': 8.867}, {'end': 23826.806, 'text': 'including the parent and the child.', 'start': 23825.184, 'duration': 1.622}, {'end': 23830.73, 'text': "So that's why there are four window handles over here including the parent and the child.", 'start': 23827.467, 'duration': 3.263}, {'end': 23833.133, 'text': 'There is a parent window as well as a child window in this.', 'start': 23830.75, 'duration': 2.383}, {'end': 23836.777, 'text': 'Okay Which are all dynamic in nature.', 'start': 23833.393, 'duration': 3.384}, {'end': 23838.679, 'text': 'It is having all unique values.', 'start': 23836.977, 'duration': 1.702}, {'end': 23845.237, 'text': 'Okay Now, this is the basic difference between the get window handle and get window handles.', 'start': 23838.799, 'duration': 6.438}, {'end': 23850.938, 'text': 'Our next test case is open the Chrome browser, navigate to the URL, maximize.', 'start': 23846.017, 'duration': 4.921}, {'end': 23854.239, 'text': 'We have printed the parent window handle.', 'start': 23850.978, 'duration': 3.261}, {'end': 23856.679, 'text': 'Also, we have clicked the new window button for three times.', 'start': 23854.319, 'duration': 2.36}, {'end': 23860.72, 'text': 'Then we have to print all the window handles and then we have to switch to windows.', 'start': 23857.339, 'duration': 3.381}, {'end': 23866.681, 'text': 'Now, here comes the switching command that is the driver.switchTo.window command.', 'start': 23861.94, 'duration': 4.741}, {'end': 23877.724, 'text': "To switch to windows here i will write so here in the for loop itself, first i'm printing the window handles and then i'm switching.", 'start': 23867.842, 'duration': 9.882}, {'end': 23882.766, 'text': "so first i will print to which window it is and then i'll write driver dot.", 'start': 23877.724, 'duration': 5.042}, {'end': 23887.187, 'text': 'switch to dot window and inside the window i will write handle.', 'start': 23882.766, 'duration': 4.421}, {'end': 23889.968, 'text': 'i have to navigate to google.', 'start': 23887.187, 'duration': 2.781}, {'end': 23890.649, 'text': "so what i'll do?", 'start': 23889.968, 'duration': 0.681}, {'end': 23891.309, 'text': 'that for that.', 'start': 23890.649, 'duration': 0.66}, {'end': 23897.145, 'text': 'basically it will switch and then it will navigate to the google.', 'start': 23893.584, 'duration': 3.561}, {'end': 23908.329, 'text': 'so here i will write driver dot get and i will paste the google url over here and i will maximize it.', 'start': 23897.145, 'duration': 11.184}, {'end': 23910.049, 'text': 'driver dot.', 'start': 23908.329, 'duration': 1.72}, {'end': 23910.87, 'text': 'manage dot.', 'start': 23910.049, 'duration': 0.821}, {'end': 23912.31, 'text': 'window dot.', 'start': 23910.87, 'duration': 1.44}, {'end': 23916.331, 'text': "maximize. so let's give the time limit over here.", 'start': 23912.31, 'duration': 4.021}, {'end': 23919.896, 'text': "i'll write set dot sleep and I'll specify some time.", 'start': 23916.331, 'duration': 3.565}, {'end': 23924.998, 'text': "here I'll write driver.quit, so that the browsers are closed.", 'start': 23919.896, 'duration': 5.102}, {'end': 23932.982, 'text': "my chrome browser is launched, it's navigated, it's maximized, the child window is opened.", 'start': 23924.998, 'duration': 7.984}], 'summary': 'Automated test script opens, navigates, maximizes windows, and prints window handles, demonstrating browser interaction and commands.', 'duration': 293.151, 'max_score': 23639.831, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ23639831.jpg'}, {'end': 24027.621, 'src': 'embed', 'start': 23998.351, 'weight': 2, 'content': [{'end': 24005.393, 'text': "first i'll use driver dot switch to window and here i will write the parent window.", 'start': 23998.351, 'duration': 7.042}, {'end': 24008.034, 'text': "i want to close the parent window first, so i'll switch to parent window.", 'start': 24005.393, 'duration': 2.641}, {'end': 24014.436, 'text': 'first i will write driver dot close.', 'start': 24008.034, 'duration': 6.402}, {'end': 24023.396, 'text': "so while switching, let's write thread dot sleep and I will give some time over here.", 'start': 24014.436, 'duration': 8.96}, {'end': 24024.477, 'text': 'okay, the first is right.', 'start': 24023.396, 'duration': 1.081}, {'end': 24027.621, 'text': 'we will switch to the parent window and then we will close it.', 'start': 24024.477, 'duration': 3.144}], 'summary': 'Using selenium, close parent window after switching and adding a delay.', 'duration': 29.27, 'max_score': 23998.351, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ23998351.jpg'}, {'end': 24113.892, 'src': 'embed', 'start': 24086.078, 'weight': 3, 'content': [{'end': 24092.561, 'text': "here also i'll write thread dot sleep and i will give some time.", 'start': 24086.078, 'duration': 6.483}, {'end': 24096.783, 'text': "okay, so now let's execute this.", 'start': 24092.561, 'duration': 4.222}, {'end': 24105.427, 'text': "my chrome browser is launched, it's navigated, it's maximized and then the child window is opened.", 'start': 24096.783, 'duration': 8.644}, {'end': 24111.11, 'text': 'the next child window is open and the third child window is open.', 'start': 24105.427, 'duration': 5.683}, {'end': 24113.892, 'text': 'now the parent will will be navigating to google.com.', 'start': 24111.11, 'duration': 2.782}], 'summary': 'Automated testing script launches chrome browser, opens multiple child windows, and navigates to google.com.', 'duration': 27.814, 'max_score': 24086.078, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ24086078.jpg'}, {'end': 24653.808, 'src': 'embed', 'start': 24631.895, 'weight': 1, 'content': [{'end': 24640.019, 'text': "so i have already written a code for this in which first we're opening the Chrome browser, I'm navigating to it and then I'm clicking on Facebook,", 'start': 24631.895, 'duration': 8.124}, {'end': 24643.721, 'text': "I'm clicking on Flipkart, I'm clicking on Snapdeal, I'm clicking on Google.", 'start': 24640.019, 'duration': 3.702}, {'end': 24649.805, 'text': "These are the sites that I'm clicking on and then I'm trying to find the get window handles and I'm printing it with the title.", 'start': 24643.761, 'duration': 6.044}, {'end': 24653.808, 'text': "So let's see which handle prints first.", 'start': 24649.845, 'duration': 3.963}], 'summary': 'Code opens chrome, navigates to sites, finds window handles, and prints titles.', 'duration': 21.913, 'max_score': 24631.895, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ24631895.jpg'}], 'start': 23158.063, 'title': 'Handling windows in selenium', 'summary': 'Covers essential concepts and practical implementation of handling windows in selenium webdriver, including window handles, methods for handling window handles, automation of window handling, and key interview questions, with a focus on switching between windows and differences between getwindowhandle and getwindowhandles.', 'chapters': [{'end': 23249.68, 'start': 23158.063, 'title': 'Difference between isdisplayed, isenabled and isselected', 'summary': 'Covers the difference between isdisplayed, isenabled, and isselected methods, highlighting their applications and return values for web elements, with examples of radio buttons and checkboxes.', 'duration': 91.617, 'highlights': ['The isSelected method is only applicable for checkbox, drop-down menus, and radio buttons, returning true if selected and false if not.', 'The isEnabled method confirms whether an element is enabled or disabled, applicable to all web objects and returning true or false.', 'The isDisplayed method is used to verify whether an element is present on the site, returning true if present and false if not.']}, {'end': 23566.259, 'start': 23249.68, 'title': 'Handling multiple windows in selenium', 'summary': 'Covers the essential concepts of handling multiple windows in selenium webdriver, including the window handle, methods for handling window handles, and practical implementation through three test cases, focusing on printing handle values, switching and navigating to other windows, and closing the browser.', 'duration': 316.579, 'highlights': ['The chapter covers the essential concepts of handling multiple windows in Selenium WebDriver. The main focus of the chapter, providing an overview of the topic.', 'The window handle is a unique identifier that holds the address of all the windows, serving as a pointer to a window which returns a string value. Defining the window handle and its significance in handling multiple windows.', 'The get window handles method is used for retrieving the window ids of multiple open windows, while get window handle is used for retrieving the window id of the current focused window. Explanation of the difference between get window handles and get window handle methods.', 'The switch to method is used to switch from one window to the next window. Highlighting the usage of the switch to command for window handling.', 'The practical implementation includes three test cases focusing on printing handle values, switching and navigating to other windows, and closing the browser. Detailing the practical approach through three test cases.']}, {'end': 23973.823, 'start': 23569.429, 'title': 'Automating window handling in selenium', 'summary': 'Covers automating window handling in selenium, including maximizing the window, printing parent window handle, clicking on new window button, printing all window handles, and switching windows using driver.switchto.window command and navigating to urls, with a detailed explanation of the differences between get window handle and get window handles.', 'duration': 404.394, 'highlights': ['The get window handle function returns the window handle of the currently focused window or tab, while the get window handles function returns all the windows that are handled or launched, including the parent and the child, and there are four window handles including the parent and the child.', 'Demonstrates the usage of for loop to click on the new window button three times and explains the unique nature of get window handles returning a set of string type.', 'Illustrates the process of switching windows using driver.switchTo.window command and navigating to different URLs, such as navigating to google.com and maximizing the window, with a detailed walkthrough of the steps and commands used.']}, {'end': 24715.062, 'start': 23973.823, 'title': 'Handling windows in selenium', 'summary': 'Covers handling windows in selenium, including closing parent and child windows, switching between windows, and key interview questions such as difference between getwindowhandle and getwindowhandles, steps to switch to another window, and practical implementation of getwindowhandles method.', 'duration': 741.239, 'highlights': ['The chapter covers handling windows in Selenium, including closing parent and child windows, switching between windows, and key interview questions such as difference between getWindowHandle and getWindowHandles, steps to switch to another window, and practical implementation of getWindowHandles method. Handling windows in Selenium, closing parent and child windows, switching between windows, interview questions about getWindowHandle and getWindowHandles, steps to switch to another window, practical implementation of getWindowHandles method', 'The main difference between getWindowHandle and getWindowHandles is that getWindowHandle returns the window value of the currently focused app, whereas getWindowHandles returns all the window handles, including the parent and the child windows. Difference between getWindowHandle and getWindowHandles, getWindowHandle returns currently focused window, getWindowHandles returns all window handles', 'To handle multiple windows in an application, the steps involve getting the handle of the parent window, finding the element, opening multiple child windows, getting the handles of all the windows, and switching to the desired window using the switch to command. Steps to handle multiple windows in an application: getting parent window handle, finding element, opening multiple child windows, getting all window handles, switching to desired window', 'The switch to command is used to switch between windows, frames, and pop-ups in Selenium, and it is used by providing the handle value to switch to the desired window. Usage of switch to command, switching between windows, frames, and pop-ups, providing handle value to switch to desired window', 'After launching a browser window, the window handle value can be obtained without loading a URL, showing that it is not mandatory to load a URL to achieve the window handle value. Obtaining window handle value without loading URL, not mandatory to load URL to achieve window handle value']}], 'duration': 1556.999, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ23158063.jpg', 'highlights': ['The get window handles method retrieves the window ids of multiple open windows.', 'The switch to method is used to switch from one window to the next window.', 'The main difference between getWindowHandle and getWindowHandles is that getWindowHandle returns the window value of the currently focused app, whereas getWindowHandles returns all the window handles, including the parent and the child windows.', 'The switch to command is used to switch between windows, frames, and pop-ups in Selenium, providing the handle value to switch to the desired window.', 'After launching a browser window, the window handle value can be obtained without loading a URL, showing that it is not mandatory to load a URL to achieve the window handle value.']}, {'end': 26130.85, 'segs': [{'end': 25167.852, 'src': 'embed', 'start': 25135.018, 'weight': 0, 'content': [{'end': 25135.898, 'text': 'that is there.', 'start': 25135.018, 'duration': 0.88}, {'end': 25137.199, 'text': 'Please select.', 'start': 25135.898, 'duration': 1.301}, {'end': 25143.3, 'text': 'Then we have Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, And here also we can see these values.', 'start': 25137.199, 'duration': 6.101}, {'end': 25146.301, 'text': 'Please select Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday.', 'start': 25143.3, 'duration': 3.001}, {'end': 25149.897, 'text': 'okay, so these are the values.', 'start': 25148.456, 'duration': 1.441}, {'end': 25151.098, 'text': 'we have printed the values.', 'start': 25149.897, 'duration': 1.201}, {'end': 25154.621, 'text': 'now, now i want to select them.', 'start': 25151.098, 'duration': 3.523}, {'end': 25158.204, 'text': 'i want to select these options.', 'start': 25154.621, 'duration': 3.583}, {'end': 25161.767, 'text': 'okay, so there are three methods to select these options.', 'start': 25158.204, 'duration': 3.563}, {'end': 25167.852, 'text': 'the first is select by index, then it is select by value and next is select by visible text.', 'start': 25161.767, 'duration': 6.085}], 'summary': 'Options for selecting values: index, value, visible text', 'duration': 32.834, 'max_score': 25135.018, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ25135018.jpg'}, {'end': 25248.424, 'src': 'embed', 'start': 25217.184, 'weight': 4, 'content': [{'end': 25222.726, 'text': "my chrome browser is launched, it's navigated, it's maximized and here you can see the friday is selected.", 'start': 25217.184, 'duration': 5.542}, {'end': 25225.626, 'text': 'here you can see they selected.', 'start': 25222.726, 'duration': 2.9}, {'end': 25228.047, 'text': 'friday the values are printed.', 'start': 25225.626, 'duration': 2.421}, {'end': 25233.848, 'text': 'we have got the total number of values, that is eight, and then the values are also printed and friday is selected.', 'start': 25228.047, 'duration': 5.801}, {'end': 25235.569, 'text': 'this is the first method.', 'start': 25233.848, 'duration': 1.721}, {'end': 25241.362, 'text': 'The next method is select by index.', 'start': 25236.96, 'duration': 4.402}, {'end': 25248.424, 'text': 'Now, for example, suppose if I want to select Tuesday, okay? And these are the options that are present over here.', 'start': 25242.762, 'duration': 5.662}], 'summary': 'Browser navigated, friday selected, 8 values printed, index method demonstrated.', 'duration': 31.24, 'max_score': 25217.184, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ25217184.jpg'}, {'end': 25917.345, 'src': 'embed', 'start': 25886.882, 'weight': 7, 'content': [{'end': 25889.684, 'text': 'Over here you can see the index that we have given zero.', 'start': 25886.882, 'duration': 2.802}, {'end': 25892.666, 'text': 'So the first option that is selected over here is California.', 'start': 25890.144, 'duration': 2.522}, {'end': 25895.629, 'text': "Okay Now let's deselect the values.", 'start': 25893.147, 'duration': 2.482}, {'end': 25903.421, 'text': "For that, we'll be using three commas that deselect by index, deselect by value, and deselect by visible text.", 'start': 25896.82, 'duration': 6.601}, {'end': 25917.345, 'text': "So first, I'll write select element dot deselect by index, okay? Now, I want to deselect New York because I've selected New York.", 'start': 25904.182, 'duration': 13.163}], 'summary': 'Demonstrating deselect options using index and values.', 'duration': 30.463, 'max_score': 25886.882, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ25886882.jpg'}], 'start': 24715.062, 'title': 'Handling dropdown menus in selenium', 'summary': 'Covers selenium interview questions and methods for handling drop-down menus, including selecting options by value, index, and visible text, with a total of eight elements in the dropdown menu. it also explains operations on multi-select boxes, such as selecting and deselecting options, with specific examples and execution results.', 'chapters': [{'end': 25135.018, 'start': 24715.062, 'title': 'Selenium interview questions and handling drop-down menus', 'summary': 'Covered selenium interview questions about get window handle and get window handles, the difference between them, and handling of drop-down menus using the select class, with a total of eight elements in the drop-down menu.', 'duration': 419.956, 'highlights': ['The chapter covered Selenium interview questions about get window handle and get window handles, the difference between them. The chapter mentioned that the interview questions about get window handle and get window handles are very important and frequently asked.', 'The chapter explained the handling of drop-down menus using the select class, with a total of eight elements in the drop-down menu. The chapter detailed the process of handling drop-down menus using the select class and mentioned that there are a total of eight elements present in the drop-down menu.']}, {'end': 25437.099, 'start': 25135.018, 'title': 'Handling dropdown menus in selenium', 'summary': 'Covers the methods to select options in a dropdown menu using selenium, including select by value, select by index, and select by visible text. it also demonstrates handling dropdown menus in selenium and extracting options using the select class and getoptions method.', 'duration': 302.081, 'highlights': ['The chapter covers the methods to select options in a dropdown menu using Selenium, including select by value, select by index, and select by visible text. It demonstrates the various methods for selecting options in a dropdown menu and provides a comprehensive overview of the process.', 'It also demonstrates handling dropdown menus in Selenium and extracting options using the select class and getOptions method. The transcript details the process of handling dropdown menus in Selenium and extracting options using the select class and getOptions method, providing practical insights into the implementation.', 'To find that, we will write drop-down list.getOptions.size. This demonstrates the method to find the number of options present in the dropdown menu using the getOptions method, showcasing a practical application of the Selenium framework.']}, {'end': 25676.127, 'start': 25437.099, 'title': 'Handling dropdown menus in selenium', 'summary': 'Covers selecting options from a dropdown menu using three methods: by index, by value, and by visible text, then explains the use of is multiple method to determine if the dropdown list allows multiple selections, backed by code examples and execution results.', 'duration': 239.028, 'highlights': ['The chapter covers selecting options from a dropdown menu using three methods: by index, by value, and by visible text It explains the three ways to select options from a dropdown menu: by index, by value, and by visible text, providing a comprehensive understanding of handling dropdown menus.', 'It explains the use of is multiple method to determine if the dropdown list allows multiple selections The chapter demonstrates the use of the is multiple method to check if the select element supports multiple selecting options, providing clarity on how to determine if a dropdown list allows multiple selections.', 'The code example and execution results are provided The transcript includes a code example and execution results, demonstrating practical implementation and outcomes in handling dropdown menus in Selenium.']}, {'end': 26130.85, 'start': 25677.819, 'title': 'Selenium multi-select box operations', 'summary': 'Explains the operations on a multi-select box using selenium, including selecting and deselecting options, with a demonstration of selecting and deselecting values like california, new york, and washington, and a note that deselect option works only for multi-select drop down menus.', 'duration': 453.031, 'highlights': ['The chapter demonstrates selecting and deselecting options like California, New York, and Washington in a multi-select box using Selenium. The demonstration includes the selection and deselection of values like California, New York, and Washington using methods like select by index, select by value, and select by visible text in a multi-select box using Selenium.', 'The chapter notes that the deselect option works only for multi-select drop down menus and not for drop down menus with the select class. The deselect option is highlighted to work only for multi-select drop down menus and not for drop down menus with the select class, with an example provided to illustrate the exception when attempting to deselect options in a non-multi-select drop down menu.']}], 'duration': 1415.788, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ24715062.jpg', 'highlights': ['The chapter covers the methods to select options in a dropdown menu using Selenium, including select by value, select by index, and select by visible text.', 'The chapter demonstrated selecting and deselecting options like California, New York, and Washington in a multi-select box using Selenium.', 'The chapter explained the handling of drop-down menus using the select class, with a total of eight elements in the drop-down menu.', 'The chapter covers selecting options from a dropdown menu using three methods: by index, by value, and by visible text.', 'The chapter mentioned that the interview questions about get window handle and get window handles are very important and frequently asked.', 'The chapter demonstrated the use of the is multiple method to check if the select element supports multiple selecting options.', 'The chapter detailed the process of handling drop-down menus using the select class and mentioned that there are a total of eight elements present in the drop-down menu.', 'The chapter notes that the deselect option works only for multi-select drop down menus and not for drop down menus with the select class.']}, {'end': 27499.572, 'segs': [{'end': 26271.897, 'src': 'embed', 'start': 26245.488, 'weight': 1, 'content': [{'end': 26250.693, 'text': 'that is, the webdriver.chrome.driver, and the value is the Chrome driver executable file.', 'start': 26245.488, 'duration': 5.205}, {'end': 26256.749, 'text': 'Next, we have written webdriver driver is equal to new Chrome driver, which will launch the Chrome browser.', 'start': 26251.946, 'duration': 4.803}, {'end': 26259.21, 'text': 'Next, we have navigated to the URL.', 'start': 26257.509, 'duration': 1.701}, {'end': 26261.732, 'text': 'So this is the page that we want to navigate to.', 'start': 26259.69, 'duration': 2.042}, {'end': 26265.394, 'text': 'So I have just copied this URL over here in driver.get command.', 'start': 26261.832, 'duration': 3.562}, {'end': 26271.897, 'text': 'Next, I have written driver.manage.window.maximize to maximize the Chrome browser.', 'start': 26266.774, 'duration': 5.123}], 'summary': 'Using selenium webdriver, the chrome browser is launched, navigated to a specific url, and then maximized.', 'duration': 26.409, 'max_score': 26245.488, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ26245488.jpg'}, {'end': 26508.789, 'src': 'embed', 'start': 26481.755, 'weight': 0, 'content': [{'end': 26489.921, 'text': 'now, since first I clicked on this element, then I entered some value, that is Dubai, and then I moved downwards and after moving downwards,', 'start': 26481.755, 'duration': 8.166}, {'end': 26492.463, 'text': 'what I want to do is I want to press enter.', 'start': 26489.921, 'duration': 2.542}, {'end': 26503.452, 'text': "okay, so again over here I'll write from dot, send keys and here I'll write keys dot, enter.", 'start': 26492.463, 'duration': 10.989}, {'end': 26506.708, 'text': 'and here you can see we have enter.', 'start': 26504.787, 'duration': 1.921}, {'end': 26508.789, 'text': 'okay. so this is what i want now.', 'start': 26506.708, 'duration': 2.081}], 'summary': 'Demonstrating the process of clicking, entering a value, and pressing enter in a software application.', 'duration': 27.034, 'max_score': 26481.755, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ26481755.jpg'}, {'end': 26702.923, 'src': 'embed', 'start': 26674.399, 'weight': 5, 'content': [{'end': 26681.484, 'text': 'okay, so this is how you can automate your auto suggestions drop down menus.', 'start': 26674.399, 'duration': 7.085}, {'end': 26682.785, 'text': "now that's it for this video.", 'start': 26681.484, 'duration': 1.301}, {'end': 26684.566, 'text': 'i hope you have learned something new.', 'start': 26682.785, 'duration': 1.781}, {'end': 26691.398, 'text': 'and Now checkboxes are widely used on our web pages to offer multiple choices of an option to the user.', 'start': 26684.566, 'duration': 6.832}, {'end': 26696.94, 'text': 'It is basically a GUI that allows the user to make certain choices for the given options.', 'start': 26691.638, 'duration': 5.302}, {'end': 26702.923, 'text': 'Now the user may get a list of choices and the checkbox records the choices made by the user.', 'start': 26698.081, 'duration': 4.842}], 'summary': 'Automate auto suggestions dropdown menus. checkboxes for multiple choices on web pages.', 'duration': 28.524, 'max_score': 26674.399, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ26674399.jpg'}, {'end': 26772.549, 'src': 'embed', 'start': 26741.724, 'weight': 8, 'content': [{'end': 26744.426, 'text': "and then we're going to perform some validations on the checkboxes.", 'start': 26741.724, 'duration': 2.702}, {'end': 26752.952, 'text': 'Okay, so here we will understand the validation through three commands that is the is displayed, is enabled and is selected.', 'start': 26745.227, 'duration': 7.725}, {'end': 26760.697, 'text': 'We have covered these three commands in the previous tutorials and I have also explained the difference between these three commands.', 'start': 26752.992, 'duration': 7.705}, {'end': 26765.081, 'text': "Okay, so now this is the page that we're going to automate today.", 'start': 26761.098, 'duration': 3.983}, {'end': 26767.863, 'text': 'Here you can see we have the checkboxes.', 'start': 26765.561, 'duration': 2.302}, {'end': 26772.549, 'text': "Now you must be thinking how do we handle these checkboxes, right? It's very easy.", 'start': 26768.383, 'duration': 4.166}], 'summary': "Performing validations on checkboxes using 'is displayed', 'is enabled', and 'is selected'.", 'duration': 30.825, 'max_score': 26741.724, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ26741724.jpg'}, {'end': 26999.405, 'src': 'embed', 'start': 26967.608, 'weight': 7, 'content': [{'end': 26969.149, 'text': 'And here you can see the sports is clicked.', 'start': 26967.608, 'duration': 1.541}, {'end': 26970.59, 'text': 'The reading is also clicked.', 'start': 26969.389, 'duration': 1.201}, {'end': 26974.811, 'text': 'Okay So now the third web element.', 'start': 26971.691, 'duration': 3.12}, {'end': 26978.833, 'text': "So I'll write web element dot, sorry, web element.", 'start': 26975.111, 'duration': 3.722}, {'end': 26986.798, 'text': 'And I will specify the variable over here as music is equal to driver dot find element by dot XPath.', 'start': 26978.953, 'duration': 7.845}, {'end': 26992.981, 'text': 'And I will just inspect this element and here it is.', 'start': 26988.039, 'duration': 4.942}, {'end': 26999.405, 'text': 'So I will just copy this XPath and I will paste it over here.', 'start': 26993.221, 'duration': 6.184}], 'summary': 'Demonstration of locating web elements and using xpath to interact with them.', 'duration': 31.797, 'max_score': 26967.608, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ26967608.jpg'}, {'end': 27473.269, 'src': 'embed', 'start': 27445.719, 'weight': 2, 'content': [{'end': 27450.082, 'text': "It's maximized and here sports is clicked, reading is clicked, music is clicked.", 'start': 27445.719, 'duration': 4.363}, {'end': 27454.304, 'text': 'Sports is unchecked, reading is unchecked and music is also unchecked.', 'start': 27451.142, 'duration': 3.162}, {'end': 27459.147, 'text': 'And then again the sports is checked, reading is checked and the music is also checked.', 'start': 27455.025, 'duration': 4.122}, {'end': 27464.01, 'text': 'The music is checked because the value of isEnabled is true.', 'start': 27459.867, 'duration': 4.143}, {'end': 27468.808, 'text': 'Okay, and I have given the condition over here as bool3 is equal to 3.', 'start': 27464.727, 'duration': 4.081}, {'end': 27470.828, 'text': 'So bool3 is equal to true.', 'start': 27468.808, 'duration': 2.02}, {'end': 27473.269, 'text': "So that's the reason why it's clicking the music element.", 'start': 27470.848, 'duration': 2.421}], 'summary': 'The sports, reading, and music options are clicked and unchecked before music is checked due to a condition where bool3 is equal to true.', 'duration': 27.55, 'max_score': 27445.719, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ27445719.jpg'}], 'start': 26131.05, 'title': 'Handling web interactions with selenium', 'summary': 'Covers methods for handling auto suggestion drop down menus with selenium webdriver, automating web interactions using selenium, and creating a selenium tutorial java class for handling and validating checkboxes. it includes commands for select class, opening chrome browser, navigating to url, maximizing browser window, and handling checkboxes with validations.', 'chapters': [{'end': 26223.703, 'start': 26131.05, 'title': 'Handling auto suggestions with selenium', 'summary': 'Covered different methods supported by the select class, such as select by value, index, and visible text, along with handling auto suggestion drop down menus with selenium webdriver and the understanding of auto suggestions.', 'duration': 92.653, 'highlights': ['The chapter covered different types of methods supported by the select class, including select by value, index, and visible text, along with deselect options, and validation methods.', "Understanding auto suggestions is necessary for handling them with Selenium WebDriver, which are inputs provided as suggestions or auto-complete options based on the user's input.", "The demonstration focused on automating the handling of auto suggestion drop down menus by inspecting and clicking on the inputs based on user input, such as 'selenium web driver' and 'buy' or 'indoor'."]}, {'end': 26783.613, 'start': 26223.703, 'title': 'Automating web interactions with selenium', 'summary': 'Presents a demonstration of automating web interactions using selenium, covering commands such as opening the chrome browser, navigating to a url, maximizing the browser window, automating auto-suggestion drop-down menus, and handling checkboxes with validations.', 'duration': 559.91, 'highlights': ['Demonstration of automating web interactions using Selenium The transcript provides a detailed demonstration of automating web interactions using Selenium, including opening the Chrome browser, navigating to a URL, and maximizing the browser window.', 'Automating auto-suggestion drop-down menus The transcript demonstrates the automation of auto-suggestion drop-down menus, including locating elements using XPath, clicking on elements, sending keyboard commands using send keys, and systematic code organization.', 'Handling checkboxes with validations The chapter explains how to handle checkboxes with validations, covering commands such as is displayed, is enabled, and is selected, as well as the importance of validating user choices as an automation tester.']}, {'end': 27119.505, 'start': 26784.213, 'title': 'Selenium tutorial: handling checkboxes in java class', 'summary': 'Covers the creation of a selenium tutorial 18 java class, including the launching of the chrome browser, navigation to a specified url, maximizing the browser, handling checkboxes by performing click operations and unchecking checkboxes by clicking them again.', 'duration': 335.292, 'highlights': ['Launch Chrome browser, navigate to a URL, and maximize the browser in a Selenium tutorial 18 Java class. 3 basic commands written.', 'Handling checkboxes by performing click operations for sports, reading, and music checkboxes. Checkboxes successfully handled.', 'Demonstrating how to uncheck checkboxes by clicking them again and using thread.sleep to observe the execution properly. Unchecking checkboxes showcased.']}, {'end': 27499.572, 'start': 27120.103, 'title': 'Handling and validating checkboxes', 'summary': 'Covers handling and validating checkboxes in selenium webdriver, including using the click operation to handle checkbox, explaining the commands isdisplayed, isselected, isenabled for validation, and demonstrating how to handle and validate checkboxes with practical examples.', 'duration': 379.469, 'highlights': ['Using the click operation to handle checkbox The tutorial explains how the click operation can be used to handle checkboxes, providing a practical understanding of how clicking once checks the checkbox, and clicking again unchecks it.', 'Explaining commands isDisplayed, isSelected, isEnabled for validation The chapter elaborates on the commands isDisplayed, isSelected, and isEnabled for validation, distinguishing their functionalities where isDisplayed returns true or false, isSelected returns true or false if the element is selected, and isEnabled returns true or false if the element is enabled.', 'Practical demonstration of handling and validating checkboxes The tutorial provides practical examples demonstrating the use of isDisplayed, isSelected, and isEnabled commands for handling and validating checkboxes, showcasing how to execute conditional actions based on the boolean values returned by these commands.']}], 'duration': 1368.522, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/xgYsfcGj1vQ/pics/xgYsfcGj1vQ26131050.jpg', 'highlights': ['The chapter covered different types of methods supported by the select class, including select by value, index, and visible text, along with deselect options, and validation methods.', "Understanding auto suggestions is necessary for handling them with Selenium WebDriver, which are inputs provided as suggestions or auto-complete options based on the user's input.", 'Demonstration of automating web interactions using Selenium, including opening the Chrome browser, navigating to a URL, and maximizing the browser window.', 'Automating auto-suggestion drop-down menus, including locating elements using XPath, clicking on elements, sending keyboard commands using send keys, and systematic code organization.', 'Launch Chrome browser, navigate to a URL, and maximize the browser in a Selenium tutorial 18 Java class. 3 basic commands written.', 'Handling checkboxes by performing click operations for sports, reading, and music checkboxes. Checkboxes successfully handled.', 'Using the click operation to handle checkbox, providing a practical understanding of how clicking once checks the checkbox, and clicking again unchecks it.', 'Explaining commands isDisplayed, isSelected, isEnabled for validation, distinguishing their functionalities where isDisplayed returns true or false, isSelected returns true or false if the element is selected, and isEnabled returns true or false if the element is enabled.', 'Practical demonstration of handling and validating checkboxes, showcasing how to execute conditional actions based on the boolean values returned by these commands.']}], 'highlights': ['The tutorial addresses the possibility of including multiple browsers in a single program, demonstrating the sequential execution of launching and closing both Chrome and Firefox browsers using different reference variables, emphasizing that there is no harm in including multiple browsers in one program.', 'The need to support cross-browser testing is highlighted. It emphasizes the requirement to simultaneously run multiple browsers and the advantage of not being specific to a single browser when writing WebDriver commands.', "The chapter demonstrates the process of automating browser actions using Selenium WebDriver, including launching Chrome and Firefox browsers, navigating to specific URLs, and closing the browsers. The key steps involve initializing the WebDriver, navigating to URLs using 'get' command, and closing the browsers using 'close' command.", 'The chapter discusses the importance of Selenium WebDriver in automating browser testing. It mentions the need to automate at least 500 test cases, with 250 requiring automation, emphasizing the significance of browser automation in large-scale testing.', 'Best practices for writing WebDriver commands are explained. It contrasts the drawbacks of being specific to a particular browser when writing commands (e.g., FirefoxDriver driver = new FirefoxDriver) versus the flexibility of using WebDriverDriver = new ChromeDriver, enabling easy switching between browsers without extensive code changes.', 'The chapter emphasizes the importance of verifying elements and learning different commands, drawing parallels to manual testing and highlighting the significance of verifying page elements like title and URL.', 'The chapter covers the usage of commands like send keys, click, get, get text, size, manage window, system set property, and chrome driver, offering a comprehensive understanding of these commands for Selenium testing.', 'The chapter details the preparation of test cases and the commands for creating and executing them in Selenium, including opening the Chrome browser, navigating to a URL, entering valid username and password, clicking on login button, verifying the URL and title, and closing the browser.', 'The chapter explains the various web element locators, including ID, name, tag name, class name, link text, partial link text, and CSS selector, for identifying web elements on a web page.', 'The process involves entering a valid username and password, clicking on the login button, and verifying the current URL using Selenium commands and attributes.', 'The importance of verifying the URL of the current web page is highlighted, showcasing the use of the get current URL command and storing it in a string variable for verification.', 'The test case for verifying the URL is passed. Successfully matching the desired URL with the actual URL resulted in a passed test case.', 'The test case for verifying the title is passed. Matching the desired title with the actual title led to a passed test case.', 'The test case for verifying the URL is failed. Changing the desired URL from the actual URL led to a failed test case.', 'The test case for verifying the title is failed. Changing the desired title from the actual title resulted in a failed test case.', 'The chapter provides a comprehensive overview of the Selenium test case implementation, emphasizing the use of WebDriver commands.', 'The chapter introduced navigational commands in Selenium WebDriver, such as driver.navigate.back(), driver.navigate.forward(), and driver.navigate.refresh().', 'The chapter explained the difference between driver.quit and driver.close commands, demonstrating that driver.quit closes all active web driver instances while driver.close terminates the focused browser.', 'The driver.get command opens a specified URL in the browser and returns nothing, accepting a string as a parameter.', 'The driver.manage.window.maximize method maximizes the window.', 'The chapter covers understanding web element commands, including different types of commands with syntax, implementation, and differences between find elements and find element, is displayed, is enabled, is selected methods, click, and submit methods.', 'The document includes commands, descriptions, syntax, parameters, and returns available in PDF format.', 'The tutorial explains what web element commands are and how they are used to interact with web elements using various locators like ID, name, class, and XPath.', 'The chapter covers the implementation of Selenium web element commands including launching the chrome browser, opening a URL, maximizing the page, sending username and password, and clearing the entered credentials.', 'The click method works for both submit and button elements inside and outside form tags.', 'The submit method only works for buttons inside the form tag, with limitations for elements outside the form tag.', "The getText method fetches the visible inner text of the element, retrieving 'forget your password' as an example.", 'The findElements method is used to find the number of links present on the page, finding six links present.', 'The chapter explains the difference between findElement and findElements, and demonstrates the usage of isDisplayed, isEnabled, and isSelected methods.', 'The chapter covered different types of methods supported by the select class, including select by value, index, and visible text, along with deselect options, and validation methods.', "Understanding auto suggestions is necessary for handling them with Selenium WebDriver, which are inputs provided as suggestions or auto-complete options based on the user's input.", 'Demonstration of automating web interactions using Selenium, including opening the Chrome browser, navigating to a URL, and maximizing the browser window.', 'Automating auto-suggestion drop-down menus, including locating elements using XPath, clicking on elements, sending keyboard commands using send keys, and systematic code organization.', 'Handling checkboxes by performing click operations for sports, reading, and music checkboxes. Checkboxes successfully handled.', 'Using the click operation to handle checkbox, providing a practical understanding of how clicking once checks the checkbox, and clicking again unchecks it.', 'Explaining commands isDisplayed, isSelected, isEnabled for validation, distinguishing their functionalities where isDisplayed returns true or false, isSelected returns true or false if the element is selected, and isEnabled returns true or false if the element is enabled.', 'Practical demonstration of handling and validating checkboxes, showcasing how to execute conditional actions based on the boolean values returned by these commands.']}