title
Selenium Tutorial For Beginners | Selenium Full Course | Selenium Webdriver Tutorial | Simplilearn

description
🔥 IIT Guwahati Professional Certificate Program In Cloud Computing And DevOps (India Only): https://www.simplilearn.com/professional-certificate-program-cloud-computing-devops?utm_campaign=25AugustTubebuddyExpCloud&DevopsIITG&utm_medium=DescriptionFF&utm_source=youtube 🔥DevOps Engineer Masters Program (Discount Code - YTBE15): https://www.simplilearn.com/devops-engineer-masters-program-certification-training?utm_campaign=SCE-DevopsMaster&utm_medium=DescriptionFF&utm_source=youtube 🔥Post Graduate Program In DevOps: https://www.simplilearn.com/pgp-devops-certification-training-course?utm_campaign=AutomationToolsForTesting-Jdkrj2lDAEY&utm_medium=Descriptionff&utm_source=youtube 🔥 Gain extensive hands-on training in software development, testing, and quality assurance technology skills, including phase-end and capstone projects based on real business scenarios: https://www.simplilearn.com/automation-testing-training-course-placement-guarantee?utm_campaign=AutomationToolsForTesting&utm_medium=Description&utm_source=youtube This Selenium Tutorial video has brushed upon the topics in brief and explains the following concepts: 00:00 Selenium tutorial 1. Manual Testing 01:51 2. Limitations of Manual Testing 03:50 3. How Does Selenium Works 06:42 4. What is Selenium 07:44 5. Selenium Suit of Tools 09:21 6. Selenium Versions 11:51 7. Selenium IDE 12:31 8. Selenium RC 28:31 9. Selenium WebDriver 34:31 10. Selenium Grid 59:11 11. Selenium Advantages 1:03:21 12. Limitations of selenium 1:05:11 13. Selenium installation on windows 1:06:51 14. Selenium installation on Mac 1:21:25 15. Resurrection of selenium IDE 1:38:46 16. Working principle of selenium IDE 1:47:24 17. Selenium Commands 1:54:44 18. Limitations of selenium IDE 3:13:03 19. APIs in Selenium RC 3:32:33 20. What is Selenium WebDriver 3:34:43 21. Limitations of selenium WebDriver 3:39:53 22. Selenium Interview Questions 4:02:22 🔥Free DevOps Training course: https://www.simplilearn.com/learn-devops-basics-skillup?utm_campaign=AutomationToolsForTesting&utm_medium=DescriptionFirstFold&utm_source=youtube To learn more about Selenium, subscribe to our YouTube channel: https://www.youtube.com/user/Simplilearn?sub_confirmation=1 Watch more videos on Selenium: https://www.youtube.com/playlist?list=PLEiEAq2VkUUJALG6nbw0sY-zbhAAx5IuT #SeleniumTutorialForBeginners #Selenium #SeleniumWebdriverTutorial #SeleniumTutorial #SeleniumTutorialForBeginner #SeleniumWebdriver #SeleniumFullCourseTutorial #SeleniumTutorial #WhatIsSelenium #SeleniumForBeginners #SeleniumBasicsForBeginners #SimplilearnSelenium #Simplilearn ➡️About Post Graduate Program In DevOps DevOps training course will bring out the scientist in you. You'll learn how to formalize and document development processes and create a self-documenting system. DevOps certification course will also cover advanced tools like Puppet, SaltStack, and Ansible that help self-governance and automated management at scale. ✅Key features - Caltech CTME Post Graduate Certificate - Enrolment in Simplilearn’s JobAssist - Receive up to 25 CEUs from Caltech CTME upon course completion - Simplilearn's JobAssist helps you get noticed by top hiring companies - Attend Masterclasses from Caltech CTME instructors - Live virtual classes led by industry experts, hands-on projects and integrated labs - Online Convocation by Caltech CTME Program Director - 20+ real-life projects on integrated labs - Capstone project in 3 domains - Caltech CTME Circle Membership ✅Skills Covered - DevOps Methodology - Continuous Integration - Continuous Delivery - Configuration Management - Containerization - DevOps on Cloud - Source Control - Deployment Automation - Cloud Platforms Learn more at: https://www.simplilearn.com/pgp-devops-certification-training-course?utm_campaign=AutomationToolsForTesting&utm_medium=Description&utm_source=youtube 🔥🔥 Interested in Attending Live Classes? Call Us: IN - 18002127688 / US - +18445327688

detail
{'title': 'Selenium Tutorial For Beginners | Selenium Full Course | Selenium Webdriver Tutorial | Simplilearn', 'heatmap': [{'end': 1141.796, 'start': 568.873, 'weight': 1}, {'end': 1519.266, 'start': 1328.173, 'weight': 0.75}, {'end': 2282.629, 'start': 2087.867, 'weight': 0.812}, {'end': 3228.825, 'start': 2468.931, 'weight': 0.843}, {'end': 4368.59, 'start': 4173.702, 'weight': 0.741}], 'summary': 'This selenium tutorial covers the evolution, advantages, and techniques of selenium testing, including automation with selenium ide, rc, webdriver, assertions, debugging, test script reusability, installation, and benefits of selenium. it also includes web testing, selenium webdriver techniques, automation techniques, and handling windows, frames, and pop-ups for comprehensive learning.', 'chapters': [{'end': 1657.679, 'segs': [{'end': 1141.796, 'src': 'heatmap', 'start': 568.873, 'weight': 1, 'content': [{'end': 570.173, 'text': 'It is a suite of tools.', 'start': 568.873, 'duration': 1.3}, {'end': 576.116, 'text': "So let's look at some of the major components or the tools in Selenium and what they have to offer.", 'start': 570.513, 'duration': 5.603}, {'end': 578.717, 'text': 'So Selenium has four major components.', 'start': 576.596, 'duration': 2.121}, {'end': 580.459, 'text': 'One, Selenium IDE.', 'start': 579.178, 'duration': 1.281}, {'end': 583.32, 'text': "It's the most simplest tool in the suite of Selenium.", 'start': 580.839, 'duration': 2.481}, {'end': 585.582, 'text': 'It is integrated development environment.', 'start': 583.541, 'duration': 2.041}, {'end': 593.307, 'text': 'Earlier, Selenium IDE was available only as a Firefox plugin and it offered a simple record and playback functionality.', 'start': 585.942, 'duration': 7.365}, {'end': 601.012, 'text': "It is a very simple to use tool, but it's mainly used for prototyping and not used for creating automation in the real-time projects,", 'start': 593.627, 'duration': 7.385}, {'end': 605.235, 'text': 'because it has its own limitations, like any other record and replay tool.', 'start': 601.012, 'duration': 4.223}, {'end': 606.555, 'text': 'Selenium RC.', 'start': 605.595, 'duration': 0.96}, {'end': 609.016, 'text': 'This is nothing but Selenium Remote Control.', 'start': 606.875, 'duration': 2.141}, {'end': 612.857, 'text': 'It is used to write web application tests in different programming languages.', 'start': 609.316, 'duration': 3.541}, {'end': 618.679, 'text': 'What it does is, it basically interacts with the browser with the help of something called as RC server.', 'start': 613.197, 'duration': 5.482}, {'end': 623.52, 'text': 'And how it interacts is, it uses a simple HTTP post get request for communication.', 'start': 619.119, 'duration': 4.401}, {'end': 626.742, 'text': 'This was also called as Selenium 1.0 version.', 'start': 623.96, 'duration': 2.782}, {'end': 635.687, 'text': 'But it got deprecated in Selenium 2.0 version and was completely removed in 3.0 and it was replaced by WebDriver.', 'start': 627.122, 'duration': 8.565}, {'end': 639.169, 'text': 'And we will see in detail as why this happened.', 'start': 636.247, 'duration': 2.922}, {'end': 644.012, 'text': 'Selenium WebDriver, this is the most important component in the Selenium suite.', 'start': 639.749, 'duration': 4.263}, {'end': 648.054, 'text': 'It is a programming interface to create and execute test cases.', 'start': 644.372, 'duration': 3.682}, {'end': 655.348, 'text': 'It is obviously the successor of the Selenium RC which we talked about because of certain drawbacks which RC had.', 'start': 648.706, 'duration': 6.642}, {'end': 664.01, 'text': 'So what WebDriver does is it interacts with the browsers directly unlike RC where the RC required a server to interact with the browser.', 'start': 655.788, 'duration': 8.222}, {'end': 666.771, 'text': 'And the last component is the Selenium Grid.', 'start': 664.33, 'duration': 2.441}, {'end': 672.232, 'text': 'So Selenium Grid is used to run multiple test scripts on multiple machines at the same time.', 'start': 667.111, 'duration': 5.121}, {'end': 675.113, 'text': 'So it helps you in achieving parallel execution.', 'start': 672.472, 'duration': 2.641}, {'end': 682.959, 'text': 'Since the Selenium WebDriver with you can only do sequential execution, Grid is what comes into picture where you can do your parallel execution.', 'start': 675.513, 'duration': 7.446}, {'end': 691.345, 'text': 'And why is parallel execution important? Because in real-time environment you always have the need to run test cases in a distributed environment.', 'start': 683.299, 'duration': 8.046}, {'end': 694.047, 'text': 'And that is what Grid helps you to achieve.', 'start': 691.665, 'duration': 2.382}, {'end': 699.571, 'text': 'So all this together helps us to create robust web application test automation.', 'start': 694.387, 'duration': 5.184}, {'end': 702.814, 'text': 'And we will go in detail about each of these components.', 'start': 700.152, 'duration': 2.662}, {'end': 706.157, 'text': "So before that, let's look at the history of Selenium version.", 'start': 703.376, 'duration': 2.781}, {'end': 710.819, 'text': 'So what did Selenium version comprised of? It had an IDE, RC and GRID.', 'start': 706.337, 'duration': 4.482}, {'end': 714.66, 'text': 'And as I said earlier, there were some disadvantages of using RC.', 'start': 711.399, 'duration': 3.261}, {'end': 720.042, 'text': 'So RC was on its path of deprecation and WebDriver was taking its path.', 'start': 715.18, 'duration': 4.862}, {'end': 725.964, 'text': 'So if you look at Selenium 2 version, it had an earlier version of WebDriver and also the RC.', 'start': 720.362, 'duration': 5.602}, {'end': 727.224, 'text': 'So they coexisted.', 'start': 726.244, 'duration': 0.98}, {'end': 732.126, 'text': 'From 3.0 onwards, RC was completely removed and WebDriver took its place.', 'start': 727.584, 'duration': 4.542}, {'end': 737.529, 'text': 'There is also a 4-dot version around the corner and it has more features and enhancements.', 'start': 732.566, 'duration': 4.963}, {'end': 744.713, 'text': 'Some of the features which are talked about are W3C web driver standardization, improved IDE and improved grid.', 'start': 737.609, 'duration': 7.104}, {'end': 748.235, 'text': "Now let's look at each of the components in the Selenium suite.", 'start': 745.093, 'duration': 3.142}, {'end': 752.557, 'text': 'Selenium IDE is the most simplest tool in the suite of Selenium.', 'start': 748.655, 'duration': 3.902}, {'end': 757.279, 'text': 'It is nothing but an integrated development environment for creating your automation scripts.', 'start': 752.817, 'duration': 4.462}, {'end': 761.802, 'text': "It has a record and playback functionality and it's a very simple and easy to use tool.", 'start': 757.66, 'duration': 4.142}, {'end': 765.485, 'text': 'It is available as a Firefox plugin and a Chrome extension.', 'start': 762.142, 'duration': 3.343}, {'end': 768.987, 'text': 'So you can use either of this browser to record your test scripts.', 'start': 765.825, 'duration': 3.162}, {'end': 774.452, 'text': "It's a very simple user interface using which you can create your scripts that interact with your browser.", 'start': 769.528, 'duration': 4.924}, {'end': 783.399, 'text': 'The commands created in the scripts are called Selenese commands and they can be exported to the supported programming language and hence this code can be reused.', 'start': 774.832, 'duration': 8.567}, {'end': 790.285, 'text': 'However, this is mainly used for prototyping and not used for creating automation for your real-time projects.', 'start': 783.979, 'duration': 6.306}, {'end': 794.729, 'text': 'Why? Because of its own limitation which any other record and replay tool has.', 'start': 790.565, 'duration': 4.164}, {'end': 797.172, 'text': 'So a bit history of Selenium IDE.', 'start': 795.29, 'duration': 1.882}, {'end': 800.795, 'text': 'So earlier Selenium IDE was only a Firefox extension.', 'start': 797.392, 'duration': 3.403}, {'end': 805.38, 'text': 'So we saw that IDE was available since the Selenium version 1.', 'start': 801.056, 'duration': 4.324}, {'end': 808.843, 'text': 'Selenium IDE died with the Firefox version 55.', 'start': 805.38, 'duration': 3.463}, {'end': 815.586, 'text': 'That was IDE was stopped supporting from 55 version onwards and this was around 2017 timeframe.', 'start': 808.843, 'duration': 6.743}, {'end': 824.529, 'text': 'However, very recently all new brand Selenium IDE has been launched by ApplyTools and also they have made it a cross browser.', 'start': 815.846, 'duration': 8.683}, {'end': 829.691, 'text': 'So you can install the extension on Chrome as well as as an add-on on Firefox browser.', 'start': 824.749, 'duration': 4.942}, {'end': 837.655, 'text': 'So they completely revamped this IDE code and now they have made it available on the GitHub under the Apache 2.0 license.', 'start': 829.971, 'duration': 7.684}, {'end': 840.557, 'text': "And for the demos today, we'll be looking at the new IDE.", 'start': 837.935, 'duration': 2.622}, {'end': 844.52, 'text': 'Now with this new IDE also comes a good amount of features.', 'start': 840.918, 'duration': 3.602}, {'end': 851.646, 'text': 'Reusability of test cases, better debugger, and most importantly, it supports parallel test case execution.', 'start': 845.201, 'duration': 6.445}, {'end': 859.051, 'text': 'So they have introduced a utility called Selenium Site Runner that allows you to run your test cases on any browser.', 'start': 851.986, 'duration': 7.065}, {'end': 866.397, 'text': 'So you can create your automation using IDC on Chrome or Firefox, but through command prompt using your site runner,', 'start': 859.311, 'duration': 7.086}, {'end': 872.061, 'text': 'you can execute this test cases on any browser, thus by achieving your cross browser testing.', 'start': 866.397, 'duration': 5.664}, {'end': 873.422, 'text': 'Control flow statement.', 'start': 872.361, 'duration': 1.061}, {'end': 878.244, 'text': 'So initially in the previous versions of IDEA, there were control flow statements available.', 'start': 873.602, 'duration': 4.642}, {'end': 881.326, 'text': 'However, one had to install a plugin to use them.', 'start': 878.464, 'duration': 2.862}, {'end': 884.108, 'text': 'But now it is made available out of box.', 'start': 881.706, 'duration': 2.402}, {'end': 890.451, 'text': 'And what are these control flow statements? These are nothing but your if-else conditions, the while loops, the switch case and so on.', 'start': 884.468, 'duration': 5.983}, {'end': 893.473, 'text': 'It also has an improved locator functionality.', 'start': 890.871, 'duration': 2.602}, {'end': 898.456, 'text': 'That means it provides a failover mechanism for locating elements on your web page.', 'start': 893.853, 'duration': 4.603}, {'end': 903.6, 'text': "So let's look at how this IDE looks and how do we install it and start working on that.", 'start': 899.016, 'duration': 4.584}, {'end': 905.762, 'text': 'So for that let me take you to my browser.', 'start': 903.82, 'duration': 1.942}, {'end': 908.344, 'text': "So say let's go to the Firefox browser.", 'start': 906.142, 'duration': 2.202}, {'end': 912.127, 'text': 'So on this browser I already have the IDE installed.', 'start': 908.684, 'duration': 3.443}, {'end': 917.172, 'text': 'So when you already have an IDE installed you will see an icon here which says Selenium IDE.', 'start': 912.308, 'duration': 4.864}, {'end': 921.656, 'text': 'And how do you install this? You simply need to go to your Firefox add-ons.', 'start': 917.472, 'duration': 4.184}, {'end': 924.637, 'text': 'here where it says find more extension.', 'start': 922.176, 'duration': 2.461}, {'end': 929.26, 'text': 'so just type in selenium id and search for this extension.', 'start': 924.637, 'duration': 4.623}, {'end': 931.941, 'text': 'so in the search results you see the selenium id.', 'start': 929.26, 'duration': 2.681}, {'end': 936.983, 'text': "just click on that and now, since i've already installed here, it says remove.", 'start': 931.941, 'duration': 5.042}, {'end': 940.345, 'text': 'otherwise for you, it is going to give you an add button here.', 'start': 936.983, 'duration': 3.362}, {'end': 941.866, 'text': 'just click on the add button.', 'start': 940.345, 'duration': 1.521}, {'end': 943.847, 'text': 'it will install this extension.', 'start': 941.866, 'duration': 1.981}, {'end': 948.189, 'text': 'once it is installed, you should be able to see this selenium id icon here.', 'start': 943.847, 'duration': 4.342}, {'end': 951.532, 'text': "Okay, so now let's go ahead and launch this idea.", 'start': 948.749, 'duration': 2.783}, {'end': 956.797, 'text': "So when I click on that, it is going to show me a welcome page where it's going to give me a few options.", 'start': 951.852, 'duration': 4.945}, {'end': 960.26, 'text': 'The first option is it says record a new test case in a new project.', 'start': 957.317, 'duration': 2.943}, {'end': 961.421, 'text': 'So straight away.', 'start': 960.54, 'duration': 0.881}, {'end': 967.547, 'text': "if you choose this option, you can start recording a test case, in which case it's going to just create a default project for you,", 'start': 961.421, 'duration': 6.126}, {'end': 968.808, 'text': 'which you can save it later.', 'start': 967.547, 'duration': 1.261}, {'end': 970.749, 'text': 'Then open an existing project.', 'start': 969.148, 'duration': 1.601}, {'end': 973.832, 'text': 'So you can open if you already have a saved project.', 'start': 971.01, 'duration': 2.822}, {'end': 975.493, 'text': 'Create a new project and close.', 'start': 974.132, 'duration': 1.361}, {'end': 979.496, 'text': 'So I already have an existing project with me for the demo purpose.', 'start': 975.933, 'duration': 3.563}, {'end': 980.897, 'text': "So I'll go ahead and open that.", 'start': 979.536, 'duration': 1.361}, {'end': 985.18, 'text': "So I'll say open existing project and I have created a simple script.", 'start': 981.137, 'duration': 4.043}, {'end': 993.267, 'text': 'What the script does is it logs me into the Facebook using a dummy username and password.', 'start': 985.521, 'duration': 7.746}, {'end': 993.907, 'text': "That's all.", 'start': 993.567, 'duration': 0.34}, {'end': 997.57, 'text': "It's a very simple script with few lines and this is what it's going to do.", 'start': 994.267, 'duration': 3.303}, {'end': 1001.771, 'text': "So what we will simply do is we'll just run the script and see how it works.", 'start': 997.85, 'duration': 3.921}, {'end': 1008.833, 'text': "For that, I'm just going to reduce the test execution speed so that you should be able to see every step of execution here.", 'start': 1002.251, 'duration': 6.582}, {'end': 1016.015, 'text': "Alright, so what I'll do now here is I'll just adjust this window and I'll just simply say run current test.", 'start': 1009.193, 'duration': 6.822}, {'end': 1021.657, 'text': "Alright, so I'll just get this side by side so that you should be able to see what exactly the script is doing.", 'start': 1016.355, 'duration': 5.302}, {'end': 1023.898, 'text': 'okay, so now you are able to see both the windows.', 'start': 1021.937, 'duration': 1.961}, {'end': 1027.579, 'text': "okay, so now it's going to type in your user email here.", 'start': 1023.898, 'duration': 3.681}, {'end': 1031.642, 'text': 'there you go and now it will enter the password and it has clicked on the login button.', 'start': 1027.579, 'duration': 4.063}, {'end': 1035.845, 'text': "so it's going to take a while to say login, and since these are the dummy ids, it is.", 'start': 1031.642, 'duration': 4.203}, {'end': 1038.486, 'text': 'you are not able to log in here and you are going to see this error window.', 'start': 1035.845, 'duration': 2.641}, {'end': 1040.928, 'text': 'Fine, that is what is the expected output here?', 'start': 1038.685, 'duration': 2.243}, {'end': 1050.595, 'text': 'Now on the ID, if you look here, after I execute the test case, every statement or every command which I have used here is colored coded in green.', 'start': 1041.188, 'duration': 9.407}, {'end': 1054.218, 'text': 'So that means this particular step was executed successfully.', 'start': 1050.775, 'duration': 3.443}, {'end': 1061.424, 'text': 'And then here in the log window, it will give you a complete log of this test case, right from the first step till the end.', 'start': 1054.438, 'duration': 6.986}, {'end': 1066.668, 'text': 'And your end results, it says FB login, which is my test case name, completed successfully.', 'start': 1061.724, 'duration': 4.944}, {'end': 1069.369, 'text': "Let's look at few components of this ID.", 'start': 1067.208, 'duration': 2.161}, {'end': 1071.11, 'text': 'The first one is the menu bar.', 'start': 1069.81, 'duration': 1.3}, {'end': 1073.412, 'text': "So let's go to our ID already.", 'start': 1071.511, 'duration': 1.901}, {'end': 1076.233, 'text': 'So the menu bar is right here on the top.', 'start': 1073.632, 'duration': 2.601}, {'end': 1077.754, 'text': 'So here is your project name.', 'start': 1076.433, 'duration': 1.321}, {'end': 1081.436, 'text': 'So either you can add a new project here or rename your project.', 'start': 1077.874, 'duration': 3.562}, {'end': 1084.258, 'text': 'So since we already have this project which is named as Facebook.', 'start': 1081.496, 'duration': 2.762}, {'end': 1091.562, 'text': 'And then on the right, you have options to create a new project, open an existing project or save the current project.', 'start': 1084.798, 'duration': 6.764}, {'end': 1093.444, 'text': 'And then comes our toolbar.', 'start': 1091.963, 'duration': 1.481}, {'end': 1098.107, 'text': 'So using the options in this toolbar, you can control the execution of your test cases.', 'start': 1093.824, 'duration': 4.283}, {'end': 1100.508, 'text': 'So first one here is the recording button.', 'start': 1098.507, 'duration': 2.001}, {'end': 1103.61, 'text': 'So this is what you use when you start recording your script.', 'start': 1100.908, 'duration': 2.702}, {'end': 1107.673, 'text': 'And then on the left, you have two options here to run your test cases.', 'start': 1103.95, 'duration': 3.723}, {'end': 1109.374, 'text': 'The first one is run all tests.', 'start': 1107.873, 'duration': 1.501}, {'end': 1117.178, 'text': 'So in case you have multiple test cases written here, you can execute them one by one sequentially by using this run all test.', 'start': 1109.754, 'duration': 7.424}, {'end': 1122.04, 'text': 'Else what you can do is if you just want to run your current test, this is what you would use.', 'start': 1117.638, 'duration': 4.402}, {'end': 1127.163, 'text': 'Then IDE has this debugger option which you can use to do a step execution.', 'start': 1122.4, 'duration': 4.763}, {'end': 1133.128, 'text': "So say for example now whenever I run the script it's going to execute each and every command here sequentially.", 'start': 1127.503, 'duration': 5.625}, {'end': 1141.796, 'text': 'So instead, if I just select the first command and say do step execution alright, so what it does is the moment it finishes the first command,', 'start': 1133.328, 'duration': 8.468}], 'summary': 'Selenium suite comprises four major components: ide, rc, webdriver, and grid, each serving specific roles for web application test automation.', 'duration': 572.923, 'max_score': 568.873, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY568873.jpg'}, {'end': 682.959, 'src': 'embed', 'start': 639.749, 'weight': 0, 'content': [{'end': 644.012, 'text': 'Selenium WebDriver, this is the most important component in the Selenium suite.', 'start': 639.749, 'duration': 4.263}, {'end': 648.054, 'text': 'It is a programming interface to create and execute test cases.', 'start': 644.372, 'duration': 3.682}, {'end': 655.348, 'text': 'It is obviously the successor of the Selenium RC which we talked about because of certain drawbacks which RC had.', 'start': 648.706, 'duration': 6.642}, {'end': 664.01, 'text': 'So what WebDriver does is it interacts with the browsers directly unlike RC where the RC required a server to interact with the browser.', 'start': 655.788, 'duration': 8.222}, {'end': 666.771, 'text': 'And the last component is the Selenium Grid.', 'start': 664.33, 'duration': 2.441}, {'end': 672.232, 'text': 'So Selenium Grid is used to run multiple test scripts on multiple machines at the same time.', 'start': 667.111, 'duration': 5.121}, {'end': 675.113, 'text': 'So it helps you in achieving parallel execution.', 'start': 672.472, 'duration': 2.641}, {'end': 682.959, 'text': 'Since the Selenium WebDriver with you can only do sequential execution, Grid is what comes into picture where you can do your parallel execution.', 'start': 675.513, 'duration': 7.446}], 'summary': 'Selenium webdriver is crucial, enabling direct browser interaction. grid allows parallel execution on multiple machines.', 'duration': 43.21, 'max_score': 639.749, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY639749.jpg'}, {'end': 783.399, 'src': 'embed', 'start': 748.655, 'weight': 1, 'content': [{'end': 752.557, 'text': 'Selenium IDE is the most simplest tool in the suite of Selenium.', 'start': 748.655, 'duration': 3.902}, {'end': 757.279, 'text': 'It is nothing but an integrated development environment for creating your automation scripts.', 'start': 752.817, 'duration': 4.462}, {'end': 761.802, 'text': "It has a record and playback functionality and it's a very simple and easy to use tool.", 'start': 757.66, 'duration': 4.142}, {'end': 765.485, 'text': 'It is available as a Firefox plugin and a Chrome extension.', 'start': 762.142, 'duration': 3.343}, {'end': 768.987, 'text': 'So you can use either of this browser to record your test scripts.', 'start': 765.825, 'duration': 3.162}, {'end': 774.452, 'text': "It's a very simple user interface using which you can create your scripts that interact with your browser.", 'start': 769.528, 'duration': 4.924}, {'end': 783.399, 'text': 'The commands created in the scripts are called Selenese commands and they can be exported to the supported programming language and hence this code can be reused.', 'start': 774.832, 'duration': 8.567}], 'summary': 'Selenium ide is a simple tool for creating automation scripts, with record and playback functionality, available as a firefox plugin and chrome extension.', 'duration': 34.744, 'max_score': 748.655, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY748655.jpg'}, {'end': 1519.266, 'src': 'heatmap', 'start': 1328.173, 'weight': 0.75, 'content': [{'end': 1330.473, 'text': "let's minimize this alright.", 'start': 1328.173, 'duration': 2.3}, {'end': 1331.874, 'text': "so here what I'll do.", 'start': 1330.473, 'duration': 1.401}, {'end': 1338.275, 'text': "in the tests tab I'll say add a new test and let name this test as Amazon search Done.", 'start': 1331.874, 'duration': 6.401}, {'end': 1339.416, 'text': "I'll say add.", 'start': 1338.735, 'duration': 0.681}, {'end': 1342.818, 'text': "Now I'll enter this URL which I just copied it from my browser.", 'start': 1339.696, 'duration': 3.122}, {'end': 1345.76, 'text': "And then I'll just say start recording.", 'start': 1343.318, 'duration': 2.442}, {'end': 1352.544, 'text': "So what it did was since I've entered the URL in this address box it just opened the Amazon.in URL.", 'start': 1346.22, 'duration': 6.324}, {'end': 1354.925, 'text': "Now let's do our test case.", 'start': 1353.524, 'duration': 1.401}, {'end': 1358.808, 'text': 'So in my test case what I said was I want to search for iPhone.', 'start': 1355.005, 'duration': 3.803}, {'end': 1361.85, 'text': "Once I have this I'm just going to click on my search button.", 'start': 1359.208, 'duration': 2.642}, {'end': 1369.996, 'text': 'So now this gives me a list of all iPhones and then I said I want to add an assertion on the title of this page.', 'start': 1362.31, 'duration': 7.686}, {'end': 1378.061, 'text': "So for me to do that what ID gives me an option is I have to just right click anywhere on this page and you'll see the Selenium ID options here.", 'start': 1370.416, 'duration': 7.645}, {'end': 1381.344, 'text': 'So in this I will select assert title.', 'start': 1378.382, 'duration': 2.962}, {'end': 1383.625, 'text': 'And then I will close this browser.', 'start': 1381.764, 'duration': 1.861}, {'end': 1385.647, 'text': 'So that kind of completes my test case.', 'start': 1383.886, 'duration': 1.761}, {'end': 1388.549, 'text': 'So now take a look at all the steps which is created for me.', 'start': 1386.147, 'duration': 2.402}, {'end': 1392.072, 'text': "So it says open slash because I've already provided the URL here.", 'start': 1388.87, 'duration': 3.202}, {'end': 1396.215, 'text': 'So either you can replace it with your regular URL or you can just leave it as it is.', 'start': 1392.412, 'duration': 3.803}, {'end': 1402.2, 'text': 'So what I will do since this is going to be a proper script and I might be using this to run it from my command prompt also.', 'start': 1396.235, 'duration': 5.965}, {'end': 1407.444, 'text': "So I'll just replace this target with the actual URL and then what it is doing it is setting a window size.", 'start': 1402.44, 'duration': 5.004}, {'end': 1414.088, 'text': 'Then there are whatever I did on that particular URL on that website it has recorded all the steps for me.', 'start': 1407.924, 'duration': 6.164}, {'end': 1421.614, 'text': 'So this is where it says type into this particular text box which is my search box and what did it type iPhone.', 'start': 1414.469, 'duration': 7.145}, {'end': 1423.255, 'text': 'This was the value which I entered.', 'start': 1421.894, 'duration': 1.361}, {'end': 1431.901, 'text': 'Now there was one more feature which I told you in this new ID which had which I said it has a failover mechanism for your locating techniques.', 'start': 1423.795, 'duration': 8.106}, {'end': 1433.182, 'text': 'Now that is what this is.', 'start': 1432.241, 'duration': 0.941}, {'end': 1437.384, 'text': 'Now if you look here this ID is equal to two tab search text box.', 'start': 1433.482, 'duration': 3.902}, {'end': 1452.093, 'text': 'This is nothing but that search box where we entered the text iPhone and it has certain identification through which this ID identifies that web element and that has multiple options to select that particular search box.', 'start': 1437.604, 'duration': 14.489}, {'end': 1455.715, 'text': 'So right now what it has used is ID is equal to two tab search box.', 'start': 1452.473, 'duration': 3.242}, {'end': 1463.165, 'text': 'However, if you know the different locating techniques, you will be able to see here that it has other techniques also,', 'start': 1456.115, 'duration': 7.05}, {'end': 1467.05, 'text': 'which it has identified like the name and the CSS and the XPath.', 'start': 1463.165, 'duration': 3.885}, {'end': 1473.618, 'text': 'So how does this help in failover is say tomorrow if amazon.in website changes the ID of this element.', 'start': 1467.29, 'duration': 6.328}, {'end': 1476.3, 'text': 'You are not going to come and rewrite the scripts again.', 'start': 1474.199, 'duration': 2.101}, {'end': 1478.422, 'text': 'Instead, by using the same script.', 'start': 1476.641, 'duration': 1.781}, {'end': 1485.986, 'text': 'what it will do is if this particular ID fails, if it is unable to find the element using the first locator, which is the ID,', 'start': 1478.422, 'duration': 7.564}, {'end': 1493.631, 'text': 'it simply moves to the next available ones and it tries to search for that element until one of these becomes true.', 'start': 1485.986, 'duration': 7.645}, {'end': 1496.513, 'text': 'That is what was the failure mechanism which has got added now.', 'start': 1493.951, 'duration': 2.562}, {'end': 1502.936, 'text': "It's a very brilliant feature because most of our test cases break because of element location techniques.", 'start': 1496.913, 'duration': 6.023}, {'end': 1504.597, 'text': "Let's come back to this.", 'start': 1503.837, 'duration': 0.76}, {'end': 1506.779, 'text': 'So then we added an assert title.', 'start': 1505.018, 'duration': 1.761}, {'end': 1512.042, 'text': 'So what is assert title here? It simply captures the title of that particular page and it checks.', 'start': 1507.219, 'duration': 4.823}, {'end': 1512.942, 'text': 'This is all.', 'start': 1512.502, 'duration': 0.44}, {'end': 1514.283, 'text': 'A very simple test case.', 'start': 1513.162, 'duration': 1.121}, {'end': 1519.266, 'text': 'So what we will do now is we will stop the recording and then I have also given a closed browser.', 'start': 1514.303, 'duration': 4.963}], 'summary': 'Recorded and executed a test case for amazon search with selenium ide, featuring a failover mechanism for locating techniques.', 'duration': 191.093, 'max_score': 1328.173, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY1328173.jpg'}], 'start': 4.909, 'title': 'Introduction to selenium testing', 'summary': 'Explores challenges of manual testing, evolution of selenium as an automated testing tool, its components, advantages, limitations, emphasizing the birth of selenium and its key components: selenium ide, selenium rc, selenium webdriver, and selenium grid.', 'chapters': [{'end': 200.999, 'start': 4.909, 'title': 'Introduction to selenium testing', 'summary': 'Explores the challenges of manual testing, the evolution of selenium as an automated testing tool, its components, advantages, and limitations, and the basics of manual testing, with a focus on testing a facebook application manually.', 'duration': 196.09, 'highlights': ['Selenium suite of tools has multiple components, each with its own advantages and limitations. The chapter discusses the various components of the Selenium suite of tools, highlighting their individual advantages and limitations.', 'Manual testing involves the physical execution of test cases against applications to detect bugs and errors. The chapter emphasizes the manual execution of test cases to detect bugs and errors in software applications.', 'The chapter explains the process of testing a Facebook application manually, covering various test cases, data sets, links, elements, and different types of tests. It provides a detailed explanation of the manual testing process for a Facebook application, including test cases, data sets, links, elements, and various types of tests.']}, {'end': 948.189, 'start': 201.199, 'title': 'Challenges of manual testing and advantages of selenium automation', 'summary': 'Explains the challenges of manual testing, highlighting the time-consuming process, the error-prone nature, and the limitations in scope, and emphasizes the advantages of selenium automation, including faster execution, reduced human resources, cost-effectiveness, and the ability to rerun test cases as required. it also provides insights into the birth of selenium and its key components: selenium ide, selenium rc, selenium webdriver, and selenium grid.', 'duration': 746.99, 'highlights': ['Challenges of Manual Testing Manual testing is time-consuming, error-prone, and has limitations in scope, leading to the need for automation.', 'Advantages of Selenium Automation Selenium automation offers faster execution, reduced human resources, cost-effectiveness, and the ability to rerun test cases as required.', 'Birth of Selenium Selenium was introduced in 2004 by Jason Huggins to address the inefficiencies of manual testing, and it has become one of the most powerful tools for testing web applications.', 'Selenium Components Selenium comprises four major components: Selenium IDE, Selenium RC, Selenium WebDriver, and Selenium Grid, each serving specific purposes in web application test automation.']}, {'end': 1294.079, 'start': 948.749, 'title': 'Automated test script execution', 'summary': 'Introduces an ide for automated test script execution, demonstrating how to record, execute, and debug test cases, control test execution speed, and analyze logs and references in real-time.', 'duration': 345.33, 'highlights': ['The IDE provides options to record, execute, and debug test cases, with the ability to control test execution speed, view logs, and references, and analyze test results in real-time.', "The test script logs into Facebook using dummy credentials and executes successfully, providing a clear demonstration of the IDE's capabilities.", "The IDE's toolbar allows users to control test execution, including options to record scripts, run all tests sequentially, or run the current test, and provides a debugger for step execution control.", "The IDE's address bar allows users to enter the URL for conducting tests and maintains a history of URLs used for test execution, providing flexibility and convenience.", "The log area records each command's execution status, with successful commands displayed in green and failed commands in red, offering real-time visibility into test case execution."]}, {'end': 1657.679, 'start': 1294.119, 'title': 'Automating amazon search with selenium ide', 'summary': 'Explains the process of automating amazon search for iphones using selenium ide, including recording the test steps, adding assertions, and handling test case failures, demonstrating the failover mechanism for locating techniques and the process of modifying and analyzing test case results.', 'duration': 363.56, 'highlights': ['The chapter explains the process of automating Amazon search for iPhones using Selenium IDE, including recording the test steps, adding assertions, and handling test case failures, demonstrating the failover mechanism for locating techniques and the process of modifying and analyzing test case results.', 'The IDE records the steps for opening the Amazon.in URL, searching for iPhones, and adding an assertion on the page title, providing a convenient way to create automation scripts. It also includes a failover mechanism for locating techniques, reducing the need for rewriting scripts when element identification changes.', "The test case execution is demonstrated, including the successful execution and intentional failure to showcase the IDE's behavior and the process of identifying test case failures in the log, highlighting the simplicity of using Selenium IDE for automation.", 'The chapter emphasizes the benefits of Selenium IDE, such as simplifying the automation of test cases, handling element location changes, and easily modifying and analyzing test case results for efficient testing.']}], 'duration': 1652.77, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY4909.jpg', 'highlights': ['Selenium comprises four major components: Selenium IDE, Selenium RC, Selenium WebDriver, and Selenium Grid, each serving specific purposes in web application test automation.', 'Selenium automation offers faster execution, reduced human resources, cost-effectiveness, and the ability to rerun test cases as required.', 'The chapter explains the process of automating Amazon search for iPhones using Selenium IDE, including recording the test steps, adding assertions, and handling test case failures, demonstrating the failover mechanism for locating techniques and the process of modifying and analyzing test case results.', 'The chapter emphasizes the benefits of Selenium IDE, such as simplifying the automation of test cases, handling element location changes, and easily modifying and analyzing test case results for efficient testing.', 'The IDE provides options to record, execute, and debug test cases, with the ability to control test execution speed, view logs, and references, and analyze test results in real-time.']}, {'end': 3793.3, 'segs': [{'end': 1800.041, 'src': 'embed', 'start': 1754.766, 'weight': 0, 'content': [{'end': 1762.312, 'text': 'So when Jason Huggins introduced Selenium you know the tool was called as JavaScript program and then that was also called as a Selenium core.', 'start': 1754.766, 'duration': 7.546}, {'end': 1770.958, 'text': 'So every HTML has a JavaScript statements which are executed by web browser and there is a JavaScript engine which helps in executing this command.', 'start': 1762.632, 'duration': 8.326}, {'end': 1773.761, 'text': 'Now this RCA had one major issue.', 'start': 1771.278, 'duration': 2.483}, {'end': 1775.122, 'text': 'Now, what was that issue?', 'start': 1774.061, 'duration': 1.061}, {'end': 1779.686, 'text': 'Say, for example, you have a test script, say test.javascript here,', 'start': 1775.442, 'duration': 4.244}, {'end': 1784.171, 'text': 'which you are trying to access elements from anywhere from the google.com domain.', 'start': 1779.686, 'duration': 4.485}, {'end': 1792.579, 'text': 'So what used to happen is every element which is accessible are the elements which can belong only to google.com domain.', 'start': 1784.511, 'duration': 8.068}, {'end': 1795.98, 'text': 'Like say for example mail, the search or the drive.', 'start': 1792.859, 'duration': 3.121}, {'end': 1800.041, 'text': 'So any elements from this can be accessible through your test scripts.', 'start': 1796.14, 'duration': 3.901}], 'summary': 'Selenium introduced as javascript program, had issue accessing elements from google.com domain.', 'duration': 45.275, 'max_score': 1754.766, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY1754766.jpg'}, {'end': 2282.629, 'src': 'heatmap', 'start': 2087.867, 'weight': 0.812, 'content': [{'end': 2089.748, 'text': 'it is not an IDE.', 'start': 2087.867, 'duration': 1.881}, {'end': 2091.509, 'text': 'and how does this work actually?', 'start': 2089.748, 'duration': 1.761}, {'end': 2099.695, 'text': 'so test cases are created and executed using web elements or objects, using the object locator and the web driver method.', 'start': 2091.509, 'duration': 8.186}, {'end': 2106.26, 'text': 'so when I do a demo, you will understand what this web driver methods are and how do we locate the web elements on the web page.', 'start': 2099.695, 'duration': 6.565}, {'end': 2108.981, 'text': 'It does not require a core engine like RC.', 'start': 2106.88, 'duration': 2.101}, {'end': 2110.381, 'text': 'So it is pretty fast.', 'start': 2109.321, 'duration': 1.06}, {'end': 2119.163, 'text': 'Why? Because web driver interacts directly with the browser and it does not have that intermediate server like the RC had.', 'start': 2110.821, 'duration': 8.342}, {'end': 2120.784, 'text': 'So each browser.', 'start': 2119.683, 'duration': 1.101}, {'end': 2126.085, 'text': 'in this case what happens is each browser has its own driver on which the application runs,', 'start': 2120.784, 'duration': 5.301}, {'end': 2132.387, 'text': 'and this driver is responsible to make the browser understand the commands which you will be passing from the script.', 'start': 2126.085, 'duration': 6.302}, {'end': 2136.689, 'text': 'like, say, for example, click of a button or you want to enter some text.', 'start': 2133.047, 'duration': 3.642}, {'end': 2141.292, 'text': 'so through your script you tell which browser you want to work with, say chrome,', 'start': 2136.689, 'duration': 4.603}, {'end': 2151.438, 'text': 'and then the chrome driver is responsible for interpreting your instructions and to execute it on the web application launched on the chrome browser.', 'start': 2141.292, 'duration': 10.146}, {'end': 2156.982, 'text': 'so, like rc, webdriver also supports multiple programming languages in which you can write your test scripts.', 'start': 2151.438, 'duration': 5.544}, {'end': 2164.745, 'text': 'So another advantage of WebDriver is it supports various frameworks like TestNG, JUnit, NUnit and ReportNG.', 'start': 2158.137, 'duration': 6.608}, {'end': 2167.909, 'text': 'So, when we talk about the limitations of WebDriver,', 'start': 2165.446, 'duration': 2.463}, {'end': 2177.24, 'text': 'you will appreciate how this support for various frameworks and tool help in making the Selenium a complete automation solution for web applications.', 'start': 2167.909, 'duration': 9.331}, {'end': 2181.092, 'text': "So let's look at the architecture of WebDriver at a high level.", 'start': 2178.069, 'duration': 3.023}, {'end': 2185.277, 'text': 'What is in WebDriver? So WebDriver consists of four major components.', 'start': 2181.753, 'duration': 3.524}, {'end': 2192.285, 'text': 'The first one is we have got client libraries, or what we also call it as language bindings.', 'start': 2186.158, 'duration': 6.127}, {'end': 2200.508, 'text': 'So, since Selenium supports multiple languages and you are free to use any of the supported languages to create your automation script,', 'start': 2193.426, 'duration': 7.082}, {'end': 2207.45, 'text': 'these libraries are made available on your Selenium website, which you need to download and then write your scripts accordingly.', 'start': 2200.508, 'duration': 6.942}, {'end': 2210.53, 'text': "So let's go and see from where do we download this.", 'start': 2207.95, 'duration': 2.58}, {'end': 2221.86, 'text': "So if I go to my browser, So seleniumhq.org, right? So if you're working with Selenium, this website is your Bible.", 'start': 2211.011, 'duration': 10.849}, {'end': 2229.285, 'text': 'So anything and everything you need to know about Selenium, right? You need to come here and use all the tabs here in this website.', 'start': 2222.16, 'duration': 7.125}, {'end': 2232.587, 'text': 'So, right now, what we are going to look at is what are those language bindings?', 'start': 2229.685, 'duration': 2.902}, {'end': 2236.25, 'text': "So for that I'll have to go to this download tab here, okay?", 'start': 2232.687, 'duration': 3.563}, {'end': 2242.034, 'text': 'And if you scroll down here, you will see something like Selenium client and web driver language bindings.', 'start': 2236.67, 'duration': 5.364}, {'end': 2248.379, 'text': 'and for each of the supported language of selenium you have a download link right.', 'start': 2242.694, 'duration': 5.685}, {'end': 2254.944, 'text': "so say, for example, if you're working with java here, what you need to do is you need to download your java language binding.", 'start': 2248.379, 'duration': 6.565}, {'end': 2256.925, 'text': "so let's go back to the presentation.", 'start': 2254.944, 'duration': 1.981}, {'end': 2259.207, 'text': 'so this is where your language bindings are available.', 'start': 2256.925, 'duration': 2.282}, {'end': 2267.194, 'text': "next, so selenium provides lots of aps for us to interact with the browser, And when we do the demo, I'll be showing you some of these APIs right?", 'start': 2259.207, 'duration': 7.987}, {'end': 2269.056, 'text': 'And these are nothing but the REST APIs.', 'start': 2267.254, 'duration': 1.802}, {'end': 2273.58, 'text': 'And everything, whatever we do through the script happens through the REST calls.', 'start': 2269.857, 'duration': 3.723}, {'end': 2275.622, 'text': 'Then we have a JSON wire protocol.', 'start': 2273.86, 'duration': 1.762}, {'end': 2278.825, 'text': 'What is JSON? JavaScript Object Notation.', 'start': 2276.083, 'duration': 2.742}, {'end': 2282.629, 'text': 'It is nothing but a standard for exchanging data over the web.', 'start': 2279.366, 'duration': 3.263}], 'summary': 'Webdriver enables fast, direct browser interaction, supports multiple languages and frameworks, and consists of client libraries, rest apis, and json wire protocol.', 'duration': 194.762, 'max_score': 2087.867, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY2087867.jpg'}, {'end': 2455.359, 'src': 'embed', 'start': 2431.681, 'weight': 3, 'content': [{'end': 2438.025, 'text': 'but then we have other tools which can be used along with selenium, like auto it, and securely.', 'start': 2431.681, 'duration': 6.344}, {'end': 2445.911, 'text': "so if you look at all this, selenium still provides a complete solution for your automation need, and that's the beauty of selenium,", 'start': 2438.025, 'duration': 7.886}, {'end': 2450.474, 'text': 'and that is why it makes the most popular tool of today for automation.', 'start': 2445.911, 'duration': 4.563}, {'end': 2455.359, 'text': "Okay, let's do a quick comparison between the Selenium RC and the WebDriver.", 'start': 2451.417, 'duration': 3.942}], 'summary': 'Selenium is the most popular tool for automation, offering a complete solution for automation needs and used alongside tools like autoit.', 'duration': 23.678, 'max_score': 2431.681, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY2431681.jpg'}, {'end': 3228.825, 'src': 'heatmap', 'start': 2468.931, 'weight': 0.843, 'content': [{'end': 2471.732, 'text': 'It is slower in RC and much faster in WebDriver.', 'start': 2468.931, 'duration': 2.801}, {'end': 2479.636, 'text': 'Why?? Because in WebDriver we have eliminated that complete layer of Selenium server right that the RC server,', 'start': 2472.052, 'duration': 7.584}, {'end': 2483.878, 'text': 'and we established a direct communication with the browser through browser drivers.', 'start': 2479.636, 'duration': 4.242}, {'end': 2487.22, 'text': 'It requires an RC server to interact with the browsers.', 'start': 2484.818, 'duration': 2.402}, {'end': 2488.281, 'text': 'We just talked about it.', 'start': 2487.28, 'duration': 1.001}, {'end': 2492.004, 'text': 'And whereas WebDriver can directly interact with the browser.', 'start': 2488.761, 'duration': 3.243}, {'end': 2494.146, 'text': 'So RC again,', 'start': 2492.965, 'duration': 1.181}, {'end': 2502.672, 'text': 'we talked about this as one of the limitations that we have a lot of redundant APIs which kept developers guessing as which API to use for what functionality.', 'start': 2494.146, 'duration': 8.526}, {'end': 2506.415, 'text': 'However, WebDriver offers pretty clean APIs to work with.', 'start': 2503.313, 'duration': 3.102}, {'end': 2515.363, 'text': 'RC did not offer any support for headless browsers whereas in WebDriver you do have a support for using headless browsers.', 'start': 2507.518, 'duration': 7.845}, {'end': 2519.086, 'text': "Let's see the WebDriver in action now.", 'start': 2517.405, 'duration': 1.681}, {'end': 2520.547, 'text': 'Now for the demo.', 'start': 2519.586, 'duration': 0.961}, {'end': 2527.231, 'text': 'we will use this particular use case and what this use case says is navigate to the official SimplyLearn website,', 'start': 2520.547, 'duration': 6.684}, {'end': 2532.235, 'text': 'then type the Selenium in search bar and click on it and click on the Selenium 3.0 training.', 'start': 2527.231, 'duration': 5.004}, {'end': 2537.298, 'text': 'So we are basically searching for Selenium 3.0 training on the SimplyLearn website.', 'start': 2532.715, 'duration': 4.583}, {'end': 2542.28, 'text': "First let's do the steps manually and then we will go ahead and write the automation script.", 'start': 2537.678, 'duration': 4.602}, {'end': 2543.921, 'text': "So let's go to my browser.", 'start': 2542.68, 'duration': 1.241}, {'end': 2548.643, 'text': "On my browser what I'll do is I'll let me first launch the Simply Learn website.", 'start': 2544.601, 'duration': 4.042}, {'end': 2558.345, 'text': 'Okay, and here what my use case step says is I need to search for selenium and click on the search button.', 'start': 2550.464, 'duration': 7.881}, {'end': 2564.908, 'text': 'so once i do that, it is going to give me a complete list of all kind of selenium trainings which is available with simple learn.', 'start': 2558.345, 'duration': 6.563}, {'end': 2568.269, 'text': "and what i'm interested in is the selenium 3.0 training here.", 'start': 2564.908, 'duration': 3.361}, {'end': 2571.591, 'text': 'once i find this on the web page, i need to go and click on that.', 'start': 2568.269, 'duration': 3.322}, {'end': 2575.893, 'text': 'Alright. so this is all the steps which we are going to perform in this use case.', 'start': 2572.091, 'duration': 3.802}, {'end': 2581.475, 'text': "Okay, now so for writing the test cases, I'll be using an ID which is Eclipse.", 'start': 2576.353, 'duration': 5.122}, {'end': 2587.398, 'text': 'I have already installed my Eclipse and also I have installed Selenium in this instance of my Eclipse.', 'start': 2581.855, 'duration': 5.543}, {'end': 2594.081, 'text': 'Alright, so if you can see the reference library folder here, you will see all the jars which are required for the Selenium to work.', 'start': 2587.778, 'duration': 6.303}, {'end': 2599.103, 'text': 'Next, another prereq which is required for Selenium and that is your driver files.', 'start': 2594.441, 'duration': 4.662}, {'end': 2605.028, 'text': 'Now every browser which you want to work with has its own driver file to execute your Selenium scripts.', 'start': 2599.505, 'duration': 5.523}, {'end': 2610.91, 'text': "And since for this demo I'll be working with the Firefox browser, I will need a driver file for Firefox.", 'start': 2605.288, 'duration': 5.622}, {'end': 2617.774, 'text': 'Now driver file for Firefox is the Gecko driver which I have already downloaded and placed in my folder called drivers.', 'start': 2611.251, 'duration': 6.523}, {'end': 2621.044, 'text': "Now where did I download this from? Let's go ahead and see that.", 'start': 2618.502, 'duration': 2.542}, {'end': 2628.048, 'text': 'So if I go back to my browser and if you go to your seleniumhq.website you have to go to this download tab here.', 'start': 2621.384, 'duration': 6.664}, {'end': 2634.051, 'text': 'In the download tab when you scroll down you will see something like third-party drivers, bindings and plugins.', 'start': 2628.368, 'duration': 5.683}, {'end': 2638.534, 'text': 'In this, you will see the list of all the browsers which is supported by selenium,', 'start': 2634.391, 'duration': 4.143}, {'end': 2642.656, 'text': 'and against each of this browser you will find a link which has the driver files.', 'start': 2638.534, 'duration': 4.122}, {'end': 2644.838, 'text': "Now, since we'll be using the Gecko driver.", 'start': 2642.997, 'duration': 1.841}, {'end': 2653.332, 'text': "This is the link where you need to go to and, depending on which operating system which you're working on, you need to download that particular file.", 'start': 2645.782, 'duration': 7.55}, {'end': 2656.516, 'text': "Now since I'm working on Mac, this is the file which I'm using.", 'start': 2653.652, 'duration': 2.864}, {'end': 2660.381, 'text': "If you're a Windows user, you need to download this zip file and unzip it.", 'start': 2656.857, 'duration': 3.524}, {'end': 2662.624, 'text': 'So once you unzip that, you would..', 'start': 2660.782, 'duration': 1.842}, {'end': 2669.263, 'text': 'get a file called Gecko driver for your Firefox or a Chrome driver for your Chrome browser.', 'start': 2663.641, 'duration': 5.622}, {'end': 2676.485, 'text': 'And then what you do is you just create a directory called drivers under your project and just place the driver files here.', 'start': 2669.463, 'duration': 7.022}, {'end': 2679.186, 'text': 'So these are the two prereqs for your Selenium.', 'start': 2676.785, 'duration': 2.401}, {'end': 2687.129, 'text': 'One is importing your jar files like this and then having your drivers downloaded and keep them under a folder where you can reference to.', 'start': 2679.426, 'duration': 7.703}, {'end': 2689.65, 'text': "Okay So now we'll go ahead and create a class.", 'start': 2687.349, 'duration': 2.301}, {'end': 2695.488, 'text': "I already have a package created in this project, so I'll use this project and create a new class.", 'start': 2690.37, 'duration': 5.118}, {'end': 2701.737, 'text': "So I'll say create new Java class and let's call this as search training.", 'start': 2696.274, 'duration': 5.463}, {'end': 2705.46, 'text': "I'll be using a public static void main and I'll click on finish.", 'start': 2702.198, 'duration': 3.262}, {'end': 2709.422, 'text': "So let's remove this auto generated lines as we do not need them.", 'start': 2706.08, 'duration': 3.342}, {'end': 2710.062, 'text': 'All right.', 'start': 2709.762, 'duration': 0.3}, {'end': 2721.249, 'text': 'Now, the first statement which you need to write before even you start writing the rest of your code is what you need to do is you need to define or declare your driver variable using your class web driver?', 'start': 2710.363, 'duration': 10.886}, {'end': 2725.532, 'text': "So what I would do is I'll say web driver driver.", 'start': 2721.67, 'duration': 3.862}, {'end': 2728.204, 'text': 'done all right.', 'start': 2726.704, 'duration': 1.5}, {'end': 2732.185, 'text': 'now you will see that this id is going to flash some errors for you.', 'start': 2728.204, 'duration': 3.981}, {'end': 2737.387, 'text': 'that means it is going to ask you to import certain libraries, which is required by the web driver.', 'start': 2732.185, 'duration': 5.202}, {'end': 2743.388, 'text': 'so simply just go ahead and say import web driver from org.opensq.selenium.', 'start': 2737.387, 'duration': 6.001}, {'end': 2745.969, 'text': 'this is the package which we will need, all right.', 'start': 2743.388, 'duration': 2.581}, {'end': 2753.39, 'text': "so you have a driver created which is of the class web driver, and now, after this, i'm going to create three methods.", 'start': 2745.969, 'duration': 7.421}, {'end': 2753.95, 'text': 'all right.', 'start': 2753.39, 'duration': 0.56}, {'end': 2759.332, 'text': 'so first method i will have for launching the Firefox browser okay,', 'start': 2753.95, 'duration': 5.382}, {'end': 2767.816, 'text': 'and then I will write a simple method for searching selenium training and clicking on it.', 'start': 2759.332, 'duration': 8.484}, {'end': 2770.527, 'text': "This is the actual use case, what we'll be doing.", 'start': 2768.686, 'duration': 1.841}, {'end': 2776.05, 'text': "And then, third method I'm going to write is just to close the browser which I'm going to be opening right?", 'start': 2770.947, 'duration': 5.103}, {'end': 2780.572, 'text': "So these are the different methods which I'll be creating and from the public static void main.", 'start': 2776.27, 'duration': 4.302}, {'end': 2783.453, 'text': 'I will just call these methods one after the other, okay?', 'start': 2780.572, 'duration': 2.881}, {'end': 2785.354, 'text': "So let's go ahead and write the first method.", 'start': 2783.653, 'duration': 1.701}, {'end': 2788.576, 'text': 'Now my first method is launching the Firefox browser.', 'start': 2785.554, 'duration': 3.022}, {'end': 2796.42, 'text': "So I'll say public void since my return type is null or there is no return type for this, let's call it as launch browser.", 'start': 2788.856, 'duration': 7.564}, {'end': 2803.654, 'text': 'okay, all right now in this, for launching any browser, i need to mention two steps now.', 'start': 2797.304, 'duration': 6.35}, {'end': 2807.82, 'text': 'the first step is where i need to do a system dot set property.', 'start': 2803.654, 'duration': 4.166}, {'end': 2811.025, 'text': "okay, let's do that first and then i'll explain what this does.", 'start': 2807.82, 'duration': 3.205}, {'end': 2814.249, 'text': "i'll just say system dot set property.", 'start': 2811.025, 'duration': 3.224}, {'end': 2816.609, 'text': 'so this accepts a key and a value pair.', 'start': 2814.249, 'duration': 2.36}, {'end': 2818.17, 'text': 'so what is my key here?', 'start': 2816.609, 'duration': 1.561}, {'end': 2825.972, 'text': 'my key here is web driver dot gecko dot driver, and i need to provide a value.', 'start': 2818.17, 'duration': 7.802}, {'end': 2829.934, 'text': 'so value is nothing but the path to the gecko driver.', 'start': 2825.972, 'duration': 3.962}, {'end': 2837.116, 'text': "and we know that this gecko driver which i'm going to use here is right here in the same project path under the drivers folder.", 'start': 2829.934, 'duration': 7.182}, {'end': 2840.277, 'text': "okay, and that is what the path which i'm going to provide here.", 'start': 2837.116, 'duration': 3.161}, {'end': 2847.56, 'text': 'so here simply i need to say drivers, slash gecko driver, g-e-c-k-o.', 'start': 2840.277, 'duration': 7.283}, {'end': 2848.621, 'text': 'all right, done.', 'start': 2847.56, 'duration': 1.061}, {'end': 2855.763, 'text': "and let me close this sentence all right now, since i'm a mac user, my gecko driver installable is just the name gecko driver.", 'start': 2848.621, 'duration': 7.142}, {'end': 2863.106, 'text': "if you're a windows user and if you're running your seri namescripts on the windows machine, you need to provide a complete path to this,", 'start': 2855.763, 'duration': 7.343}, {'end': 2869.189, 'text': 'including dot exe, because driver executable on your machines is going to be gecko driver dot exe.', 'start': 2863.106, 'duration': 6.083}, {'end': 2869.649, 'text': 'all right.', 'start': 2869.369, 'duration': 0.28}, {'end': 2873.17, 'text': 'so just make sure that your path, which you mentioned here in the system.', 'start': 2869.649, 'duration': 3.521}, {'end': 2875.271, 'text': 'dot set property is the correct path.', 'start': 2873.17, 'duration': 2.101}, {'end': 2882.934, 'text': 'okay, then the next thing what we need to do is, I need to just say driver is equal to new Firefox driver.', 'start': 2875.271, 'duration': 7.663}, {'end': 2888.276, 'text': 'okay, so this command new Firefox driver creates an instance of the Firefox browser.', 'start': 2882.934, 'duration': 5.342}, {'end': 2890.017, 'text': 'now this is also flagging me error.', 'start': 2888.276, 'duration': 1.741}, {'end': 2895.679, 'text': "why? because again, it's going to ask me to import the packages where the Firefox driver class is present.", 'start': 2890.017, 'duration': 5.662}, {'end': 2896.639, 'text': 'okay, we did that.', 'start': 2895.679, 'duration': 0.96}, {'end': 2901.401, 'text': 'now these two lines are responsible for launching the Firefox browser form.', 'start': 2896.639, 'duration': 4.762}, {'end': 2902.241, 'text': 'so this is done.', 'start': 2901.401, 'duration': 0.84}, {'end': 2903.961, 'text': "so what's my next step in the use case?", 'start': 2902.241, 'duration': 1.72}, {'end': 2905.822, 'text': 'now I need to launch the website.', 'start': 2903.961, 'duration': 1.861}, {'end': 2906.422, 'text': 'simply learn.', 'start': 2905.822, 'duration': 0.6}, {'end': 2909.683, 'text': 'so for that we have a command called driver dot.', 'start': 2906.422, 'duration': 3.261}, {'end': 2911.664, 'text': 'get driver dot, get.', 'start': 2909.683, 'duration': 1.981}, {'end': 2917.085, 'text': "what it does is whatever URL you're going to give it here in this double quotes as an argument.", 'start': 2911.664, 'duration': 5.421}, {'end': 2920.948, 'text': "it is going to launch that particular website And for us it's a Simply Learn website.", 'start': 2917.085, 'duration': 3.863}, {'end': 2931.32, 'text': 'So what I do as a best practice is, instead of typing out the URL, I go to my browser, launch that URL which I want to test, and I simply copy it,', 'start': 2920.968, 'duration': 10.352}, {'end': 2933.403, 'text': 'come back to your Eclipse and just simply paste it.', 'start': 2931.32, 'duration': 2.083}, {'end': 2936.566, 'text': 'So this ensures that I do not make any mistakes in the URL.', 'start': 2933.583, 'duration': 2.983}, {'end': 2938.147, 'text': 'so done.', 'start': 2937.327, 'duration': 0.82}, {'end': 2944.811, 'text': 'so our first method is ready, where we are launching the browser, which is our Firefox browser, and then launching the simply learn website.', 'start': 2938.147, 'duration': 6.664}, {'end': 2946.071, 'text': 'now the next method.', 'start': 2944.811, 'duration': 1.26}, {'end': 2947.312, 'text': 'what is my next method?', 'start': 2946.071, 'duration': 1.241}, {'end': 2954.516, 'text': 'in my next method, I need to give the search string to search selenium training on this particular website.', 'start': 2947.312, 'duration': 7.204}, {'end': 2956.877, 'text': 'now. for that, we need to do few things.', 'start': 2954.516, 'duration': 2.361}, {'end': 2957.837, 'text': 'what are those few things?', 'start': 2956.877, 'duration': 0.96}, {'end': 2959.238, 'text': "let's go to the website again.", 'start': 2957.837, 'duration': 1.401}, {'end': 2962.099, 'text': 'alright, so let me relaunch this.', 'start': 2959.238, 'duration': 2.861}, {'end': 2962.88, 'text': "let's close this.", 'start': 2962.099, 'duration': 0.781}, {'end': 2967.763, 'text': "okay, let me remove all this and let's go to the home page first.", 'start': 2963.3, 'duration': 4.463}, {'end': 2968.864, 'text': 'okay, this is my home page.', 'start': 2967.763, 'duration': 1.101}, {'end': 2972.827, 'text': 'so, as you saw, when i did a manual testing of this, i entered the text here.', 'start': 2968.864, 'duration': 3.963}, {'end': 2977.59, 'text': 'so now, since i have to write a script for this first, i need to identify what this element is.', 'start': 2972.827, 'duration': 4.763}, {'end': 2982.553, 'text': "for that, what i'm going to do is i'm just going to say right click here and i'll say inspect element all right.", 'start': 2977.59, 'duration': 4.963}, {'end': 2983.694, 'text': 'now this element.', 'start': 2982.553, 'duration': 1.141}, {'end': 2987.557, 'text': "let's see what attribute it has, which i can use for finding this element.", 'start': 2983.694, 'duration': 3.863}, {'end': 2989.839, 'text': 'so i i see that there is an id present.', 'start': 2987.557, 'duration': 2.282}, {'end': 2996.103, 'text': "so what i'm going to do is i'm just going to simply use this id and then i'll just copy this id from here.", 'start': 2989.839, 'duration': 6.264}, {'end': 2997.464, 'text': 'go back to eclipse.', 'start': 2996.103, 'duration': 1.361}, {'end': 2998.685, 'text': "let's write a method first.", 'start': 2997.464, 'duration': 1.221}, {'end': 3001.007, 'text': "so i'll say public void.", 'start': 2998.685, 'duration': 2.322}, {'end': 3006.131, 'text': 'and what do we give the method name, say search, training or just search All right.', 'start': 3001.007, 'duration': 5.124}, {'end': 3016.917, 'text': "now, in this I need to use a command called driver.findElementBy ID is what I'm going to use as a locating technique and in double quotes,", 'start': 3006.131, 'duration': 10.786}, {'end': 3020.579, 'text': "the ID which I copied from the website is what I'm going to paste here, okay?", 'start': 3016.917, 'duration': 3.662}, {'end': 3028, 'text': "and then what am i going to do on this element is i need to send that text, the text which i'm going to search for, which is selenium.", 'start': 3020.999, 'duration': 7.001}, {'end': 3033.161, 'text': "so i'll just say send keys and whatever text i want to send, i need to give it in double quotes.", 'start': 3028, 'duration': 5.161}, {'end': 3034.762, 'text': 'so for that selenium.', 'start': 3033.161, 'duration': 1.601}, {'end': 3035.542, 'text': 'so this is done.', 'start': 3034.762, 'duration': 0.78}, {'end': 3040.343, 'text': "so now i've entered the text here and after entering the text i need to click on this button.", 'start': 3035.542, 'duration': 4.801}, {'end': 3043.484, 'text': 'so for that i need to first know what that button is.', 'start': 3040.343, 'duration': 3.141}, {'end': 3045.504, 'text': "so let's inspect that search button.", 'start': 3043.484, 'duration': 2.02}, {'end': 3052.389, 'text': 'okay, now, if you look at the search button other than the tag which is span and the class name, i do not have anything here, all right.', 'start': 3045.504, 'duration': 6.885}, {'end': 3057.232, 'text': 'so what i can do is i can either use the class name or i can write an xpath.', 'start': 3052.389, 'duration': 4.843}, {'end': 3062.916, 'text': 'since this is a demo which we have already used id locating technique i would go ahead and use the xpath here.', 'start': 3057.232, 'duration': 5.684}, {'end': 3067.359, 'text': 'so for me to construct an xpath, uh, i will copy this class first.', 'start': 3062.916, 'duration': 4.443}, {'end': 3072.261, 'text': 'okay, and then i already have a crow path installed on my firefox.', 'start': 3067.359, 'duration': 4.902}, {'end': 3074.882, 'text': "so i'll use the crow path and first test my x bar.", 'start': 3072.261, 'duration': 2.621}, {'end': 3076.863, 'text': "so i'll just say double slash.", 'start': 3074.882, 'duration': 1.981}, {'end': 3078.304, 'text': "let's see what was that element.", 'start': 3076.863, 'duration': 1.441}, {'end': 3079.724, 'text': 'it has a span tag.', 'start': 3078.304, 'duration': 1.42}, {'end': 3088.347, 'text': "okay, so i'll have to use span and at class equal to, and i'll just copy the class name here and let's see if we can identify that element.", 'start': 3079.724, 'duration': 8.623}, {'end': 3089.808, 'text': 'yeah, so it is able to identify.', 'start': 3088.347, 'duration': 1.461}, {'end': 3092.549, 'text': "so i'll just use this x path in my code.", 'start': 3089.808, 'duration': 2.741}, {'end': 3097.971, 'text': "so i'll go back to eclipse and i'll say driver dot, find element by dot, x path.", 'start': 3092.549, 'duration': 5.422}, {'end': 3102.907, 'text': "and the XPath which I just copied from crow path is what I'm going to paste here.", 'start': 3098.741, 'duration': 4.166}, {'end': 3104.77, 'text': 'and what is the action I need to do here?', 'start': 3102.907, 'duration': 1.863}, {'end': 3106.833, 'text': 'I need to say click done.', 'start': 3104.77, 'duration': 2.063}, {'end': 3114.103, 'text': 'so I have reached a stage where I have entered this selenium okay, and then I have clicked on the search button.', 'start': 3106.833, 'duration': 7.27}, {'end': 3120.429, 'text': 'once I do this, I know that expected result is I should be able to find this particular link here.', 'start': 3114.103, 'duration': 6.326}, {'end': 3121.891, 'text': 'selenium 3.2, training.', 'start': 3120.429, 'duration': 1.462}, {'end': 3123.692, 'text': 'okay, and I should be able to click on that.', 'start': 3121.891, 'duration': 1.801}, {'end': 3126.154, 'text': 'so for that again I need to inspect this.', 'start': 3123.692, 'duration': 2.462}, {'end': 3128.236, 'text': "so let's inspect this selenium 3.2.", 'start': 3126.154, 'duration': 2.082}, {'end': 3129.137, 'text': 'all right.', 'start': 3128.236, 'duration': 0.901}, {'end': 3130.958, 'text': 'so now, what are the elements this has?', 'start': 3129.137, 'duration': 1.821}, {'end': 3138.024, 'text': 'now this particular element has attributes, like it has a tag h2, then it has got some class names and some other attributes.', 'start': 3130.958, 'duration': 7.066}, {'end': 3143.788, 'text': 'so I would again would like to use a XPath here now, this time, while using the XPath,', 'start': 3138.024, 'duration': 5.764}, {'end': 3149.312, 'text': "I'm going to make use of a text functionality so that I can search for this particular text.", 'start': 3143.788, 'duration': 5.524}, {'end': 3151.053, 'text': "so I'll simply copy this.", 'start': 3149.312, 'duration': 1.741}, {'end': 3152.534, 'text': "I'll go to my crow path.", 'start': 3151.053, 'duration': 1.481}, {'end': 3153.895, 'text': 'the tag is H2.', 'start': 3152.534, 'duration': 1.361}, {'end': 3162.692, 'text': "so I'll say simply H2, okay, and here I'll say text equal to, and this is the text which I copied.", 'start': 3153.895, 'duration': 8.797}, {'end': 3164.452, 'text': 'I missed out that, yes, there.', 'start': 3162.692, 'duration': 1.76}, {'end': 3166.033, 'text': "so I'm just going to add an s.", 'start': 3164.452, 'duration': 1.581}, {'end': 3170.313, 'text': "okay. so let's first test here whether it is able to identify that element.", 'start': 3166.033, 'duration': 4.28}, {'end': 3172.314, 'text': 'yeah, so it is able to identify.', 'start': 3170.313, 'duration': 2.001}, {'end': 3173.874, 'text': 'so can you see a blue dotted line?', 'start': 3172.314, 'duration': 1.56}, {'end': 3176.795, 'text': 'it is able to show us which element it is identified.', 'start': 3173.874, 'duration': 2.921}, {'end': 3181.375, 'text': "so I'll copy this X path now and let's go to my ID eclipse.", 'start': 3176.795, 'duration': 4.58}, {'end': 3193.019, 'text': "so now here what I need to do is I'll have to again simply say driver dot, find element by dot xpath and paste the xpath which we just did,", 'start': 3181.375, 'duration': 11.644}, {'end': 3196.32, 'text': 'and then again i have to do a click operation done, all right.', 'start': 3193.019, 'duration': 3.301}, {'end': 3201.962, 'text': 'so technically we have taken all the steps of the use case and we have written the commands for that.', 'start': 3196.32, 'duration': 5.642}, {'end': 3204.784, 'text': "now let's add an additional thing here.", 'start': 3202.742, 'duration': 2.042}, {'end': 3210.749, 'text': 'say after coming to this page, after finding this, we want to say print the title of this page.', 'start': 3204.784, 'duration': 5.965}, {'end': 3212.29, 'text': 'now, what is the title of this page?', 'start': 3210.749, 'duration': 1.541}, {'end': 3213.832, 'text': 'if you just hover your mouse on this?', 'start': 3212.29, 'duration': 1.542}, {'end': 3218.776, 'text': 'it says online and classroom training for professional certification courses, simply now.', 'start': 3213.832, 'duration': 4.944}, {'end': 3224.441, 'text': 'so what i will do is, after doing all these operations, i will just print out this page title on our console.', 'start': 3218.776, 'duration': 5.665}, {'end': 3227.604, 'text': 'so for that i have to just do this driver dot.', 'start': 3224.441, 'duration': 3.163}, {'end': 3228.825, 'text': "so let's do a sysout.", 'start': 3227.604, 'duration': 1.221}], 'summary': 'Webdriver is faster than rc due to direct communication with the browser and cleaner apis. a demo shows the automation script for searching selenium 3.0 training on simplylearn website using eclipse and firefox driver.', 'duration': 759.894, 'max_score': 2468.931, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY2468931.jpg'}, {'end': 3431.405, 'src': 'embed', 'start': 3402.849, 'weight': 2, 'content': [{'end': 3407.332, 'text': "so what i'll do is i'll just give a simple thread dot sleep here.", 'start': 3402.849, 'duration': 4.483}, {'end': 3411.374, 'text': 'okay, so probably a three seconds or a two seconds weight should be good enough.', 'start': 3407.332, 'duration': 4.042}, {'end': 3418.619, 'text': 'okay, a three seconds weight should be good enough here so that we should be able to see how exactly this works on your browser when we execute this.', 'start': 3411.374, 'duration': 7.245}, {'end': 3421.492, 'text': 'Okay, now, our complete script is ready.', 'start': 3419.269, 'duration': 2.223}, {'end': 3426.218, 'text': "So what I'll do is I'll just save the script and then we will simply run the script.", 'start': 3421.552, 'duration': 4.666}, {'end': 3431.405, 'text': 'So to run the script, I just say right click run as Java application.', 'start': 3426.839, 'duration': 4.566}], 'summary': 'Creating a script with a 3-second delay to observe browser execution.', 'duration': 28.556, 'max_score': 3402.849, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY3402849.jpg'}], 'start': 1658.02, 'title': 'Selenium automation with selenium ide, rc, and webdriver', 'summary': "Covers selenium ide limitations, transition from rc to webdriver, selenium's limitations and workarounds, automating firefox browser with selenium, and selenium script synchronization and selenium grid for parallel test execution.", 'chapters': [{'end': 1854.076, 'start': 1658.02, 'title': 'Selenium ide and selenium rc', 'summary': 'Discusses the limitations of selenium ide, including the inability to export test scripts to web driver, perform data-driven testing, and connect to databases, and the transition from selenium rc to webdriver due to the same origin policy issue, leading to the replacement of rc in selenium 3.0.', 'duration': 196.056, 'highlights': ['Transition from Selenium RC to WebDriver Selenium RC was completely removed in version 3.0 and replaced by WebDriver due to the same origin policy issue, prohibiting JavaScript from accessing elements or interacting with scripts from a different domain, leading to the impracticality of installing Selenium core and the web server on every machine under test.', 'Limitations of Selenium IDE Selenium IDE has limitations including the inability to export test scripts to web driver, perform data-driven testing, and connect to databases, as well as lacking a robust reporting mechanism.', 'Same Origin Policy Issue The same origin policy issue prohibits JavaScript from accessing elements or interacting with scripts from a domain different from where it is launched, posing security measures.']}, {'end': 2297.118, 'start': 1854.076, 'title': 'Selenium: rc vs webdriver', 'summary': 'Explains the transition from selenium remote control (rc) to webdriver, highlighting how rc used a separate server leading to slower execution and redundancy in apis, whereas webdriver directly interacts with browsers, supporting various frameworks, making it faster and more efficient.', 'duration': 443.042, 'highlights': ['WebDriver directly interacts with browsers, making it faster than RC. WebDriver does not require an intermediate server like RC, resulting in faster execution. It directly interacts with browsers, eliminating the need for the round trip from test scripts to the server, core engine, and browser.', 'RC had a slower execution due to the round trip from test scripts to the server, core engine, and browser, making the overall test execution slow. Every command in RC took a full trip from the test script to the RC server, core engine, and browser, causing slower execution and making the overall test execution slow.', 'WebDriver supports various frameworks like TestNG, JUnit, NUnit, and ReportNG. WebDriver supports various frameworks, including TestNG, JUnit, NUnit, and ReportNG, contributing to making Selenium a complete automation solution for web applications.']}, {'end': 2788.576, 'start': 2297.378, 'title': 'Selenium limitations and workarounds', 'summary': 'Discusses the limitations of selenium, including its inability to test mobile applications and limited reporting capability, and the workarounds for these limitations, such as integrating apm for mobile application testing and using testng and extentreport for advanced reporting.', 'duration': 491.198, 'highlights': ['Limitations of Selenium The limitations of Selenium are discussed, including its inability to test mobile applications and limited reporting capability, and the need for workarounds such as integrating APM for mobile application testing and using TestNG and ExtentReport for advanced reporting.', 'Integration of APM with Selenium Selenium provides support for integrating APM, a mobile application automation tool, to achieve mobile application automation, enabling the same test cases to be run on web and mobile browsers.', "Selenium Grid for Parallel Execution Selenium offers Grid to run test cases parallelly on multiple machines and browsers, addressing the limitation of WebDriver's sequential execution and enabling efficient parallel execution.", 'Reporting Capabilities Selenium WebDriver has limited reporting capability, but it supports integration with tools like TestNG, ReportNG, and ExtentReport to generate advanced and visually appealing reports.', 'Comparison of Selenium RC and WebDriver A comparison between Selenium RC and WebDriver is provided, highlighting the differences in architecture, execution speed, API cleanliness, and support for headless browsers.', 'Setting Up Selenium in Eclipse The process of setting up Selenium in Eclipse is explained, including importing required jar files, downloading browser driver files, and creating a class with necessary methods for automation.']}, {'end': 3285.213, 'start': 2788.856, 'title': 'Automating firefox browser with selenium', 'summary': 'Details the process of automating the launch of the firefox browser, navigating to a website, performing a search, and printing the page title using selenium, emphasizing the use of commands and techniques for element identification and interaction.', 'duration': 496.357, 'highlights': ['The chapter details the process of automating the launch of the Firefox browser, navigating to a website, performing a search, and printing the page title using Selenium, emphasizing the use of commands and techniques for element identification and interaction.', "The command 'system.setProperty' is used to set the path for the Gecko driver, necessary for launching the Firefox browser.", "A key-value pair, 'webdriver.gecko.driver' and the path to the gecko driver, is set using 'system.setProperty', demonstrating the process of configuring the driver for browser automation.", "The 'new FirefoxDriver' command creates an instance of the Firefox browser for automation, showcasing the instantiation of the browser using Selenium.", "The process of identifying elements on a webpage using inspect element, locating techniques such as 'findElementByID' and 'findElementByXPath', and performing actions like sending keys and clicking on elements is explained in detail, highlighting the steps for element interaction in Selenium automation."]}, {'end': 3793.3, 'start': 3285.213, 'title': 'Selenium script synchronization and selenium grid', 'summary': 'Discusses the synchronization of selenium scripts using thread.sleep command to wait for web page elements, and demonstrates the execution of selenium script and selenium grid for parallel test execution and integration with reporting tools.', 'duration': 508.087, 'highlights': ['The script uses thread.sleep command to wait for web page elements, ensuring synchronization before clicking on the Selenium 3.0 training link. The script utilizes thread.sleep command to provide a three-second wait for the web page to display the Selenium 3.0 training link, ensuring synchronization.', 'The demonstration involves adding explicit waits using thread.sleep command to allow proper visualization of script execution. Explicit waits using thread.sleep command are added for demo purposes, allowing proper visualization of script execution.', 'The script successfully executes the Selenium commands, demonstrating the completion of operations and the ability to fetch the page title. The script successfully executes Selenium commands, demonstrating the completion of operations and the ability to fetch the page title.', 'Selenium Grid is discussed as a tool for parallel test execution across multiple machines, aiming to minimize test execution time by running tests in distributed environments. Selenium Grid is explained as a tool for parallel test execution across multiple machines, aiming to minimize test execution time by running tests in distributed environments.', 'Selenium Grid integrates with reporting tools and allows parallel execution on different browsers and operating systems. Selenium Grid integrates with reporting tools and enables parallel execution on different browsers and operating systems, enhancing flexibility and efficiency.']}], 'duration': 2135.28, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY1658020.jpg', 'highlights': ['WebDriver directly interacts with browsers, making it faster than RC.', "Selenium Grid for Parallel Execution Selenium offers Grid to run test cases parallelly on multiple machines and browsers, addressing the limitation of WebDriver's sequential execution and enabling efficient parallel execution.", 'The script uses thread.sleep command to wait for web page elements, ensuring synchronization before clicking on the Selenium 3.0 training link.', 'The chapter details the process of automating the launch of the Firefox browser, navigating to a website, performing a search, and printing the page title using Selenium, emphasizing the use of commands and techniques for element identification and interaction.', 'Limitations of Selenium The limitations of Selenium are discussed, including its inability to test mobile applications and limited reporting capability, and the need for workarounds such as integrating APM for mobile application testing and using TestNG and ExtentReport for advanced reporting.']}, {'end': 5720.772, 'segs': [{'end': 4429.115, 'src': 'heatmap', 'start': 4173.702, 'weight': 6, 'content': [{'end': 4178.825, 'text': 'So it says Java version 1.8 and this tells us that the Java is installed successfully.', 'start': 4173.702, 'duration': 5.123}, {'end': 4183.428, 'text': 'Now, after this installation, there are a couple of configurations which we need to do.', 'start': 4179.165, 'duration': 4.263}, {'end': 4184.749, 'text': 'and what are those configurations??', 'start': 4183.428, 'duration': 1.321}, {'end': 4190.192, 'text': 'One is you need to set the path variable and then we are also going to set a Java home directory.', 'start': 4185.109, 'duration': 5.083}, {'end': 4194.935, 'text': "So for that first let's go ahead and check where is the Java installed actually.", 'start': 4190.352, 'duration': 4.583}, {'end': 4196.576, 'text': "Let's figure out the directory first.", 'start': 4195.015, 'duration': 1.561}, {'end': 4202.94, 'text': 'So if you remember the directory structure where the Java got installed was in program files Java.', 'start': 4196.936, 'duration': 6.004}, {'end': 4207.183, 'text': 'I have there are certain previous versions which I had installed and then uninstalled it.', 'start': 4203.12, 'duration': 4.063}, {'end': 4209.884, 'text': 'So that is why you see some residuals here sitting here.', 'start': 4207.243, 'duration': 2.641}, {'end': 4211.725, 'text': "Let's not worry too much about that.", 'start': 4210.144, 'duration': 1.581}, {'end': 4216.929, 'text': 'Instead, let me go to the latest one, what I have installed, which is this and there is a bin folder here,', 'start': 4211.905, 'duration': 5.024}, {'end': 4220.151, 'text': 'and this is the path which we need to set in our path variable.', 'start': 4216.929, 'duration': 3.222}, {'end': 4225.674, 'text': "So what I will do is I'll just copy this path and then go to your control panel here.", 'start': 4220.371, 'duration': 5.303}, {'end': 4228.336, 'text': 'Go to your where is my system.', 'start': 4226.114, 'duration': 2.222}, {'end': 4236.925, 'text': 'So click on the system go to advanced system setting and here in the environment variables find the path variable okay and then say edit.', 'start': 4228.996, 'duration': 7.929}, {'end': 4243.092, 'text': 'Now what are we doing here in the path variable is we are going to add the java bin directory to the path.', 'start': 4237.165, 'duration': 5.927}, {'end': 4246.516, 'text': 'Be very careful whenever you are editing your path variable.', 'start': 4243.332, 'duration': 3.184}, {'end': 4248.158, 'text': 'Do not overwrite anything.', 'start': 4246.736, 'duration': 1.422}, {'end': 4256.606, 'text': 'Always go into the edit mode, go towards the end here and then just say Ctrl V, paste the path which you have just copied from the explorer window.', 'start': 4248.298, 'duration': 8.308}, {'end': 4257.047, 'text': "That's it.", 'start': 4256.727, 'duration': 0.32}, {'end': 4258.549, 'text': 'Now just say okay done.', 'start': 4257.307, 'duration': 1.242}, {'end': 4259.81, 'text': 'So your path setting is done.', 'start': 4258.669, 'duration': 1.141}, {'end': 4264.795, 'text': "So what's the next one we need to do? We need to add a new environment variable called the java home.", 'start': 4260.05, 'duration': 4.745}, {'end': 4267.178, 'text': "Now what I'll do for that is I'll just say new.", 'start': 4264.915, 'duration': 2.263}, {'end': 4268.799, 'text': "I'll just type java home here.", 'start': 4267.378, 'duration': 1.421}, {'end': 4270.821, 'text': 'and what is the value of this?', 'start': 4269.62, 'duration': 1.201}, {'end': 4271.521, 'text': 'we need to set.', 'start': 4270.821, 'duration': 0.7}, {'end': 4274.462, 'text': 'we need to set the same path, but without the bin directory.', 'start': 4271.521, 'duration': 2.941}, {'end': 4277.783, 'text': 'so we just need to set the path till your java directory.', 'start': 4274.462, 'duration': 3.321}, {'end': 4278.504, 'text': 'that is this.', 'start': 4277.783, 'duration': 0.721}, {'end': 4281.125, 'text': "so we'll just copy the path again and paste it here.", 'start': 4278.504, 'duration': 2.621}, {'end': 4281.625, 'text': 'that is all.', 'start': 4281.125, 'duration': 0.5}, {'end': 4285.266, 'text': 'just say ok, click on, ok, click on, ok here, and we are done.', 'start': 4281.625, 'duration': 3.641}, {'end': 4285.727, 'text': 'so again.', 'start': 4285.266, 'duration': 0.461}, {'end': 4288.828, 'text': "let's go to our command prompt and just say java minus version.", 'start': 4285.727, 'duration': 3.101}, {'end': 4291.008, 'text': 'So everything seems to be fine.', 'start': 4289.787, 'duration': 1.221}, {'end': 4293.911, 'text': 'So now successfully we have installed Java on the system.', 'start': 4291.088, 'duration': 2.823}, {'end': 4297.975, 'text': 'So what is our next installation step what we have? Now we need to install the Eclipse.', 'start': 4294.011, 'duration': 3.964}, {'end': 4299.836, 'text': "So let's go back to the browser again.", 'start': 4298.315, 'duration': 1.521}, {'end': 4304.521, 'text': 'So to download Eclipse, we will be downloading the package from the eclipse.org.', 'start': 4300.257, 'duration': 4.264}, {'end': 4309.045, 'text': 'So when you go here to eclipse.org, you can see the latest version which is available.', 'start': 4304.761, 'duration': 4.284}, {'end': 4313.729, 'text': 'And the latest version available when this video was made was 2019.06.', 'start': 4309.205, 'duration': 4.524}, {'end': 4318.89, 'text': "So especially with Eclipse, since it's an open source, I prefer to work with the last stable version.", 'start': 4313.729, 'duration': 5.161}, {'end': 4320.73, 'text': 'And so does most of the developers do.', 'start': 4319.03, 'duration': 1.7}, {'end': 4327.352, 'text': "And hence that is the reason why I have picked up the version, which is like last year's version, which is 4.10,,", 'start': 4320.95, 'duration': 6.402}, {'end': 4328.972, 'text': 'which was released in last December.', 'start': 4327.352, 'duration': 1.62}, {'end': 4331.493, 'text': 'So you can always choose to go with the latest version.', 'start': 4329.112, 'duration': 2.381}, {'end': 4336.594, 'text': "But then, if there are any issues and if you're, like first time working with the Eclipse, you're going to get confused,", 'start': 4331.693, 'duration': 4.901}, {'end': 4338.514, 'text': 'as where these issues are coming from right?', 'start': 4336.594, 'duration': 1.92}, {'end': 4343.395, 'text': 'So I would still recommend that you use the last stable version which is available with your Eclipse.', 'start': 4338.554, 'duration': 4.841}, {'end': 4351.48, 'text': 'So now, to get the last stable version, what you need to do is go and click on this, download packages and here, if you scroll down this page,', 'start': 4343.655, 'duration': 7.825}, {'end': 4353.401, 'text': 'you can see here more downloads.', 'start': 4351.48, 'duration': 1.921}, {'end': 4359.624, 'text': 'So there is a list of all the previous releases of Eclipse which is available and this is what we need to download.', 'start': 4353.821, 'duration': 5.803}, {'end': 4365.208, 'text': 'So just click on that 4.10 version and then click on the OS on which you want to install Eclipse.', 'start': 4359.845, 'duration': 5.363}, {'end': 4368.59, 'text': "For us it is Windows so I'll just click here on the 64-bit Windows.", 'start': 4365.388, 'duration': 3.202}, {'end': 4372.933, 'text': 'and then click on the download and you will be downloading the complete package.', 'start': 4369.17, 'duration': 3.763}, {'end': 4375.674, 'text': 'so once you download, this is what it will look like.', 'start': 4372.933, 'duration': 2.741}, {'end': 4379.137, 'text': "so let's go back to our directory of installers.", 'start': 4375.674, 'duration': 3.463}, {'end': 4381.418, 'text': 'so this is the installer for the eclipse which i got.', 'start': 4379.137, 'duration': 2.281}, {'end': 4383.059, 'text': "now what's the next step i need to do?", 'start': 4381.418, 'duration': 1.641}, {'end': 4385.561, 'text': 'just launch this installer and install eclipse.', 'start': 4383.059, 'duration': 2.502}, {'end': 4387.402, 'text': "so i'll just say double click on this.", 'start': 4385.561, 'duration': 1.841}, {'end': 4387.902, 'text': "i'll say run.", 'start': 4387.402, 'duration': 0.5}, {'end': 4392.404, 'text': "So here you'll see multiple options here for Eclipse installation.", 'start': 4388.923, 'duration': 3.481}, {'end': 4397.245, 'text': 'So depending on your requirement, you can go ahead and install any of these packages.', 'start': 4392.664, 'duration': 4.581}, {'end': 4400.706, 'text': 'So for us, we just need an Eclipse ID for Java developers.', 'start': 4397.545, 'duration': 3.161}, {'end': 4403.227, 'text': "So I'll select this and I'll say install.", 'start': 4400.846, 'duration': 2.381}, {'end': 4406.367, 'text': "So again, you'll have a choice of directory where you want to install.", 'start': 4403.367, 'duration': 3}, {'end': 4408.568, 'text': 'So I have chosen D drive here.', 'start': 4406.607, 'duration': 1.961}, {'end': 4411.088, 'text': 'This is a default directory name it takes, which is okay.', 'start': 4408.828, 'duration': 2.26}, {'end': 4412.229, 'text': 'We can leave it as it is.', 'start': 4411.108, 'duration': 1.121}, {'end': 4417.05, 'text': 'And then also you have an option to create a start menu entry and desktop shortcut.', 'start': 4412.829, 'duration': 4.221}, {'end': 4421.712, 'text': 'So just leave the default selection as it is and go ahead and click on install.', 'start': 4417.21, 'duration': 4.502}, {'end': 4424.073, 'text': 'So this will take a while to install the Eclipse.', 'start': 4421.852, 'duration': 2.221}, {'end': 4427.394, 'text': 'This says select all.', 'start': 4426.234, 'duration': 1.16}, {'end': 4429.115, 'text': 'You can close this window.', 'start': 4427.414, 'duration': 1.701}], 'summary': 'Successfully installed java version 1.8 and eclipse 4.10 for windows.', 'duration': 63.727, 'max_score': 4173.702, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY4173702.jpg'}, {'end': 4580.551, 'src': 'embed', 'start': 4551.432, 'weight': 5, 'content': [{'end': 4554.473, 'text': 'So if you have another Java installed here, it will show up in this list.', 'start': 4551.432, 'duration': 3.041}, {'end': 4556.194, 'text': 'and you can just go ahead and select that.', 'start': 4554.873, 'duration': 1.321}, {'end': 4564.28, 'text': 'Now since we have only one Java installed on our machine which is Java 1.8 I will say use default GRE which is 1.8 and I will click on finish.', 'start': 4556.354, 'duration': 7.926}, {'end': 4571.945, 'text': 'Now if you observe this folder structure the project which is created see all the reference libraries to this particular Java have been created here.', 'start': 4564.58, 'duration': 7.365}, {'end': 4575.828, 'text': 'Now we are ready to create any kind of Java programs in this project.', 'start': 4572.185, 'duration': 3.643}, {'end': 4580.551, 'text': 'So now we have successfully done the second step of our installation which is the Eclipse installation.', 'start': 4576.028, 'duration': 4.523}], 'summary': 'Eclipse installation completed with java 1.8 as default gre, ready to create java programs.', 'duration': 29.119, 'max_score': 4551.432, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY4551432.jpg'}, {'end': 4703.069, 'src': 'embed', 'start': 4674.028, 'weight': 9, 'content': [{'end': 4678.612, 'text': 'So we have client libraries now and then there is another component what we need.', 'start': 4674.028, 'duration': 4.584}, {'end': 4680.514, 'text': 'Now, with Selenium,', 'start': 4678.953, 'duration': 1.561}, {'end': 4688.802, 'text': 'you are going to be automating your web browser applications correct and you also want your applications to run on multiple browsers.', 'start': 4680.514, 'duration': 8.288}, {'end': 4694.285, 'text': 'so that means your scripts, the automation scripts which you create, should be able to run on any browser.', 'start': 4688.802, 'duration': 5.483}, {'end': 4703.069, 'text': 'Selenium works with multiple browsers like Edge, Safari, Chrome, Firefox and other browsers even it has a support for headless browser.', 'start': 4694.525, 'duration': 8.544}], 'summary': 'Selenium client libraries support automation on multiple browsers, including edge, safari, chrome, and firefox.', 'duration': 29.041, 'max_score': 4674.028, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY4674028.jpg'}, {'end': 4822.123, 'src': 'embed', 'start': 4793.487, 'weight': 4, 'content': [{'end': 4797.348, 'text': 'So what I did was, after downloading those driver files for the browser,', 'start': 4793.487, 'duration': 3.861}, {'end': 4801.849, 'text': "I created a directory here called drivers and I've kept all my browser drivers here.", 'start': 4797.348, 'duration': 4.501}, {'end': 4804.069, 'text': 'So I have a driver file downloaded for Chrome.', 'start': 4801.929, 'duration': 2.14}, {'end': 4806.87, 'text': 'I want to work with Firefox so I have a Gecko driver here.', 'start': 4804.369, 'duration': 2.501}, {'end': 4808.892, 'text': 'and then for Internet Explorer.', 'start': 4807.27, 'duration': 1.622}, {'end': 4809.492, 'text': "That's it.", 'start': 4809.192, 'duration': 0.3}, {'end': 4810.633, 'text': 'So this is all we need.', 'start': 4809.652, 'duration': 0.981}, {'end': 4814.396, 'text': 'So once we have all this what you need to do is go to your Eclipse.', 'start': 4810.893, 'duration': 3.503}, {'end': 4822.123, 'text': 'In the Eclipse right click on the project which you have created and then go to the build path and say configure build path.', 'start': 4814.777, 'duration': 7.346}], 'summary': 'Downloaded browser drivers for chrome, firefox, and internet explorer and configured build path in eclipse.', 'duration': 28.636, 'max_score': 4793.487, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY4793487.jpg'}, {'end': 4884.799, 'src': 'embed', 'start': 4854.405, 'weight': 13, 'content': [{'end': 4857.526, 'text': 'So select all the five jars and click on open.', 'start': 4854.405, 'duration': 3.121}, {'end': 4859.806, 'text': 'So you should see all the seven jar files here.', 'start': 4857.746, 'duration': 2.06}, {'end': 4862.627, 'text': 'So once you have this, just say apply and close.', 'start': 4860.067, 'duration': 2.56}, {'end': 4867.729, 'text': 'Now if you look into your project directory here, you will see a folder called referenced library.', 'start': 4863.067, 'duration': 4.662}, {'end': 4870.85, 'text': 'And this is where you will see all the selenium jars here.', 'start': 4867.889, 'duration': 2.961}, {'end': 4873.031, 'text': 'This is a very simple installation.', 'start': 4871.01, 'duration': 2.021}, {'end': 4880.416, 'text': 'In Eclipse, when you want to install Selenium, you just need to export all the jars of the Selenium into Eclipse.', 'start': 4873.352, 'duration': 7.064}, {'end': 4884.799, 'text': 'And now your system is ready to start working with Selenium scripts.', 'start': 4880.816, 'duration': 3.983}], 'summary': 'Export all 5 selenium jars into eclipse for installation. ready to use.', 'duration': 30.394, 'max_score': 4854.405, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY4854405.jpg'}, {'end': 5282.224, 'src': 'embed', 'start': 5257.092, 'weight': 0, 'content': [{'end': 5263.838, 'text': "My recommendation to you is instead of if you're working first time, instead of working on the latest version available,", 'start': 5257.092, 'duration': 6.746}, {'end': 5266.68, 'text': 'I would suggest that you work with the last stable version.', 'start': 5263.838, 'duration': 2.842}, {'end': 5268.742, 'text': "And that's exactly what we are going to do.", 'start': 5267.241, 'duration': 1.501}, {'end': 5275.228, 'text': 'So for me to go to the previous versions, I just need to go here on this download packages, click on it.', 'start': 5269.422, 'duration': 5.806}, {'end': 5282.224, 'text': 'So once you click on that, on this page, if you scroll down, you will see something called as more downloads.', 'start': 5276.537, 'duration': 5.687}], 'summary': 'Recommend using the last stable version for first-time work.', 'duration': 25.132, 'max_score': 5257.092, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY5257092.jpg'}, {'end': 5416.577, 'src': 'embed', 'start': 5390.545, 'weight': 12, 'content': [{'end': 5395.126, 'text': 'all right, when you start the Eclipse for the first time, you need to set your workspace.', 'start': 5390.545, 'duration': 4.581}, {'end': 5402.328, 'text': 'so workspace is place where you are going to keep all your folders, all your Java code or whatever you are going to do in Eclipse,', 'start': 5395.126, 'duration': 7.202}, {'end': 5404.569, 'text': 'all under that particular directory.', 'start': 5402.328, 'duration': 2.241}, {'end': 5406.61, 'text': 'so right now it gives me a default directory.', 'start': 5404.569, 'duration': 2.041}, {'end': 5416.577, 'text': 'rather, what I will do is, since I have created a separate folder for our demos, I will go ahead and select that folder, which is my simply demo,', 'start': 5406.61, 'duration': 9.967}], 'summary': "When starting eclipse, set your workspace where you'll keep your code; default directory provided, select separate folder for demos.", 'duration': 26.032, 'max_score': 5390.545, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY5390545.jpg'}, {'end': 5695.698, 'src': 'embed', 'start': 5651.913, 'weight': 1, 'content': [{'end': 5655.357, 'text': "so let's go ahead and look at what are those downloadables, what we have.", 'start': 5651.913, 'duration': 3.444}, {'end': 5657.018, 'text': "so let's close out this window.", 'start': 5655.357, 'duration': 1.661}, {'end': 5662.604, 'text': 'now, if you see here, one is the selenium server standalone, which we just downloaded.', 'start': 5657.018, 'duration': 5.586}, {'end': 5666.028, 'text': 'and then, when you download the client libraries, what it does?', 'start': 5662.604, 'duration': 3.424}, {'end': 5672.931, 'text': 'it it creates a zip file, it downloads a zip file and it unzips it and what is contained in that particular folder.', 'start': 5666.028, 'duration': 6.903}, {'end': 5682.114, 'text': 'so if you look here selenium, java 3 in this folder you have multiple jar files with, which is what will be working with selenium.', 'start': 5672.931, 'duration': 9.183}, {'end': 5687.775, 'text': 'so here you have two jar files here and then under the folder lives you have other jar files.', 'start': 5682.114, 'duration': 5.661}, {'end': 5689.936, 'text': 'now these are the files which we will need.', 'start': 5687.775, 'duration': 2.161}, {'end': 5692.717, 'text': "and now let's see how do we utilize this file in our eclipse.", 'start': 5689.936, 'duration': 2.781}, {'end': 5695.698, 'text': "so for that, let's go back to our eclipse.", 'start': 5693.357, 'duration': 2.341}], 'summary': 'Transcript discusses downloading selenium server standalone and client libraries, containing multiple jar files for working with selenium.', 'duration': 43.785, 'max_score': 5651.913, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY5651913.jpg'}], 'start': 3793.3, 'title': 'Selenium automation', 'summary': 'Highlights the advantages of selenium for test automation, including speed, accuracy, and parallel execution, enabling fast execution of large test cases. it also covers the support for multiple programming languages, browsers, and operating systems, along with detailed installation processes for java, eclipse, and selenium on windows and mac systems.', 'chapters': [{'end': 3834.14, 'start': 3793.3, 'title': 'Selenium advantages and limitations', 'summary': 'Highlights the advantages of using selenium for test automation, including speed, accuracy, and parallel execution, which allows for the fast execution of large volumes of test cases, compared to manual testing.', 'duration': 40.84, 'highlights': ['Selenium allows for parallel execution, enabling the fast execution of large volumes of test cases compared to manual testing.', 'The speed and accuracy of Selenium are advantageous due to the absence of manual execution, leading to faster test runs.']}, {'end': 4288.828, 'start': 3834.62, 'title': 'Selenium automation advantages and installation', 'summary': 'Covers the advantages of selenium automation, including its support for multiple programming languages, browsers, and operating systems, as well as its limitations and the three-step installation process for java, eclipse, and selenium.', 'duration': 454.208, 'highlights': ['Selenium supports wide spectrum of programming languages, all browsers, and all operating systems, saving time from manual execution and achieving a broad test coverage. Selenium supports wide spectrum of programming languages, all browsers, and all operating systems, saving time from manual execution and achieving a broad test coverage.', 'Selenium is open source, freely available, and supports reusability of code, serving as a complete solution for automation needs. Selenium is open source, freely available, and supports reusability of code, serving as a complete solution for automation needs.', 'Selenium installation is a three-step process involving Java, Eclipse, and Selenium, with specific version requirements for Java and Eclipse. Selenium installation is a three-step process involving Java, Eclipse, and Selenium, with specific version requirements for Java and Eclipse.']}, {'end': 4564.28, 'start': 4289.787, 'title': 'Installing eclipse for java development', 'summary': 'Details the process of installing eclipse for java development, including selecting the last stable version (4.10), downloading and installing the software on a windows system, and setting up a workspace directory for storing java files and programs.', 'duration': 274.493, 'highlights': ['The chapter emphasizes the importance of selecting the last stable version (4.10) of Eclipse for Java development, as it provides a more reliable environment for first-time users and developers. Stressing the preference for the last stable version.', 'Instructions are provided for downloading and installing Eclipse 4.10 on a Windows system, including selecting the appropriate OS version and customizing the installation options. Guidance on downloading and installing Eclipse 4.10 on a Windows system.', 'The process of setting up a workspace directory for storing Java files and programs within Eclipse is explained, allowing users to define a specific location on their system for storing artifacts created through Eclipse. Explanation of setting up a workspace directory for storing Java files and programs.']}, {'end': 5228.126, 'start': 4564.58, 'title': 'Setting up selenium and java for automation', 'summary': 'Covers the detailed process of setting up eclipse for selenium installation and java installation on a mac system, including downloading the required selenium packages and drivers, configuring the eclipse build path with selenium jars, and setting up java environment variables.', 'duration': 663.546, 'highlights': ['Setting up Eclipse for Selenium installation The detailed process of setting up Eclipse for Selenium installation is explained, including adding Selenium jars to the build path and configuring the project directory with referenced libraries.', 'Downloading required Selenium packages and drivers The process of downloading the required Selenium packages and drivers, such as the standalone Selenium server, Selenium client and web driver language bindings for Java, and browser-specific driver files like Gecko driver, is outlined.', 'Installing Java on a Mac system The step-by-step process of installing Java on a Mac system is demonstrated, including downloading the Java Software Development Kit 8U211 from the Oracle site, installing JDK, and setting up Java environment variables in the bash profile.']}, {'end': 5720.772, 'start': 5229.107, 'title': 'Installing eclipse and setting up selenium', 'summary': 'Covers the step-by-step process of installing eclipse and setting up selenium by explaining how to download and install eclipse, choose a stable version, set workspace, and configure build path for selenium in eclipse.', 'duration': 491.665, 'highlights': ['Eclipse installation process The speaker guides through the process of downloading a stable version of Eclipse, specifically 4.10, for Java developers and installing it on a Mac machine.', 'Setting up workspace in Eclipse The speaker demonstrates setting up a workspace in Eclipse to store files and code, emphasizing the importance of selecting a specific location for storing Selenium-related files.', 'Creating a new Java project in Eclipse The speaker explains how to create a new Java project in Eclipse and demonstrates the automatic selection of Java 1.8 for the project, highlighting the option to choose a different Java version if multiple versions are installed.', 'Downloading and configuring Selenium in Eclipse The speaker explains the process of downloading Selenium standalone server and Java client for Selenium, unzipping the client libraries, and configuring the build path in Eclipse to include the Selenium jar files.']}], 'duration': 1927.472, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY3793300.jpg', 'highlights': ['Selenium allows for parallel execution, enabling the fast execution of large volumes of test cases compared to manual testing.', 'The speed and accuracy of Selenium are advantageous due to the absence of manual execution, leading to faster test runs.', 'Selenium supports wide spectrum of programming languages, all browsers, and all operating systems, saving time from manual execution and achieving a broad test coverage.', 'Selenium is open source, freely available, and supports reusability of code, serving as a complete solution for automation needs.', 'Selenium installation is a three-step process involving Java, Eclipse, and Selenium, with specific version requirements for Java and Eclipse.', 'The chapter emphasizes the importance of selecting the last stable version (4.10) of Eclipse for Java development, as it provides a more reliable environment for first-time users and developers.', 'Instructions are provided for downloading and installing Eclipse 4.10 on a Windows system, including selecting the appropriate OS version and customizing the installation options.', 'The process of setting up a workspace directory for storing Java files and programs within Eclipse is explained, allowing users to define a specific location on their system for storing artifacts created through Eclipse.', 'Setting up Eclipse for Selenium installation The detailed process of setting up Eclipse for Selenium installation is explained, including adding Selenium jars to the build path and configuring the project directory with referenced libraries.', 'Downloading required Selenium packages and drivers The process of downloading the required Selenium packages and drivers, such as the standalone Selenium server, Selenium client and web driver language bindings for Java, and browser-specific driver files like Gecko driver, is outlined.', 'Installing Java on a Mac system The step-by-step process of installing Java on a Mac system is demonstrated, including downloading the Java Software Development Kit 8U211 from the Oracle site, installing JDK, and setting up Java environment variables in the bash profile.', 'Eclipse installation process The speaker guides through the process of downloading a stable version of Eclipse, specifically 4.10, for Java developers and installing it on a Mac machine.', 'Setting up workspace in Eclipse The speaker demonstrates setting up a workspace in Eclipse to store files and code, emphasizing the importance of selecting a specific location for storing Selenium-related files.', 'Creating a new Java project in Eclipse The speaker explains how to create a new Java project in Eclipse and demonstrates the automatic selection of Java 1.8 for the project, highlighting the option to choose a different Java version if multiple versions are installed.', 'Downloading and configuring Selenium in Eclipse The speaker explains the process of downloading Selenium standalone server and Java client for Selenium, unzipping the client libraries, and configuring the build path in Eclipse to include the Selenium jar files.']}, {'end': 6756.522, 'segs': [{'end': 5780.287, 'src': 'embed', 'start': 5749.391, 'weight': 4, 'content': [{'end': 5751.205, 'text': 'what we need identified it.', 'start': 5749.391, 'duration': 1.814}, {'end': 5754.228, 'text': 'Go ahead and click on apply and close.', 'start': 5751.806, 'duration': 2.422}, {'end': 5761.316, 'text': 'Once you do that, how do you know whether all those jars have been imported correctly? Go to the reference libraries.', 'start': 5754.949, 'duration': 6.367}, {'end': 5767.884, 'text': 'Here you should be able to see all the selenium jars which we have downloaded to be listed out here.', 'start': 5761.997, 'duration': 5.887}, {'end': 5769.264, 'text': 'and so it lists here.', 'start': 5768.224, 'duration': 1.04}, {'end': 5771.805, 'text': 'So that means we have successfully imported Selenium.', 'start': 5769.384, 'duration': 2.421}, {'end': 5777.306, 'text': 'What does this video cover? One, a brief about Selenium and where the IDE actually fits in.', 'start': 5772.065, 'duration': 5.241}, {'end': 5780.287, 'text': 'Very recently a new version of IDE has been launched.', 'start': 5777.546, 'duration': 2.741}], 'summary': 'Demonstration of importing selenium jars and overview of new ide version.', 'duration': 30.896, 'max_score': 5749.391, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY5749391.jpg'}, {'end': 5820.577, 'src': 'embed', 'start': 5792.81, 'weight': 6, 'content': [{'end': 5795.471, 'text': "let's look at some of the key features of the Selenium IDE.", 'start': 5792.81, 'duration': 2.661}, {'end': 5801.932, 'text': 'And like every tool has its own limitations, we will also look at what are the limitations of Selenium IDE.', 'start': 5795.771, 'duration': 6.161}, {'end': 5808.914, 'text': 'So what is Selenium? So Selenium is an automated testing tool used to test web applications across various browsers.', 'start': 5802.273, 'duration': 6.641}, {'end': 5813.695, 'text': 'In my previous video, where we have covered the complete basics of Selenium WebDriver.', 'start': 5809.214, 'duration': 4.481}, {'end': 5816.776, 'text': 'I have explained each and every components of the Selenium suite.', 'start': 5813.695, 'duration': 3.081}, {'end': 5820.577, 'text': 'So Selenium IDE is one of the components in the Selenium suite.', 'start': 5816.896, 'duration': 3.681}], 'summary': 'Selenium ide is an automated testing tool for web apps, part of the selenium suite.', 'duration': 27.767, 'max_score': 5792.81, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY5792810.jpg'}, {'end': 5865.139, 'src': 'embed', 'start': 5835.367, 'weight': 0, 'content': [{'end': 5840.09, 'text': 'It was created to facilitate a simple record and replay of the test automation.', 'start': 5835.367, 'duration': 4.723}, {'end': 5850.334, 'text': 'So record and replay tools were pretty much invoked during this time and the main advantage of using such tool was an automation engineer was not really required to know any knowledge of programming.', 'start': 5840.29, 'duration': 10.044}, {'end': 5853.795, 'text': 'He could just use this record replay tool and create the automation.', 'start': 5850.534, 'duration': 3.261}, {'end': 5856.856, 'text': 'And this IDE was available as a Firefox extension.', 'start': 5853.995, 'duration': 2.861}, {'end': 5858.076, 'text': 'So, for one, to use it,', 'start': 5856.956, 'duration': 1.12}, {'end': 5865.139, 'text': 'you need to just go ahead and install the extension on Firefox and then use its recording and record the steps of your test execution.', 'start': 5858.076, 'duration': 7.063}], 'summary': 'Tool facilitated easy test automation without programming knowledge. available as firefox extension.', 'duration': 29.772, 'max_score': 5835.367, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY5835367.jpg'}, {'end': 6113.421, 'src': 'embed', 'start': 6083.154, 'weight': 1, 'content': [{'end': 6086.275, 'text': 'now, for example, in our example here.', 'start': 6083.154, 'duration': 3.121}, {'end': 6087.916, 'text': 'now the type.', 'start': 6086.275, 'duration': 1.641}, {'end': 6090.216, 'text': 'here, the type which says name equal to Q.', 'start': 6087.916, 'duration': 2.3}, {'end': 6092.457, 'text': 'so name equal to Q, is a locator.', 'start': 6090.216, 'duration': 2.241}, {'end': 6094.017, 'text': 'now this is a locator of what.', 'start': 6092.457, 'duration': 1.56}, {'end': 6101.378, 'text': 'initially, if you saw, I went to google.com, and this is the search button which I used, right the search text, and then I said enter.', 'start': 6094.017, 'duration': 7.361}, {'end': 6105.759, 'text': 'so this is nothing but your web element for which the locator is name equal to Q.', 'start': 6101.378, 'duration': 4.381}, {'end': 6113.421, 'text': 'now what happens in ID is when you record it, it has taken the attribute name and it is recognized this particular web element using this attribute.', 'start': 6105.759, 'duration': 7.662}], 'summary': "The web element's locator 'name equal to q' was used to identify the search button on google.com.", 'duration': 30.267, 'max_score': 6083.154, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY6083154.jpg'}, {'end': 6260.845, 'src': 'embed', 'start': 6233.144, 'weight': 3, 'content': [{'end': 6237.068, 'text': 'This new IDE takes care of providing that enough wait time.', 'start': 6233.144, 'duration': 3.924}, {'end': 6243.853, 'text': 'and also you have a global set speed option which you can, uh, use to control your execution of your scripts.', 'start': 6237.068, 'duration': 6.785}, {'end': 6245.894, 'text': 'so that is something which i will show you now.', 'start': 6243.853, 'duration': 2.041}, {'end': 6249.797, 'text': 'so if i go back to this, so can you see this clock icon here?', 'start': 6245.894, 'duration': 3.903}, {'end': 6251.598, 'text': 'so it says test execution speed.', 'start': 6249.797, 'duration': 1.801}, {'end': 6254.24, 'text': 'so what you can do is, right now it is set to the fastest.', 'start': 6251.598, 'duration': 2.642}, {'end': 6257.923, 'text': 'so i can actually control the execution speed here.', 'start': 6254.24, 'duration': 3.683}, {'end': 6260.845, 'text': "so right now i've just kept it a little slower.", 'start': 6257.923, 'duration': 2.922}], 'summary': 'New ide offers global speed control for script execution, with adjustable wait time and speed settings.', 'duration': 27.701, 'max_score': 6233.144, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY6233144.jpg'}, {'end': 6767.147, 'src': 'embed', 'start': 6737.536, 'weight': 8, 'content': [{'end': 6741.117, 'text': 'so the one right now which is being used is the CSS identifier.', 'start': 6737.536, 'duration': 3.581}, {'end': 6744.478, 'text': 'you can also have XPath here, which is a relative XPath.', 'start': 6741.117, 'duration': 3.361}, {'end': 6749.079, 'text': 'so these are all the locating techniques and this is where it which is applied on the target value.', 'start': 6744.478, 'duration': 4.601}, {'end': 6756.522, 'text': 'so value is an optional field, so you can send any value to your web element, for example, in this case, where we are sending the value,', 'start': 6749.079, 'duration': 7.443}, {'end': 6759.984, 'text': 'which is our text, which is selenium HQ dot documentation.', 'start': 6756.522, 'duration': 3.462}, {'end': 6767.147, 'text': 'so this is the value which I want to send it to as a search text to my google.com and then comment or the description.', 'start': 6759.984, 'duration': 7.163}], 'summary': 'The transcript covers css identifier and relative xpath for locating web elements, with an example of sending a search text to google.com.', 'duration': 29.611, 'max_score': 6737.536, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY6737536.jpg'}], 'start': 5721.94, 'title': 'Selenium ide and jar files', 'summary': "Details the process of importing selenium jar files and covers the new features and functionality of selenium ide, including its history, improved locator functionality, parallel execution, control statements, automatic page load wait, global speed control, support for embedded code like javascript, and the debugger's pause on exception feature, along with its overview encompassing test script creation and integration with maven and jenkins for ci.", 'chapters': [{'end': 5771.805, 'start': 5721.94, 'title': 'Selenium jar files import', 'summary': 'Details the process of importing selenium jar files, selecting and importing specific files, and verifying the successful import by checking the reference libraries.', 'duration': 49.865, 'highlights': ['Once the jar files are downloaded from the Selenium site, they need to be selected and imported into the project.', "After selecting the necessary jar files, they should be imported into the project from the 'libs' folder.", 'Verification of successful import can be done by checking the reference libraries to ensure all the Selenium jars are listed.']}, {'end': 6423.566, 'start': 5772.065, 'title': 'Selenium ide: new features and functionality', 'summary': "Covers the introduction and key features of the new version of selenium ide, including its history, installation process, and the enhancements such as improved locator functionality, parallel execution, control statements, automatic page load wait, global speed control, support for embedded code like javascript, and the debugger's pause on exception feature.", 'duration': 651.501, 'highlights': ['The new version of Selenium IDE includes improved locator functionality, enabling multiple locators for web elements and enhancing the robustness of test cases.', 'The new IDE allows for parallel execution, a feature not available in the traditional version.', 'The new IDE supports the addition of control statements such as if-else, while loops, and switch case without requiring additional plugins.', 'The new IDE automatically waits for pages to load, ensuring synchronization between the application under test and the automation scripts.', 'The IDE offers a global speed control option to manage the execution speed of scripts, providing flexibility and control.', 'The new IDE supports the execution of embedded code, allowing the integration of JavaScript into test scripts.', "The IDE provides a debugger with features like step execution, adding breakpoints, and the 'pause on exception' functionality, enhancing the debugging capabilities."]}, {'end': 6756.522, 'start': 6423.566, 'title': 'Selenium ide overview', 'summary': 'Discusses the selenium ide, which allows recording user interactions to create test scripts, integrating with maven and jenkins for ci, and performing step-by-step execution of test cases.', 'duration': 332.956, 'highlights': ['Selenium IDE allows recording user interactions to create test scripts Selenium IDE records user interactions with the browser to create test scripts, which can be executed and monitored for stability and success rate.', 'Integrating with Maven and Jenkins for CI The scripts created in Selenium IDE can be integrated with Maven projects and run through Jenkins to achieve Continuous Integration (CI) principles.', 'Step-by-step execution of test cases Selenium IDE provides the option for step-by-step execution of test cases, enabling users to observe and verify the execution of each command.']}], 'duration': 1034.582, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY5721940.jpg', 'highlights': ["The new IDE provides a debugger with features like step execution, adding breakpoints, and the 'pause on exception' functionality, enhancing the debugging capabilities.", 'The new version of Selenium IDE includes improved locator functionality, enabling multiple locators for web elements and enhancing the robustness of test cases.', 'The new IDE supports the addition of control statements such as if-else, while loops, and switch case without requiring additional plugins.', 'The new IDE automatically waits for pages to load, ensuring synchronization between the application under test and the automation scripts.', 'The IDE offers a global speed control option to manage the execution speed of scripts, providing flexibility and control.', 'The new IDE supports the execution of embedded code, allowing the integration of JavaScript into test scripts.', 'The scripts created in Selenium IDE can be integrated with Maven projects and run through Jenkins to achieve Continuous Integration (CI) principles.', 'Selenium IDE provides the option for step-by-step execution of test cases, enabling users to observe and verify the execution of each command.', 'Once the jar files are downloaded from the Selenium site, they need to be selected and imported into the project.', "After selecting the necessary jar files, they should be imported into the project from the 'libs' folder.", 'Verification of successful import can be done by checking the reference libraries to ensure all the Selenium jars are listed.', 'Selenium IDE allows recording user interactions to create test scripts Selenium IDE records user interactions with the browser to create test scripts, which can be executed and monitored for stability and success rate.']}, {'end': 7901.78, 'segs': [{'end': 6858.647, 'src': 'embed', 'start': 6832.065, 'weight': 0, 'content': [{'end': 6838.29, 'text': 'So whichever test case we run, you will see all the test cases listed here which have been executed at that point of time.', 'start': 6832.065, 'duration': 6.225}, {'end': 6839.631, 'text': 'That is your test case page.', 'start': 6838.41, 'duration': 1.221}, {'end': 6841.613, 'text': 'And then we have test log and reference.', 'start': 6839.851, 'duration': 1.762}, {'end': 6844.715, 'text': 'This is a very important window which you need to be aware of.', 'start': 6841.853, 'duration': 2.862}, {'end': 6846.777, 'text': 'Now here, this is a running log.', 'start': 6844.915, 'duration': 1.862}, {'end': 6854.003, 'text': 'So as in when you are going to run your test cases, the every instruction, the every test step, as in when it runs, it is going to log here.', 'start': 6846.997, 'duration': 7.006}, {'end': 6858.647, 'text': 'Whether it has passed, whether it has failed, whether the command was executed properly or not.', 'start': 6854.203, 'duration': 4.444}], 'summary': 'Test log and reference window displays running log and results of test cases executed.', 'duration': 26.582, 'max_score': 6832.065, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY6832065.jpg'}, {'end': 7032.67, 'src': 'embed', 'start': 7004.401, 'weight': 10, 'content': [{'end': 7006.222, 'text': "It's basically clicking on that button.", 'start': 7004.401, 'duration': 1.821}, {'end': 7009.043, 'text': 'And then we said we also want to open the bestseller link.', 'start': 7006.402, 'duration': 2.641}, {'end': 7010.703, 'text': 'And here is our assert title.', 'start': 7009.283, 'duration': 1.42}, {'end': 7012.144, 'text': "So it's a very simple test.", 'start': 7011.043, 'duration': 1.101}, {'end': 7013.924, 'text': "So let's go ahead and execute this.", 'start': 7012.444, 'duration': 1.48}, {'end': 7017.265, 'text': 'Now, since I also have a close command here.', 'start': 7014.264, 'duration': 3.001}, {'end': 7022.127, 'text': 'this script is going to execute so fast that you will not be able to make out all the steps, what we have written.', 'start': 7017.265, 'duration': 4.862}, {'end': 7024.627, 'text': 'So for that, what I will do, I will comment out the slide.', 'start': 7022.227, 'duration': 2.4}, {'end': 7027.848, 'text': 'Now, how do you comment out any command here? Just select the command.', 'start': 7024.767, 'duration': 3.081}, {'end': 7031.129, 'text': 'And can you see your enable and disable command? Just click on it.', 'start': 7028.209, 'duration': 2.92}, {'end': 7032.67, 'text': 'So now your command is disabled.', 'start': 7031.29, 'duration': 1.38}], 'summary': 'Test script executes quickly with a simple test, but steps can be commented out for observation.', 'duration': 28.269, 'max_score': 7004.401, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY7004401.jpg'}, {'end': 7327.551, 'src': 'embed', 'start': 7303.775, 'weight': 5, 'content': [{'end': 7310.3, 'text': 'What are action commands? Action commands are the commands which interact directly with the web elements on your application.', 'start': 7303.775, 'duration': 6.525}, {'end': 7312.021, 'text': "So let's look at what these commands are.", 'start': 7310.46, 'duration': 1.561}, {'end': 7317.224, 'text': 'So if we go back to our previous example where we had written a test script for amazon.in.', 'start': 7312.081, 'duration': 5.143}, {'end': 7321.867, 'text': 'So if you look at all these things like open, set window size, click, type.', 'start': 7317.444, 'duration': 4.423}, {'end': 7324.229, 'text': 'So these are all nothing but called as action commands.', 'start': 7321.908, 'duration': 2.321}, {'end': 7327.551, 'text': 'And if you go here, you can see, let me do one thing.', 'start': 7324.369, 'duration': 3.182}], 'summary': 'Action commands directly interact with web elements, e.g., open, set window size, click, and type.', 'duration': 23.776, 'max_score': 7303.775, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY7303775.jpg'}, {'end': 7554.49, 'src': 'embed', 'start': 7512.116, 'weight': 3, 'content': [{'end': 7520.599, 'text': 'so store text is basically used to capture the text attribute of any web element on your web page and store it in a variable.', 'start': 7512.116, 'duration': 8.483}, {'end': 7523.12, 'text': 'use it as an assertion point store value.', 'start': 7520.599, 'duration': 2.521}, {'end': 7529.363, 'text': 'so store value again is used to store the value attribute of any web element like.', 'start': 7523.12, 'duration': 6.243}, {'end': 7535.465, 'text': 'so you have a lot of web elements on the web page and say one of the attributes is what you want to do an assertion on.', 'start': 7529.363, 'duration': 6.102}, {'end': 7542.727, 'text': 'so what you can do is you can use the store value command here, get the value attribute of your web element and store it in a variable.', 'start': 7535.465, 'duration': 7.262}, {'end': 7544.828, 'text': "So let's see all these commands in action.", 'start': 7542.827, 'duration': 2.001}, {'end': 7546.788, 'text': "So let's go back to the same example.", 'start': 7544.988, 'duration': 1.8}, {'end': 7549.149, 'text': 'So we have this Amazon test script example.', 'start': 7546.949, 'duration': 2.2}, {'end': 7552.57, 'text': "So what I'll do is say instead of using Amazon, let's do one thing.", 'start': 7549.249, 'duration': 3.321}, {'end': 7554.49, 'text': "So let's create another test case itself.", 'start': 7552.61, 'duration': 1.88}], 'summary': 'Store text and value commands capture web element attributes for assertion points.', 'duration': 42.374, 'max_score': 7512.116, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY7512116.jpg'}, {'end': 7625.12, 'src': 'embed', 'start': 7597.326, 'weight': 1, 'content': [{'end': 7602.207, 'text': "I created a variable called val title and I'm storing the actual title into this variable.", 'start': 7597.326, 'duration': 4.881}, {'end': 7604.588, 'text': "so let's also display this on our console.", 'start': 7602.207, 'duration': 2.381}, {'end': 7607.789, 'text': "so I'll add a command here, echo and in target.", 'start': 7604.588, 'duration': 3.201}, {'end': 7609.709, 'text': 'how do I use the variable now?', 'start': 7607.789, 'duration': 1.92}, {'end': 7610.83, 'text': 'this is the way to use it.', 'start': 7609.709, 'duration': 1.121}, {'end': 7615.751, 'text': "I'll say dollar and in flower braces I will give the variable name which I have defined earlier.", 'start': 7610.83, 'duration': 4.921}, {'end': 7618.794, 'text': 'so it is var, i-t-l-e title.', 'start': 7616.011, 'duration': 2.783}, {'end': 7619.675, 'text': 'okay, so this is all.', 'start': 7618.794, 'duration': 0.881}, {'end': 7625.12, 'text': "my script is where i'm storing the title of the web page and i'm displaying it in my console or the lock.", 'start': 7619.675, 'duration': 5.445}], 'summary': "Created a variable 'title' to store webpage title and displayed it in console.", 'duration': 27.794, 'max_score': 7597.326, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY7597326.jpg'}, {'end': 7840.542, 'src': 'embed', 'start': 7814.303, 'weight': 2, 'content': [{'end': 7818.666, 'text': 'So it has taken the title, it has printed the value on the line 7.', 'start': 7814.303, 'duration': 4.363}, {'end': 7826.212, 'text': 'So it says store value on this particular element and the value was stored in the variable var btn value.', 'start': 7818.666, 'duration': 7.546}, {'end': 7834.077, 'text': 'So that command was successful and the value actually which was got stored and which we retrieved using echo statement was giogo,', 'start': 7826.492, 'duration': 7.585}, {'end': 7835.698, 'text': "and that's exactly what we had here.", 'start': 7834.077, 'duration': 1.621}, {'end': 7838.881, 'text': 'If you want to check again, go here to inspect element.', 'start': 7835.959, 'duration': 2.922}, {'end': 7840.542, 'text': 'the one which is highlighted.', 'start': 7839.341, 'duration': 1.201}], 'summary': "The value 'giogo' was successfully stored and retrieved on line 7.", 'duration': 26.239, 'max_score': 7814.303, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY7814303.jpg'}], 'start': 6756.522, 'title': 'Selenium testing with commands', 'summary': 'Provides an overview of selenium hq documentation, including instructions for sending search text to google.com, creating test cases and suites, and understanding the test log and reference features. it also details the process of creating and executing a test script for amazon.in using selenium ide, including steps to record, execute, and save the script, as well as exporting it to java junit format. additionally, it explains the usage of selenium accessor commands such as store, store title, store text, and store value for capturing and storing web page elements and their attributes, displaying them on the console, and creating verification points.', 'chapters': [{'end': 6882.445, 'start': 6756.522, 'title': 'Selenium hq documentation overview', 'summary': 'Provides an overview of selenium hq documentation, including instructions for sending search text to google.com, creating test cases and suites, and understanding the test log and reference features.', 'duration': 125.923, 'highlights': ['Instructions for sending search text to Google.com The chapter includes instructions for sending search text to Google.com, demonstrating the practical application of the Selenium HQ documentation.', 'Creating and managing test cases and suites It explains the process of creating and managing test cases and suites, including adding new test cases and organizing them into test suites.', 'Understanding the test log and reference features It emphasizes the importance of the test log, which records the execution status of test cases, and the reference tab, providing detailed descriptions of commands.']}, {'end': 7457.768, 'start': 6882.796, 'title': 'Creating and executing a test script for amazon.in', 'summary': 'Details the process of creating and executing a test script for amazon.in using selenium ide, including steps to record, execute, and save the script, as well as exporting it to java junit format. it also explains the classification of selenium commands into action commands, accessors, and assertions, along with examples of using action commands like echo to display messages in the console.', 'duration': 574.972, 'highlights': ['The process of creating and executing a test script for Amazon.in using Selenium IDE is detailed, including steps to record, execute, and save the script, as well as exporting it to Java JUnit format. Creating and executing a test script for Amazon.in using Selenium IDE, recording, executing, and saving the script, exporting to Java JUnit format.', 'The classification of Selenium commands into action commands, accessors, and assertions is explained, along with examples of using action commands like echo to display messages in the console. Classification of Selenium commands into action commands, accessors, and assertions, examples of using action commands like echo to display messages in the console.', 'Describing the process of continuing recording from a specific point in the script and manually adding commands in the test script using Selenium IDE. Continuing recording from a specific point in the script, manually adding commands in the test script using Selenium IDE.']}, {'end': 7901.78, 'start': 7458.048, 'title': 'Selenium accessor commands', 'summary': 'Explains the usage of selenium accessor commands, including store, store title, store text, and store value, for capturing and storing web page elements and their attributes, displaying them on the console, and creating verification points.', 'duration': 443.732, 'highlights': ['Selenium Accessor Commands The chapter explains the usage of Selenium Accessor Commands.', 'Usage of store, store title, store text, and store value The transcript demonstrates the usage of store, store title, store text, and store value commands for capturing and storing web page elements and their attributes.', 'Capturing and storing web page elements and their attributes The commands allow capturing and storing the title, text, and value attributes of web page elements for further usage.', 'Displaying stored values on the console The transcript shows the usage of echo command for displaying the stored values, such as the title, text, and value, on the console.', 'Creating verification points The stored values can be used to create assertions or verification points, enhancing the testing process.']}], 'duration': 1145.258, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY6756522.jpg', 'highlights': ['Instructions for sending search text to Google.com, demonstrating the practical application of the Selenium HQ documentation.', 'Creating and managing test cases and suites, including adding new test cases and organizing them into test suites.', 'Understanding the test log, which records the execution status of test cases, and the reference tab, providing detailed descriptions of commands.', 'The process of creating and executing a test script for Amazon.in using Selenium IDE, recording, executing, and saving the script, exporting to Java JUnit format.', 'Classification of Selenium commands into action commands, accessors, and assertions, examples of using action commands like echo to display messages in the console.', 'Describing the process of continuing recording from a specific point in the script, manually adding commands in the test script using Selenium IDE.', 'The chapter explains the usage of Selenium Accessor Commands.', 'The transcript demonstrates the usage of store, store title, store text, and store value commands for capturing and storing web page elements and their attributes.', 'The commands allow capturing and storing the title, text, and value attributes of web page elements for further usage.', 'The transcript shows the usage of echo command for displaying the stored values, such as the title, text, and value, on the console.', 'The stored values can be used to create assertions or verification points, enhancing the testing process.']}, {'end': 8894.456, 'segs': [{'end': 7961.444, 'src': 'embed', 'start': 7938.549, 'weight': 1, 'content': [{'end': 7946.195, 'text': "your rest of the test case test is not going to run and it's going to immediately stop the test and also it is going to flag the test case as fail.", 'start': 7938.549, 'duration': 7.646}, {'end': 7953.477, 'text': 'What is verify? Verify is something where this Selenium ID it logs that particular assertion as fail.', 'start': 7946.295, 'duration': 7.182}, {'end': 7957.399, 'text': 'However, it would continue with the rest of the steps in the test case.', 'start': 7953.657, 'duration': 3.742}, {'end': 7961.444, 'text': 'And then at the end of it, your overall test case is flagged as fail.', 'start': 7957.719, 'duration': 3.725}], 'summary': 'If a test case fails during verification, it stops and flags as fail, logging the assertion as fail.', 'duration': 22.895, 'max_score': 7938.549, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY7938549.jpg'}, {'end': 8167.419, 'src': 'embed', 'start': 8137.4, 'weight': 4, 'content': [{'end': 8141.204, 'text': "Now let's go ahead and change this assert title to verify title.", 'start': 8137.4, 'duration': 3.804}, {'end': 8148.971, 'text': "So simply what I will do in the command itself instead of assert, I'll say verify title and now let's execute this and see what happens.", 'start': 8141.444, 'duration': 7.527}, {'end': 8152.994, 'text': "Now let me close this window first and then I'll say run test.", 'start': 8149.211, 'duration': 3.783}, {'end': 8154.295, 'text': 'Running assert test.', 'start': 8153.314, 'duration': 0.981}, {'end': 8156.015, 'text': 'Amazon.int was opened.', 'start': 8154.615, 'duration': 1.4}, {'end': 8157.196, 'text': 'Window size was set.', 'start': 8156.275, 'duration': 0.921}, {'end': 8161.557, 'text': 'Verify title failed because the titles were different because we have modified that.', 'start': 8157.576, 'duration': 3.981}, {'end': 8167.419, 'text': 'However, do you see this fourth line being executed? Click on link test bestseller and click on close.', 'start': 8161.797, 'duration': 5.622}], 'summary': 'Modified assert to verify title, test failed with different titles, link test bestseller and close executed.', 'duration': 30.019, 'max_score': 8137.4, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY8137400.jpg'}, {'end': 8309.431, 'src': 'embed', 'start': 8279.231, 'weight': 0, 'content': [{'end': 8280.832, 'text': 'that is exactly what we are saying, right?', 'start': 8279.231, 'duration': 1.601}, {'end': 8285.895, 'text': 'so wait for is used until for a condition and until that condition is true.', 'start': 8280.832, 'duration': 5.063}, {'end': 8292.119, 'text': "so I am saying here I Please wait for this particular element, which I'm going to give it in target, until it is visible.", 'start': 8285.895, 'duration': 6.224}, {'end': 8296.262, 'text': "Now the target is, I'm just going to select the target from this web page itself.", 'start': 8292.279, 'duration': 3.983}, {'end': 8299.644, 'text': "So I'll say select target and I'm going to select this particular text.", 'start': 8296.422, 'duration': 3.222}, {'end': 8300.844, 'text': 'Come back here to your ID.', 'start': 8299.964, 'duration': 0.88}, {'end': 8303.406, 'text': 'So wait for the element to be visible.', 'start': 8300.965, 'duration': 2.441}, {'end': 8306.227, 'text': 'What is the element to be visible is this hello world text.', 'start': 8303.505, 'duration': 2.722}, {'end': 8309.431, 'text': 'and then you need to give a value here.', 'start': 8307.549, 'duration': 1.882}], 'summary': 'Instructing to wait for a specific element to be visible on the web page before proceeding.', 'duration': 30.2, 'max_score': 8279.231, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY8279231.jpg'}, {'end': 8797.075, 'src': 'embed', 'start': 8769.108, 'weight': 6, 'content': [{'end': 8771.312, 'text': 'This is all our test case is going to be okay.', 'start': 8769.108, 'duration': 2.204}, {'end': 8773.696, 'text': 'So what is that we did we do in this test case.', 'start': 8771.372, 'duration': 2.324}, {'end': 8782.324, 'text': 'we created a variable username and password and assigned the actual username and password, and then we are just calling this login test.', 'start': 8774.076, 'duration': 8.248}, {'end': 8788.93, 'text': 'and in this login test this username and password will get passed, which will be user1 and pwd1,', 'start': 8782.324, 'duration': 6.606}, {'end': 8793.674, 'text': 'and then it will execute this test with the or with the value which we have passed to this variable names.', 'start': 8788.93, 'duration': 4.744}, {'end': 8797.075, 'text': 'So now which test case we need to run? The invalid credential.', 'start': 8793.854, 'duration': 3.221}], 'summary': 'Test case created with username, password as user1, pwd1, to execute invalid credential test.', 'duration': 27.967, 'max_score': 8769.108, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY8769108.jpg'}], 'start': 7901.8, 'title': 'Selenium assertions, wait for, and test script reusability', 'summary': 'Explains selenium assertions, featuring assert, verify, and wait for, emphasizing hard and soft assertions, wait for element visible, and reusability of test scripts in selenium ide, showcasing practical examples and usage scenarios.', 'chapters': [{'end': 8193.339, 'start': 7901.8, 'title': 'Selenium assertions explained', 'summary': 'Explains assertions in selenium, including the types of assertions - assert, verify, and wait for, their functionalities, and usage scenarios in test cases, with an emphasis on hard and soft assertions and their impact on test execution.', 'duration': 291.539, 'highlights': ['Assert is a hard assertion that immediately stops the test and flags it as a failure if the assertion fails, while verify is a soft assertion that logs the failure but continues with the rest of the steps and flags the test case as a failure at the end. Assert vs. Verify: assert is a hard assertion that stops the test immediately upon failure, while verify is a soft assertion that continues with the test and flags it as a failure at the end.', 'Hard assertion (assert) stops the test immediately upon failure, while soft assertion (verify) allows the test to continue and flags it as a failure at the end, impacting the test execution differently based on the assertion type. Impact of Hard vs. Soft Assertion: Hard assertion stops the test immediately upon failure, while soft assertion allows the test to continue and flags it as a failure at the end, impacting the test execution differently based on the assertion type.', 'Wait for is used to wait for a certain condition to be true before proceeding to further steps, and if the condition fails, it flags the test case as a failure at the end, similar to a soft assertion. Functionality of WaitFor: wait for a certain condition to be true before proceeding to further steps, and if the condition fails, it flags the test case as a failure at the end, similar to a soft assertion.']}, {'end': 8458.895, 'start': 8193.398, 'title': 'Using wait for in test automation', 'summary': 'Discusses the usage of wait for in test automation, demonstrating its application in a practical example involving a website that dynamically loads an element. the process involves using wait for element visible, setting a timeout, and placing the assert text command after the wait for element to ensure the element is visible before asserting the text.', 'duration': 265.497, 'highlights': ['The process involves using wait for element visible, setting a timeout, and placing the assert text command after the wait for element to ensure the element is visible before asserting the text.', 'The example demonstrates the use of wait for by waiting for an element to become visible after clicking a start button, then asserting the text once it is visible.', 'The mistake of placing the assert text command before the wait for element, leading to the window being closed before the assertion, is highlighted as a debugging scenario.', 'The importance of sequencing the commands properly, such as placing the assert text command after the wait for element, is emphasized for successful execution of the test automation.', 'The significance of specifying an adequate timeout value, demonstrated through adjusting the timeout from 3000 milliseconds to 10000 milliseconds, is highlighted for ensuring the element becomes visible within the specified time.']}, {'end': 8894.456, 'start': 8458.975, 'title': 'Selenium ide: test script reusability', 'summary': 'Highlights the reusability of test scripts in selenium ide, demonstrating how to create a login test case and then reuse it for testing with different user credentials, showcasing the capability to run one script from another and parameterizing the test data.', 'duration': 435.481, 'highlights': ['The chapter focuses on the reusability of test scripts in Selenium IDE, emphasizing the efficiency gained by creating a login test case and reusing it for various scenarios, thus avoiding redundant script creation (e.g., login steps) for each test case.', 'It demonstrates how to run one script from another in Selenium IDE, specifically showcasing the creation of a login test case and its subsequent reuse for testing with multiple user credentials, thereby improving testing efficiency and reducing redundant script creation.', 'The chapter highlights the parameterization of test data in Selenium IDE, illustrating the process of assigning values for variables like username and password, enabling the testing of various scenarios (e.g., valid and invalid credentials) without needing to create separate test cases.']}], 'duration': 992.656, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY7901800.jpg', 'highlights': ['Assert vs. Verify: assert is a hard assertion that stops the test immediately upon failure, while verify is a soft assertion that continues with the test and flags it as a failure at the end.', 'Hard assertion stops the test immediately upon failure, while soft assertion allows the test to continue and flags it as a failure at the end, impacting the test execution differently based on the assertion type.', 'Wait for is used to wait for a certain condition to be true before proceeding to further steps, and if the condition fails, it flags the test case as a failure at the end, similar to a soft assertion.', 'The process involves using wait for element visible, setting a timeout, and placing the assert text command after the wait for element to ensure the element is visible before asserting the text.', 'The example demonstrates the use of wait for by waiting for an element to become visible after clicking a start button, then asserting the text once it is visible.', 'The mistake of placing the assert text command before the wait for element, leading to the window being closed before the assertion, is highlighted as a debugging scenario.', 'The chapter focuses on the reusability of test scripts in Selenium IDE, emphasizing the efficiency gained by creating a login test case and reusing it for various scenarios, thus avoiding redundant script creation (e.g., login steps) for each test case.', 'It demonstrates how to run one script from another in Selenium IDE, specifically showcasing the creation of a login test case and its subsequent reuse for testing with multiple user credentials, thereby improving testing efficiency and reducing redundant script creation.', 'The chapter highlights the parameterization of test data in Selenium IDE, illustrating the process of assigning values for variables like username and password, enabling the testing of various scenarios (e.g., valid and invalid credentials) without needing to create separate test cases.']}, {'end': 9760.685, 'segs': [{'end': 8995.562, 'src': 'embed', 'start': 8961.72, 'weight': 1, 'content': [{'end': 8965.483, 'text': "So I'll say my user at gmail.com.", 'start': 8961.72, 'duration': 3.763}, {'end': 8967.885, 'text': "This is just a dummy user ID and password I'll use.", 'start': 8965.624, 'duration': 2.261}, {'end': 8970.347, 'text': "And I'll say password as password one.", 'start': 8967.965, 'duration': 2.382}, {'end': 8972.249, 'text': "Then I'll click on login button.", 'start': 8970.507, 'duration': 1.742}, {'end': 8974.01, 'text': "Let's stop the recording here.", 'start': 8972.369, 'duration': 1.641}, {'end': 8978.134, 'text': "So let's read the script once, whether it has got everything, whatever we need.", 'start': 8974.03, 'duration': 4.104}, {'end': 8979.735, 'text': 'Okay It has launched Facebook.', 'start': 8978.274, 'duration': 1.461}, {'end': 8981.276, 'text': 'it clicked on email id.', 'start': 8980.075, 'duration': 1.201}, {'end': 8987.018, 'text': "there's a double clicks here because i happen to click twice on the email id field.", 'start': 8981.276, 'duration': 5.742}, {'end': 8987.738, 'text': "so what i'll do?", 'start': 8987.018, 'duration': 0.72}, {'end': 8995.562, 'text': "i'll remove one we don't need it and then i'm typing the keys, which is myuser.gmail, and then i'm clicking on the password field,", 'start': 8987.738, 'duration': 7.824}], 'summary': 'A user logs in with dummy credentials, clicks on login, and interacts with facebook.', 'duration': 33.842, 'max_score': 8961.72, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY8961720.jpg'}, {'end': 9202.749, 'src': 'embed', 'start': 9176.228, 'weight': 6, 'content': [{'end': 9183.436, 'text': 'Now what you need to do is once you execute this, once you say run test, what it will do is it will come till here, till your breakpoint.', 'start': 9176.228, 'duration': 7.208}, {'end': 9188.902, 'text': 'It will execute all the commands before that and it stops or pauses your execution at this point.', 'start': 9183.716, 'duration': 5.186}, {'end': 9190.763, 'text': "okay, let's go ahead and see how it does.", 'start': 9189.082, 'duration': 1.681}, {'end': 9196.146, 'text': "so what I'll do is I've added a breakpoint at the click on password field and I will say execute this test.", 'start': 9190.763, 'duration': 5.383}, {'end': 9198.447, 'text': 'do you see here it says paused in the debugger.', 'start': 9196.146, 'duration': 2.301}, {'end': 9202.749, 'text': 'so by adding breakpoint, my test has entered the debugging mode.', 'start': 9198.447, 'duration': 4.302}], 'summary': 'Executing test with breakpoint allows pausing at specific commands for debugging.', 'duration': 26.521, 'max_score': 9176.228, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY9176228.jpg'}, {'end': 9377.657, 'src': 'embed', 'start': 9348.936, 'weight': 0, 'content': [{'end': 9350.998, 'text': "I'll just simply go ahead and run this test case.", 'start': 9348.936, 'duration': 2.062}, {'end': 9353.84, 'text': 'do you see that it did not stop at this breakpoint?', 'start': 9350.998, 'duration': 2.842}, {'end': 9356.422, 'text': 'it went ahead and completed the execution.', 'start': 9353.84, 'duration': 2.582}, {'end': 9359.324, 'text': 'why? because I have temporarily disabled it.', 'start': 9356.422, 'duration': 2.902}, {'end': 9363.688, 'text': 'once I remove the selection and run it, it is again going to stop at the breakpoints.', 'start': 9359.324, 'duration': 4.364}, {'end': 9365.389, 'text': 'So this is how it works.', 'start': 9363.988, 'duration': 1.401}, {'end': 9369.572, 'text': 'So we saw adding of breakpoints, removing of breakpoints and disabling of breakpoints.', 'start': 9365.629, 'duration': 3.943}, {'end': 9373.954, 'text': 'What is the next one? Enter debugger by using play to this point option.', 'start': 9369.812, 'duration': 4.142}, {'end': 9377.657, 'text': "Okay Now another way of doing this is, so let's remove all this breakpoint.", 'start': 9374.074, 'duration': 3.583}], 'summary': "The speaker demonstrates adding, removing, and temporarily disabling breakpoints in a debugging session, and also mentions entering the debugger by using the 'play to this point' option.", 'duration': 28.721, 'max_score': 9348.936, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY9348936.jpg'}], 'start': 8894.757, 'title': 'Debugging test scripts in selenium ide', 'summary': 'Explores debugging functionalities of selenium ide, including step execution, recording a new test script for facebook login, and identifying errors. it also covers debugging options in test scripts, such as adding, removing, and disabling breakpoints, entering the debugger programmatically, and pausing on exceptions for efficient debugging of test cases.', 'chapters': [{'end': 9003.565, 'start': 8894.757, 'title': 'Selenium ide: test case debugging', 'summary': 'Explores the debugging functionalities of selenium ide, including step execution and recording a new test script for facebook login, demonstrating the process and identifying an error in the recorded script.', 'duration': 108.808, 'highlights': ['The chapter discusses the debugging functionalities of Selenium IDE, including step execution, and demonstrates the process by creating a new test script for Facebook login, showcasing the recording and identifying an error in the script.', 'The speaker explains the process of recording a new test script for Facebook login, demonstrating the steps of inputting a dummy email ID and password, and identifies an error in the recorded script due to double clicks on the email ID field.', 'The speaker showcases the process of recording a new test script for Facebook login, demonstrating the steps of inputting a dummy email ID and password, and identifies an error in the recorded script due to an incorrect password entry, which triggers an error message.']}, {'end': 9760.685, 'start': 9003.565, 'title': 'Debugging options in test script', 'summary': 'Covers the usage of debugging options in test scripts, including step execution, adding, removing, and disabling breakpoints, entering the debugger programmatically, and pausing on exceptions to facilitate efficient debugging of test cases.', 'duration': 757.12, 'highlights': ['The chapter covers the usage of debugging options in test scripts Provides an overview of the main topic of the transcript.', 'including step execution, adding, removing, and disabling breakpoints Explains the key debugging options discussed in the transcript.', 'entering the debugger programmatically Describes an advanced debugging technique mentioned in the session.', 'pausing on exceptions to facilitate efficient debugging of test cases Highlights a crucial feature for efficient debugging and error handling in test scripts.']}], 'duration': 865.928, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY8894757.jpg', 'highlights': ['The chapter discusses the debugging functionalities of Selenium IDE, including step execution, and demonstrates the process by creating a new test script for Facebook login, showcasing the recording and identifying an error in the script.', 'The speaker explains the process of recording a new test script for Facebook login, demonstrating the steps of inputting a dummy email ID and password, and identifies an error in the recorded script due to double clicks on the email ID field.', 'The speaker showcases the process of recording a new test script for Facebook login, demonstrating the steps of inputting a dummy email ID and password, and identifies an error in the recorded script due to an incorrect password entry, which triggers an error message.', 'The chapter covers the usage of debugging options in test scripts Provides an overview of the main topic of the transcript.', 'including step execution, adding, removing, and disabling breakpoints Explains the key debugging options discussed in the transcript.', 'entering the debugger programmatically Describes an advanced debugging technique mentioned in the session.', 'pausing on exceptions to facilitate efficient debugging of test cases Highlights a crucial feature for efficient debugging and error handling in test scripts.']}, {'end': 10591.752, 'segs': [{'end': 9968.731, 'src': 'embed', 'start': 9926.734, 'weight': 1, 'content': [{'end': 9928.735, 'text': 'So this is a calorie calculator website.', 'start': 9926.734, 'duration': 2.001}, {'end': 9934.18, 'text': 'In this website, we are saying if the gender is male, then click on the male radio button.', 'start': 9928.795, 'duration': 5.385}, {'end': 9939.704, 'text': "So you have multiple fields here where you're accepting the age of a person, the gender of a person, the height,", 'start': 9934.22, 'duration': 5.484}, {'end': 9946.966, 'text': 'the weight and then the activity level of the person and when, when you click on calculate, this is going to give you the number of calories.', 'start': 9939.704, 'duration': 7.262}, {'end': 9953.027, 'text': 'so for our purpose, for our demo use case, what we will do is we will store the gender to be selected in a variable.', 'start': 9946.966, 'duration': 6.061}, {'end': 9961.109, 'text': "say, for example, i want a gender female to be selected and then i'm going to write an if condition here that if the gender is male, right.", 'start': 9953.027, 'duration': 8.082}, {'end': 9968.731, 'text': "so if the gender is male, then click on the male radio button here and then i'm saying click, act from the activity drop down.", 'start': 9961.109, 'duration': 7.622}], 'summary': 'Calorie calculator website with fields for age, gender, height, weight, and activity level to calculate calories.', 'duration': 41.997, 'max_score': 9926.734, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY9926734.jpg'}, {'end': 10092.039, 'src': 'embed', 'start': 10067.635, 'weight': 6, 'content': [{'end': 10073.441, 'text': 'I will say if in the command once I say if in the target you need to specify the condition.', 'start': 10067.635, 'duration': 5.806}, {'end': 10077.405, 'text': 'Now, condition is I want to check for dollar.', 'start': 10073.621, 'duration': 3.784}, {'end': 10080.007, 'text': "that's my variable where gender.", 'start': 10077.405, 'duration': 2.602}, {'end': 10083.891, 'text': 'I want to check if this is equal to f, and how is that I can check?', 'start': 10080.007, 'duration': 3.884}, {'end': 10086.053, 'text': 'I need to use 3 equal to here.', 'start': 10083.891, 'duration': 2.162}, {'end': 10088.576, 'text': "in double quotes I'm going to mention f.", 'start': 10086.053, 'duration': 2.523}, {'end': 10092.039, 'text': "Now this is what I've stored in the variable where gender this is what I'm going to check.", 'start': 10088.576, 'duration': 3.463}], 'summary': "Using 'if' statement to check if 'where gender' equals 'f' using '==='", 'duration': 24.404, 'max_score': 10067.635, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10067635.jpg'}, {'end': 10196.469, 'src': 'embed', 'start': 10168.803, 'weight': 4, 'content': [{'end': 10172.363, 'text': 'there are some mouse move, mouse up, which i really do not need.', 'start': 10168.803, 'duration': 3.56}, {'end': 10174.804, 'text': "so what i will do is i'll just delete this.", 'start': 10172.363, 'duration': 2.441}, {'end': 10176.664, 'text': 'so this is the simple statement.', 'start': 10174.804, 'duration': 1.86}, {'end': 10179.405, 'text': "what i need in the else, where i'm saying select.", 'start': 10176.664, 'duration': 2.741}, {'end': 10185.946, 'text': 'so select is something, a command which is used to select a web element which is your drop down.', 'start': 10179.405, 'duration': 6.541}, {'end': 10196.469, 'text': 'so you select the drop down here and once the drop down is clicked and then you go ahead and click on this particular target is nothing but your active daily exercises or intense.', 'start': 10185.946, 'duration': 10.523}], 'summary': "Code includes unnecessary mouse actions and a 'select' command to interact with a dropdown menu.", 'duration': 27.666, 'max_score': 10168.803, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10168803.jpg'}, {'end': 10322.475, 'src': 'embed', 'start': 10292.249, 'weight': 0, 'content': [{'end': 10293.83, 'text': 'store command ran successfully.', 'start': 10292.249, 'duration': 1.581}, {'end': 10294.991, 'text': 'it came to the if condition.', 'start': 10293.83, 'duration': 1.161}, {'end': 10297.952, 'text': 'It checked if the gender was f or m.', 'start': 10295.331, 'duration': 2.621}, {'end': 10299.873, 'text': 'It found that this condition is not true.', 'start': 10297.952, 'duration': 1.921}, {'end': 10303.414, 'text': 'So can you see here all these other statements in the if are in black color.', 'start': 10299.973, 'duration': 3.441}, {'end': 10305.095, 'text': 'That means these were not executed.', 'start': 10303.474, 'duration': 1.621}, {'end': 10310.277, 'text': 'Instead it came to the else part and then it executed all the commands in the else part.', 'start': 10305.415, 'duration': 4.862}, {'end': 10314.719, 'text': 'So this is how you use a if condition in your Selenium IDE.', 'start': 10310.377, 'duration': 4.342}, {'end': 10315.539, 'text': "So let's close this.", 'start': 10314.759, 'duration': 0.78}, {'end': 10322.475, 'text': 'Now as I said there are other looping statements what we have like while end loop or do repeat and times end.', 'start': 10315.99, 'duration': 6.485}], 'summary': "Store command ran successfully, if condition checked for 'f' or 'm' gender, and executed else part in selenium ide.", 'duration': 30.226, 'max_score': 10292.249, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10292249.jpg'}, {'end': 10591.752, 'src': 'embed', 'start': 10553.666, 'weight': 2, 'content': [{'end': 10556.129, 'text': "let's execute this and then change the number of times.", 'start': 10553.666, 'duration': 2.463}, {'end': 10558.552, 'text': 'so if I say run test here, so can you see this?', 'start': 10556.129, 'duration': 2.423}, {'end': 10560.634, 'text': 'the number of times it got iterated.', 'start': 10558.552, 'duration': 2.082}, {'end': 10562.797, 'text': 'and now the value is hundred and two.', 'start': 10560.634, 'duration': 2.163}, {'end': 10565.239, 'text': 'why? because initial value was hundred.', 'start': 10562.797, 'duration': 2.442}, {'end': 10570.244, 'text': 'in the loop, which is the times loop, I am saying the iterations is two and two times.', 'start': 10565.239, 'duration': 5.005}, {'end': 10573.185, 'text': 'execute the command which increments the counter by one.', 'start': 10570.244, 'duration': 2.941}, {'end': 10575.306, 'text': 'so that is why your counter value becomes 102.', 'start': 10573.185, 'duration': 2.121}, {'end': 10581.849, 'text': 'now say i increase this to say 10 so that we get a feel of how the loop executes here.', 'start': 10575.306, 'duration': 6.543}, {'end': 10582.649, 'text': 'and same thing.', 'start': 10581.849, 'duration': 0.8}, {'end': 10584.25, 'text': 'i will execute it now.', 'start': 10582.649, 'duration': 1.601}, {'end': 10584.69, 'text': 'see it.', 'start': 10584.25, 'duration': 0.44}, {'end': 10587.851, 'text': 'you can visually see the number of times the loop is getting executed.', 'start': 10584.69, 'duration': 3.161}, {'end': 10590.812, 'text': 'all right, and in the log you can see the values also here.', 'start': 10587.851, 'duration': 2.961}, {'end': 10591.752, 'text': 'okay, can you see here?', 'start': 10590.812, 'duration': 0.94}], 'summary': 'Loop executed 10 times, counter value became 102.', 'duration': 38.086, 'max_score': 10553.666, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10553666.jpg'}], 'start': 9760.966, 'title': 'Automating test scripts with control flow statements and loops', 'summary': 'Discusses the availability of control flow statements in legacy and new ides, detailing conditional branching and looping with examples and use cases. it explains automating gender selection and corresponding activity on a website using if-else conditions and commands, and demonstrates using looping statements in selenium ide with examples of counters and conditions.', 'chapters': [{'end': 10027.226, 'start': 9760.966, 'title': 'Control flow statements in legacy and new ides', 'summary': 'Discusses the availability of control flow statements as plugins in legacy ides and out of the box in the new ide, detailing conditional branching and looping, with examples and use cases for if-else, while-end, do repeat, and for each loops in test scripts.', 'duration': 266.26, 'highlights': ['The availability of control flow statements as plugins in legacy IDEs and out of the box in the new IDE is discussed. In the legacy IDE, control flow statements were available as plugins, whereas in the new IDE, these are available out of the box.', 'Explanation of conditional branching and looping, including regular if-else, nested if-else, while-end, do repeat, and for each loops, is provided. The chapter explains the two types of control flow statements: conditional branching (regular if-else, nested if-else) and looping (while-end, do repeat, for each), offering a comprehensive overview of each type.', 'Demonstration of a use case for if-else and looping with test scripts, showcasing a simple counter using the loops. The chapter demonstrates a use case for if-else and looping with test scripts, highlighting a simple counter that increments using the loops.']}, {'end': 10310.277, 'start': 10027.226, 'title': 'Automating gender selection and activity', 'summary': 'Explains how to automate the selection of gender and corresponding activity on a website using if-else conditions and commands like store, if, else, select, and execute, with examples of executing the test script for both male and female genders.', 'duration': 283.051, 'highlights': ['The script automates the selection of gender and activity on a website using if-else conditions and commands like store, if, else, select, and execute. This highlights the main objective of the chapter, focusing on the automation process and the commands involved.', 'Executing the test script successfully for both male and female genders, showcasing the effectiveness of the automation process. This demonstrates the practical application of the automation script and its successful execution for different gender inputs.', 'Explaining the usage of if-else conditions and the execution of commands based on the condition being true or false. This emphasizes the importance of conditional statements and the execution flow based on the evaluation of the conditions.']}, {'end': 10591.752, 'start': 10310.377, 'title': 'Using looping statements in selenium ide', 'summary': 'Explains how to use while loop, do loop, and times loop in selenium ide, with examples demonstrating the use of counters and conditions, and how many times commands are executed.', 'duration': 281.375, 'highlights': ['The while loop is used to iterate a set of commands until a condition is met, demonstrated by counting from 1 to 5 and displaying the counter value. The while loop is used to iterate a set of commands until a condition is met, demonstrated by counting from 1 to 5 and displaying the counter value.', 'The do loop is used to execute commands and then check a condition, illustrated by incrementing a counter by 10 until it reaches 50 and printing its value. The do loop is used to execute commands and then check a condition, illustrated by incrementing a counter by 10 until it reaches 50 and printing its value.', 'The times loop is used to specify a number of iterations for a set of commands, as shown by incrementing a counter by 1 and executing the command twice, resulting in a counter value of 102. The times loop is used to specify a number of iterations for a set of commands, as shown by incrementing a counter by 1 and executing the command twice, resulting in a counter value of 102.']}], 'duration': 830.786, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY9760966.jpg', 'highlights': ['The new IDE provides control flow statements out of the box, while legacy IDEs required them as plugins.', 'The chapter offers a comprehensive overview of conditional branching and looping, including regular if-else, nested if-else, while-end, do repeat, and for each loops.', 'The chapter demonstrates a use case for if-else and looping with test scripts, highlighting a simple counter that increments using the loops.', 'The chapter focuses on automating gender selection and corresponding activity on a website using if-else conditions and commands like store, if, else, select, and execute.', 'The successful execution of the test script for both male and female genders showcases the effectiveness of the automation process.', 'The explanation emphasizes the importance of conditional statements and the execution flow based on the evaluation of the conditions.', 'The while loop is used to iterate a set of commands until a condition is met, demonstrated by counting from 1 to 5 and displaying the counter value.', 'The do loop is used to execute commands and then check a condition, illustrated by incrementing a counter by 10 until it reaches 50 and printing its value.', 'The times loop is used to specify a number of iterations for a set of commands, as shown by incrementing a counter by 1 and executing the command twice, resulting in a counter value of 102.']}, {'end': 12239.141, 'segs': [{'end': 10682.374, 'src': 'embed', 'start': 10651.871, 'weight': 0, 'content': [{'end': 10655.093, 'text': 'So we will need to go ahead and install a Node.js server for this.', 'start': 10651.871, 'duration': 3.222}, {'end': 10660.837, 'text': "So now let's look at all the installation steps which are involved in installing the side runner and running it.", 'start': 10655.233, 'duration': 5.604}, {'end': 10662.679, 'text': "So let's go to my notes.", 'start': 10661.218, 'duration': 1.461}, {'end': 10669.644, 'text': 'So the seleniumhq.org has a complete documentation on how to install this command line runner,', 'start': 10662.999, 'duration': 6.645}, {'end': 10673.267, 'text': 'how to use it and what are the different ways we can use this runner.', 'start': 10669.644, 'duration': 3.623}, {'end': 10682.374, 'text': "I'll just show you where it is and you can use this as a reference for any of the tests which you're creating and using the side runner to run it.", 'start': 10673.407, 'duration': 8.967}], 'summary': 'Install node.js server for selenium side runner with documentation from seleniumhq.org.', 'duration': 30.503, 'max_score': 10651.871, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10651871.jpg'}, {'end': 10785.083, 'src': 'embed', 'start': 10760.712, 'weight': 1, 'content': [{'end': 10767.573, 'text': 'Either you can go ahead and download the MSI installer or you can just download the zip and unzip it into any folder on your system.', 'start': 10760.712, 'duration': 6.861}, {'end': 10774.255, 'text': 'And since I am using Mac machine, what I have done is I have downloaded this version, PKG version and have installed it on my machine.', 'start': 10768.073, 'duration': 6.182}, {'end': 10782.921, 'text': "So once you download, say if you're working on the Windows machine, so say 64-bit is what you require and you click here and download the zip package.", 'start': 10774.795, 'duration': 8.126}, {'end': 10785.083, 'text': "I'll show you how the folder structure looks like.", 'start': 10782.921, 'duration': 2.162}], 'summary': 'Download msi or zip installer for windows, and pkg version for mac. show folder structure.', 'duration': 24.371, 'max_score': 10760.712, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10760712.jpg'}, {'end': 10893.468, 'src': 'embed', 'start': 10831.485, 'weight': 6, 'content': [{'end': 10840.193, 'text': "NPM is nothing, but it's a node.js package manager and it gets installed with your node and this is used to install all your other packages,", 'start': 10831.485, 'duration': 8.708}, {'end': 10842.855, 'text': 'or what it is called as modules, on your system.', 'start': 10840.193, 'duration': 2.662}, {'end': 10846.979, 'text': 'So now with this we know that our NPM has been installed properly.', 'start': 10843.196, 'duration': 3.783}, {'end': 10849.041, 'text': "So let's move to the next step of installation.", 'start': 10847.039, 'duration': 2.002}, {'end': 10851.023, 'text': 'So now we have our node.js installed.', 'start': 10849.161, 'duration': 1.862}, {'end': 10854.065, 'text': 'Now next thing is to install the selenium side runner.', 'start': 10851.283, 'duration': 2.782}, {'end': 10861.25, 'text': 'Now the selenium side runner is a library which is available to us and we need to install this library using the NPN.', 'start': 10854.165, 'duration': 7.085}, {'end': 10863.551, 'text': 'So let me go back to my terminal again.', 'start': 10861.45, 'duration': 2.101}, {'end': 10870.956, 'text': "So I'll just show you the command, what it is, what we use for installing this package or the library, and since I've already installed on my machine,", 'start': 10863.732, 'duration': 7.224}, {'end': 10873.058, 'text': 'I will not be doing the installation here.', 'start': 10870.956, 'duration': 2.102}, {'end': 10874.159, 'text': 'So what you need to do?', 'start': 10873.138, 'duration': 1.021}, {'end': 10883.524, 'text': 'so, if you are a Windows user, you can directly give the command as NPN install minus g selenium side runner okay,', 'start': 10874.159, 'duration': 9.365}, {'end': 10885.645, 'text': 'so this is the command which you need to give.', 'start': 10883.524, 'duration': 2.121}, {'end': 10893.468, 'text': "however, if you're a mac user or a unix user, since you need to use a root user here, what you need to do is just say sudo.", 'start': 10885.645, 'duration': 7.823}], 'summary': 'Npm is used to install node.js packages; selenium side runner can be installed using npm command.', 'duration': 61.983, 'max_score': 10831.485, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10831485.jpg'}, {'end': 11049.083, 'src': 'embed', 'start': 11018.67, 'weight': 4, 'content': [{'end': 11022.876, 'text': "However, any test cases or any automation scripts you're going to write,", 'start': 11018.67, 'duration': 4.206}, {'end': 11028.124, 'text': 'you want your scripts to run on all the browsers because you want to do a cross browser testing right?', 'start': 11022.876, 'duration': 5.248}, {'end': 11033.832, 'text': 'So for that purpose, what we do through command line is we install this browser drivers.', 'start': 11028.244, 'duration': 5.588}, {'end': 11037.134, 'text': 'So you say if you want to run your test cases on Edge browser.', 'start': 11034.532, 'duration': 2.602}, {'end': 11043.959, 'text': 'So that means you first need to install your Edge browse driver on your systems before you run your test case on Edge browser.', 'start': 11037.234, 'duration': 6.725}, {'end': 11049.083, 'text': 'If you want to do it for Chrome, similarly you need to download the Chrome web driver and install it.', 'start': 11044.359, 'duration': 4.724}], 'summary': 'Automate cross-browser testing by installing browser drivers for edge and chrome.', 'duration': 30.413, 'max_score': 11018.67, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY11018670.jpg'}], 'start': 10591.752, 'title': 'Selenium: installation, test execution, evolution, and advantages', 'summary': 'Discusses the installation and usage of selenium siderunner, including the installation of node.js server and selenium siderunner, along with the installation of browser drivers for cross-browser testing. it also covers the execution of test cases using selenium side runner, creating and running test suites, conducting cross-browser testing, achieving parallel testing in the ide, and the evolution and advantages of selenium as a popular web application automation tool.', 'chapters': [{'end': 11171.142, 'start': 10591.752, 'title': 'Installing and using selenium siderunner', 'summary': 'Discusses the installation and usage of selenium siderunner, including the installation of node.js server and selenium siderunner, along with the installation of browser drivers for cross-browser testing.', 'duration': 579.39, 'highlights': ['Selenium SideRunner allows running test cases parallelly and using grid setup for remote machine, with a mechanism to run Selenium IDE test cases on any browsers. Selenium SideRunner enables parallel test execution and remote machine testing, offering flexibility to run IDE test cases on various browsers.', 'Installation of Node.js server is a prerequisite for working with Selenium SideRunner, which is a powerful JavaScript based platform intensively used by developers worldwide for web application development. Node.js server installation is necessary for Selenium SideRunner, providing a powerful JavaScript platform for web application development.', 'Selenium SideRunner installation involves using NPM for installing the library, and verifying the installation by checking the version number. Selenium SideRunner is installed using NPM, and the installation is verified by checking the version number.', 'Browser drivers such as Chrome, Edge, and Firefox must be installed for cross-browser testing, with the drivers available for download on Selenium HQ website. Browser drivers for Chrome, Edge, and Firefox need to be installed from Selenium HQ website to facilitate cross-browser testing.']}, {'end': 11636.166, 'start': 11171.262, 'title': 'Selenium side runner: test execution and parallel testing', 'summary': 'Covers the installation steps and execution of test cases using selenium side runner, including creating and running test suites, conducting cross-browser testing, and achieving parallel testing in the ide, while also highlighting the limitations of the selenium ide.', 'duration': 464.904, 'highlights': ['Executing test cases with Selenium Side Runner after installation The chapter begins by explaining the installation steps required to set up the Selenium Side Runner for executing test cases from the command line.', 'Creating and running test suites with Selenium Side Runner The process of creating a test suite and adding test cases to it is detailed, with a demonstration of running the test suite and observing the sequential execution of multiple test cases.', 'Conducting cross-browser testing with Selenium Side Runner The method of using Selenium Side Runner to run test cases on multiple browsers is explained, along with the suggestion to create shell or bat scripts for executing test cases on various browsers to achieve cross-browser testing.', 'Achieving parallel testing in the IDE The steps to enable parallel testing in the IDE are described, with a demonstration of running test cases in parallel, showcasing the difference in execution time between sequential and parallel test runs.', 'Limitations of Selenium IDE The chapter concludes by highlighting the limitations of the Selenium IDE, including the inability to export scripts to WebDriver, lack of support for data-driven testing and database testing, and minimal reporting capabilities.']}, {'end': 11879.285, 'start': 11636.286, 'title': 'Selenium: evolution and advantages', 'summary': 'Explores the drawbacks of manual testing, the evolution of selenium as a popular web application automation tool, and the advantages of automation, emphasizing faster execution, reduced error-prone nature, and frequent test execution.', 'duration': 242.999, 'highlights': ["Selenium's introduction by Jason Huggins in 2004 due to the inefficiency of manual testing, leading to the creation of JavaScript Test Runner. Selenium was introduced by Jason Huggins in 2004, as he realized the inefficiency of manual testing and created a JavaScript program, named JavaScript Test Runner, to automatically control browser actions.", 'Challenges of manual testing include time-consuming processes, limited scope, and impracticality in working with large amounts of data and performance testing. Manual testing poses challenges such as time-consuming processes, limited scope, impracticality in working with large amounts of data, and difficulties in performance testing.', 'Advantages of automation include faster execution, reduced error-prone nature, and facilitating frequent test execution. Automation offers advantages such as faster execution, reduced error-prone nature, and facilitating frequent test execution.']}, {'end': 12239.141, 'start': 11879.665, 'title': 'Selenium: history, features, and major components', 'summary': "Provides an overview of selenium's history, features, and major components, highlighting its popularity as the most widely used automation tool for web applications, support for various browsers and programming languages, platform independence, and the suite of tools comprising selenium ide, selenium rc, selenium webdriver, and selenium grid.", 'duration': 359.476, 'highlights': ['Selenium is the most popular automation tool for web applications, supporting various browsers like Internet Explorer, Chrome, Firefox, Safari, Opera, and Edge, with platform independence and support for multiple programming languages. Selenium is widely used for automating web applications, supporting a variety of browsers, including Internet Explorer, Chrome, Firefox, Safari, Opera, and Edge, and offering platform independence and support for programming languages like Java, Python, C sharp, Ruby, and PHP.', 'Selenium comprises a suite of tools including Selenium IDE, Selenium RC, Selenium WebDriver, and Selenium Grid, with Selenium WebDriver being the most important component due to its simpler architecture and direct interaction with the browser. Selenium is not a single tool but a suite of tools, including Selenium IDE, Selenium RC, Selenium WebDriver, and Selenium Grid. Selenium WebDriver, the most vital component, has a simpler architecture than Selenium RC and directly interacts with the browser.', 'Selenium IDE, a simple record and playback tool, was initially a Firefox extension and later became a cross-browser extension for Chrome and Firefox, allowing users to create and replay scripts for prototyping and demo purposes. Selenium IDE, a simple tool for record and playback, initially functioned as a Firefox extension and later became a cross-browser extension for Chrome and Firefox, enabling script creation and replay for prototyping and demo purposes.']}], 'duration': 1647.389, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY10591752.jpg', 'highlights': ['Selenium SideRunner enables parallel test execution and remote machine testing, offering flexibility to run IDE test cases on various browsers.', 'Node.js server installation is necessary for Selenium SideRunner, providing a powerful JavaScript platform for web application development.', 'Selenium SideRunner is installed using NPM, and the installation is verified by checking the version number.', 'Browser drivers for Chrome, Edge, and Firefox need to be installed from Selenium HQ website to facilitate cross-browser testing.', 'The chapter begins by explaining the installation steps required to set up the Selenium Side Runner for executing test cases from the command line.', 'The process of creating a test suite and adding test cases to it is detailed, with a demonstration of running the test suite and observing the sequential execution of multiple test cases.', 'The method of using Selenium Side Runner to run test cases on multiple browsers is explained, along with the suggestion to create shell or bat scripts for executing test cases on various browsers to achieve cross-browser testing.', 'The steps to enable parallel testing in the IDE are described, with a demonstration of running test cases in parallel, showcasing the difference in execution time between sequential and parallel test runs.', 'Selenium was introduced by Jason Huggins in 2004, as he realized the inefficiency of manual testing and created a JavaScript program, named JavaScript Test Runner, to automatically control browser actions.', 'Manual testing poses challenges such as time-consuming processes, limited scope, impracticality in working with large amounts of data, and difficulties in performance testing.', 'Automation offers advantages such as faster execution, reduced error-prone nature, and facilitating frequent test execution.', 'Selenium is widely used for automating web applications, supporting a variety of browsers, including Internet Explorer, Chrome, Firefox, Safari, Opera, and Edge, and offering platform independence and support for programming languages like Java, Python, C sharp, Ruby, and PHP.', 'Selenium is not a single tool but a suite of tools, including Selenium IDE, Selenium RC, Selenium WebDriver, and Selenium Grid. Selenium WebDriver, the most vital component, has a simpler architecture than Selenium RC and directly interacts with the browser.', 'Selenium IDE, a simple tool for record and playback, initially functioned as a Firefox extension and later became a cross-browser extension for Chrome and Firefox, enabling script creation and replay for prototyping and demo purposes.']}, {'end': 14313.35, 'segs': [{'end': 12486.051, 'src': 'embed', 'start': 12459.423, 'weight': 0, 'content': [{'end': 12464.946, 'text': "Why Selenium WebDriver? So let's look at what led to replacement of Selenium RC with this WebDriver.", 'start': 12459.423, 'duration': 5.523}, {'end': 12468.588, 'text': 'For that first we need to understand the Selenium RC and its shortcomings.', 'start': 12465.106, 'duration': 3.482}, {'end': 12475.571, 'text': 'As I said Selenium RC is a simple tool to write tests for web applications in various supported programming languages.', 'start': 12468.808, 'duration': 6.763}, {'end': 12478.006, 'text': 'like Java, Python, Ruby, and C Sharp.', 'start': 12475.885, 'duration': 2.121}, {'end': 12481.488, 'text': 'And this is the architecture of the Selenium RC at a very high level.', 'start': 12478.106, 'duration': 3.382}, {'end': 12486.051, 'text': 'First, you need to write test scripts in any of the supported languages of your choice.', 'start': 12481.588, 'duration': 4.463}], 'summary': 'Selenium webdriver replaced selenium rc due to its shortcomings. selenium rc supports various programming languages like java, python, ruby, and c sharp.', 'duration': 26.628, 'max_score': 12459.423, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY12459423.jpg'}, {'end': 12545.229, 'src': 'embed', 'start': 12520.671, 'weight': 3, 'content': [{'end': 12526.516, 'text': 'Now what are the Selenese commands? These commands are nothing but the commands written in your test script.', 'start': 12520.671, 'duration': 5.845}, {'end': 12528.037, 'text': 'These are called a Selenese command.', 'start': 12526.676, 'duration': 1.361}, {'end': 12529.638, 'text': 'That is what the Selenium server does.', 'start': 12528.197, 'duration': 1.441}, {'end': 12534.081, 'text': "Now, after the Selenium servers function, let's look at how the browser interaction happens.", 'start': 12529.938, 'duration': 4.143}, {'end': 12537.644, 'text': 'The browser interaction happens through this RC server.', 'start': 12534.241, 'duration': 3.403}, {'end': 12543.408, 'text': 'This RC server uses a simple HTTP POST and GET request to communicate.', 'start': 12537.784, 'duration': 5.624}, {'end': 12545.229, 'text': 'And how does this communication happen?', 'start': 12543.628, 'duration': 1.601}], 'summary': 'Selenese commands are written in test script. rc server uses http post and get for browser interaction.', 'duration': 24.558, 'max_score': 12520.671, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY12520671.jpg'}, {'end': 12621.063, 'src': 'embed', 'start': 12596.712, 'weight': 5, 'content': [{'end': 12603.195, 'text': 'Now, if you see this complete cycle from starting your command from your test script talking to the RC server,', 'start': 12596.712, 'duration': 6.483}, {'end': 12605.336, 'text': 'then RC server talks to the web browser.', 'start': 12603.195, 'duration': 2.141}, {'end': 12612.799, 'text': 'it injects the JavaScript here, runs your command, takes back the results, sends it to RC server and then back to this test script.', 'start': 12605.336, 'duration': 7.463}, {'end': 12618.361, 'text': 'This whole cycle gets repeated for every command which is written in your test script.', 'start': 12612.919, 'duration': 5.442}, {'end': 12621.063, 'text': 'And this is how your test case gets executed.', 'start': 12618.681, 'duration': 2.382}], 'summary': 'Test script commands cycle through rc server, web browser, and back for execution.', 'duration': 24.351, 'max_score': 12596.712, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY12596712.jpg'}, {'end': 12660.828, 'src': 'embed', 'start': 12637.333, 'weight': 1, 'content': [{'end': 12643.897, 'text': 'the architecture of RC is very complicated because of that intermediate RC server to communicate with the browser.', 'start': 12637.333, 'duration': 6.564}, {'end': 12646.018, 'text': 'So there is no direct interaction with the browser.', 'start': 12643.937, 'duration': 2.081}, {'end': 12649.881, 'text': 'This RC server needs to be installed before running any test scripts.', 'start': 12646.198, 'duration': 3.683}, {'end': 12656.946, 'text': 'That means it has an additional setup because that is RC server is a mediator between your Selenium commands and your browser.', 'start': 12650.101, 'duration': 6.845}, {'end': 12659.888, 'text': 'The execution of the commands takes very long time.', 'start': 12657.146, 'duration': 2.742}, {'end': 12660.828, 'text': 'It is very slow.', 'start': 12660.028, 'duration': 0.8}], 'summary': 'The architecture of rc involves an intermediary server, resulting in slow command execution and additional setup requirements.', 'duration': 23.495, 'max_score': 12637.333, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY12637333.jpg'}, {'end': 13425.91, 'src': 'embed', 'start': 13400.598, 'weight': 6, 'content': [{'end': 13406.981, 'text': 'Actually this is not really much used unless you really need to look at anything in your HTML pages.', 'start': 13400.598, 'duration': 6.383}, {'end': 13410.362, 'text': 'And then there are two more get commands related to Windows handles.', 'start': 13407.341, 'duration': 3.021}, {'end': 13414.944, 'text': 'These are used for handling multiple tabs and multiple windows on the browser.', 'start': 13410.622, 'duration': 4.322}, {'end': 13417.945, 'text': "Now we will not be dealing with this in today's demo.", 'start': 13415.184, 'duration': 2.761}, {'end': 13423.488, 'text': 'However, if you want to know the details of this command, These are available in our video tutorials for these commands.', 'start': 13418.045, 'duration': 5.443}, {'end': 13425.91, 'text': 'The next set of commands are the navigational commands.', 'start': 13423.769, 'duration': 2.141}], 'summary': 'Html get commands for handling multiple tabs and windows. navigational commands next.', 'duration': 25.312, 'max_score': 13400.598, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY13400598.jpg'}, {'end': 13604.962, 'src': 'embed', 'start': 13579.964, 'weight': 7, 'content': [{'end': 13585.185, 'text': 'What this does is it just clicks on the web element or the button which we want to work with.', 'start': 13579.964, 'duration': 5.221}, {'end': 13590.326, 'text': "So now with these basic commands, let's go ahead and start writing our code for our test case.", 'start': 13585.385, 'duration': 4.941}, {'end': 13593.89, 'text': 'So what is the test case we are going to write today? So this is my use case today.', 'start': 13590.566, 'duration': 3.324}, {'end': 13603, 'text': "So use case one, as a user, I want to log into eBay application, search for JBL speakers and then I want to check the today's deal.", 'start': 13594.09, 'duration': 8.91}, {'end': 13604.962, 'text': "So there is something called as the day's deal.", 'start': 13603.14, 'duration': 1.822}], 'summary': "Creating a test case to log into ebay, search for jbl speakers, and check today's deal.", 'duration': 24.998, 'max_score': 13579.964, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY13579964.jpg'}], 'start': 12239.521, 'title': 'Evolution and benefits of selenium', 'summary': 'Covers the evolution of selenium, from its introduction by jason huggins to selenium rc and webdriver, highlighting their advantages such as faster execution, multi-browser support, and simplified architecture. it also explains the necessity of running automated test cases in parallel using selenium grid and provides practical examples of test case execution in eclipse.', 'chapters': [{'end': 12336.868, 'start': 12239.521, 'title': 'Selenium grid and evolution', 'summary': 'Explains the necessity of running automated test cases in parallel across multiple browsers and operating systems using selenium grid to save time, and discusses the evolution of selenium from its introduction by jason huggins as a javascript test runner with same origin policy issue.', 'duration': 97.347, 'highlights': ['Selenium Grid allows running automated test cases in parallel across multiple browsers and operating systems to save time. Running thousands of test cases sequentially with the web driver would take quite a bit of time, so running them in parallel on multiple machines using Selenium Grid is necessary to achieve efficient execution.', 'Introduction of Selenium by Jason Huggins as a JavaScript test runner had an issue with same origin policy. When Jason Huggins introduced Selenium, it was initially a JavaScript program with a major issue known as the same origin policy, which limited its access to web pages in different domains.']}, {'end': 12777.842, 'start': 12336.988, 'title': 'Evolution of selenium and advantages of webdriver', 'summary': 'Discusses the evolution of selenium from version 1 to 4, highlighting the transition from selenium remote control to webdriver, along with the shortcomings of selenium rc and the advantages of selenium webdriver, including the direct communication with the browser and the simplified architecture, resulting in faster test execution.', 'duration': 440.854, 'highlights': ['Selenium 4 features and transition from Selenium RC to WebDriver The chapter discusses the release of Selenium 4, its features such as W3C WebDriver standardization, improved IDE, and Selenium Grid, as well as the transition from Selenium Remote Control to WebDriver.', 'Shortcomings of Selenium RC The chapter highlights the complexities and drawbacks of Selenium Remote Control (RC), including the need for a separate server, slow execution speed due to indirect communication, and redundant/confusing APIs.', 'Advantages of Selenium WebDriver The advantages of Selenium WebDriver are emphasized, such as direct communication with the browser, elimination of the need for an additional server, and faster test execution speed due to the simplified architecture.']}, {'end': 13039.69, 'start': 12777.842, 'title': 'Selenium webdriver overview', 'summary': "Highlights the differences between selenium rc and webdriver, emphasizing webdriver's simplicity, faster execution, multi-browser support, and headless browser compatibility. it also explains the features and architecture of selenium webdriver, including its support for multiple programming languages and frameworks.", 'duration': 261.848, 'highlights': ["WebDriver has a simple architecture compared to RC, resulting in faster execution. WebDriver's simple architecture leads to faster test case execution compared to RC.", 'WebDriver supports multiple browsers, including headless browsers, making testing faster. WebDriver supports multiple browsers, including headless browsers, improving testing efficiency.', 'Selenium WebDriver supports various programming languages and frameworks such as TestNG, JUnit, and NUnit. Selenium WebDriver supports multiple programming languages and frameworks, enhancing its versatility.', 'WebDriver interacts directly with the browser, eliminating the need for an intermediate server like RC. WebDriver interacts directly with the browser, removing the requirement for an intermediate server, unlike RC.', 'Selenium WebDriver is compatible with headless browsers, improving testing speed. Selenium WebDriver is compatible with headless browsers, enhancing testing efficiency.']}, {'end': 13593.89, 'start': 13039.91, 'title': 'Selenium webdriver overview', 'summary': 'Provides an overview of selenium webdriver, including its architecture, limitations, and key commands such as get, navigational, and browser commands. it also highlights the support for integrating apm, autoit, and sequelie tools for mobile and image testing, as well as the capabilities provided by selenium grid and reporting tools.', 'duration': 553.98, 'highlights': ['Selenium WebDriver provides support for integrating APM, AutoIT, and Sequelie tools for mobile and image testing, making it a complete solution for automation needs. Selenium WebDriver supports integrating APM, AutoIT, and Sequelie tools for mobile and image testing, expanding its capabilities for automation needs.', 'Selenium WebDriver architecture includes REST APIs, JSON wire protocol, and browser drivers for Chrome, Firefox, Opera, Safari, and Edge. Selenium WebDriver architecture involves REST APIs, JSON wire protocol, and browser drivers for Chrome, Firefox, Opera, Safari, and Edge, enabling communication and interaction with browsers.', 'Selenium WebDriver limitations include inability to test mobile applications without APM, limited reporting capabilities, and challenges with image testing, which can be overcome by integrating the appropriate tools. Selenium WebDriver limitations include the need for APM to test mobile applications, limited reporting capabilities, and challenges with image testing, which can be addressed by integrating suitable tools.', 'Key commands in Selenium WebDriver include GET, navigational, and browser commands such as driver.get, driver.getTitle, driver.navigate.to, driver.close, driver.quit, driver.findElement, sendKeys, and click. Key commands in Selenium WebDriver include GET, navigational, and browser commands like driver.get, driver.getTitle, driver.navigate.to, driver.close, driver.quit, driver.findElement, sendKeys, and click, facilitating various actions on web elements.']}, {'end': 14313.35, 'start': 13594.09, 'title': 'Selenium test case execution', 'summary': 'Covers the demonstration of writing test scripts using selenium in eclipse, including setting up web driver, launching the browser, navigating to web pages, identifying web elements, and performing actions like entering text and clicking buttons. it also emphasizes the importance of using synchronization commands and provides a practical example of executing a test case for searching and navigating on ebay and simply learn websites.', 'duration': 719.26, 'highlights': ['Demonstrating writing test scripts using Selenium in Eclipse, including setting up web driver, launching the browser, navigating to web pages, identifying web elements, and performing actions like entering text and clicking buttons writing test scripts, setting up web driver, launching the browser, navigating to web pages, identifying web elements, performing actions', 'Emphasizing the importance of using synchronization commands and providing a practical example of executing a test case for searching and navigating on eBay and Simply Learn websites importance of synchronization commands, practical example of executing a test case for searching and navigating']}], 'duration': 2073.829, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY12239521.jpg', 'highlights': ['Selenium Grid allows running automated test cases in parallel across multiple browsers and operating systems to save time.', 'Introduction of Selenium by Jason Huggins as a JavaScript test runner had an issue with same origin policy.', 'Advantages of Selenium WebDriver are emphasized, such as direct communication with the browser, elimination of the need for an additional server, and faster test execution speed due to the simplified architecture.', 'WebDriver supports multiple browsers, including headless browsers, making testing faster.', 'Selenium WebDriver supports various programming languages and frameworks such as TestNG, JUnit, and NUnit.', 'Selenium WebDriver provides support for integrating APM, AutoIT, and Sequelie tools for mobile and image testing, making it a complete solution for automation needs.', 'Key commands in Selenium WebDriver include GET, navigational, and browser commands such as driver.get, driver.getTitle, driver.navigate.to, driver.close, driver.quit, driver.findElement, sendKeys, and click.', 'Demonstrating writing test scripts using Selenium in Eclipse, including setting up web driver, launching the browser, navigating to web pages, identifying web elements, and performing actions like entering text and clicking buttons writing test scripts, setting up web driver, launching the browser, navigating to web pages, identifying web elements, performing actions']}, {'end': 15718.922, 'segs': [{'end': 14570.871, 'src': 'embed', 'start': 14548.132, 'weight': 0, 'content': [{'end': 14556.399, 'text': 'Nowadays, automation tool, and especially the selenium skills, is a very key requirement for an QA engineer or even an automation engineer jobs.', 'start': 14548.132, 'duration': 8.267}, {'end': 14561.643, 'text': "So if you're on an outlook of automation engineer or a QA engineer positions,", 'start': 14556.719, 'duration': 4.924}, {'end': 14565.446, 'text': "I'm sure this question bank will definitely help you prepare for your interview.", 'start': 14561.643, 'duration': 3.803}, {'end': 14570.871, 'text': 'So this video consists of three parts, basically three different levels of set of questions.', 'start': 14565.646, 'duration': 5.225}], 'summary': 'Selenium skills are crucial for qa and automation engineer jobs. this question bank will help you prepare for interviews.', 'duration': 22.739, 'max_score': 14548.132, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY14548132.jpg'}, {'end': 15172.074, 'src': 'embed', 'start': 15148.184, 'weight': 2, 'content': [{'end': 15155.05, 'text': 'So if you look at the components of 3.0, we have IDE, we have a web driver and grid as the major components.', 'start': 15148.184, 'duration': 6.866}, {'end': 15163.632, 'text': 'So now with this introduction of web driver, a full-fledged web driver, Selenium became the most powerful tool for web application automation.', 'start': 15155.45, 'duration': 8.182}, {'end': 15165.632, 'text': 'Question 5, a very important question.', 'start': 15163.852, 'duration': 1.78}, {'end': 15172.074, 'text': 'What is same origin policy and how is it handled? Now same origin policy is a security IT feature.', 'start': 15165.772, 'duration': 6.302}], 'summary': 'Selenium 3.0 includes ide, web driver, and grid, making it a powerful tool for web automation.', 'duration': 23.89, 'max_score': 15148.184, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY15148184.jpg'}, {'end': 15416.785, 'src': 'embed', 'start': 15391.908, 'weight': 1, 'content': [{'end': 15398.53, 'text': 'Now, whereas in hard assertion is, you do an assert title using the command assert title and if at all the assertion fails,', 'start': 15391.908, 'duration': 6.622}, {'end': 15400.531, 'text': 'the test case stops from executing.', 'start': 15398.53, 'duration': 2.001}, {'end': 15401.531, 'text': 'Question 7.', 'start': 15400.671, 'duration': 0.86}, {'end': 15403.433, 'text': 'mention the types of web locator.', 'start': 15401.531, 'duration': 1.902}, {'end': 15410.319, 'text': 'What is web locator? A locator is a command that tells the Selenium which UI element you want to operate on.', 'start': 15403.653, 'duration': 6.666}, {'end': 15416.785, 'text': 'Selenium uses locators to find and match the elements of your web page which it needs to interact with.', 'start': 15410.579, 'duration': 6.206}], 'summary': 'In selenium, assert title stops test execution on failure. a web locator is a command that tells selenium which ui element to operate on.', 'duration': 24.877, 'max_score': 15391.908, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY15391908.jpg'}], 'start': 14313.57, 'title': 'Selenium web testing', 'summary': 'Covers automated web navigation with selenium webdriver, selenium interview questions at beginner, intermediate, and advanced levels, an overview of selenium testing including regression and functional testing, and an explanation of different web locators used in selenium.', 'chapters': [{'end': 14533.483, 'start': 14313.57, 'title': 'Automated web navigation and verification', 'summary': 'Demonstrates automated web navigation using selenium webdriver, including commands like navigate.to and driver.navigate, performing actions such as navigating to a specified url and navigating back to a previous page, and verifying the page title before closing the browser.', 'duration': 219.913, 'highlights': ['Automated web navigation using Selenium WebDriver The transcript provides a demonstration of using Selenium WebDriver for automated web navigation, showcasing commands like navigate.to and driver.navigate.', "Navigating to a specified URL The chapter covers the command 'navigate.to' which facilitates navigating to a specified URL, showcasing its functionality in automated web navigation.", "Navigating back to a previous page The transcript demonstrates the use of the 'navigate back' command to navigate back to a previous page, showcasing the practical application of this navigation command.", "Verifying the page title before closing the browser The chapter illustrates the process of verifying the page title before closing the browser, highlighting the use of the 'driver.get title' method and the subsequent printing of the title on the console."]}, {'end': 14979.536, 'start': 14533.483, 'title': 'Selenium interview questions', 'summary': 'Discusses the most commonly asked questions in a selenium interview, including the components of selenium, its limitations, and the testing types it supports, covering beginner, intermediate, and advanced levels.', 'duration': 446.053, 'highlights': ['Selenium consists of four major components: IDE, Remote Control, Webdriver, and Grid, each serving specific functions and capabilities. 4 major components', 'Selenium limitations include no reliable tech support, inability to test non-HTML pop-ups or mobile applications, limited support for image testing, and no built-in reporting facility, with workarounds available for each limitation. 4 major limitations', 'Selenium supports regression testing and functional testing, providing attributes and categories of regression testing. Regression testing and functional testing']}, {'end': 15391.768, 'start': 14979.676, 'title': 'Selenium testing overview', 'summary': 'Provides an overview of selenium testing, including regression testing, functional testing, and the evolution of selenium versions 2.0 and 3.0. it also covers the same origin policy, its handling, and the classification of selenese commands.', 'duration': 412.092, 'highlights': ['Regression Testing and Retesting Regression tests are run every time a new fix has been received or a new feature has been deployed, and selection of tests can be based on various criteria, such as recently added features, test areas with more defects, integration areas, or critical functionalities and business impacts.', 'Evolution of Selenium Versions Selenium 2.0 introduced major changes, including the introduction of WebDriver API, while Selenium 3.0 completely eliminated Selenium RC and focused on IDE, WebDriver, and GRID as its major components, making it a powerful tool for web application automation.', 'Same Origin Policy and Handling Explains the security feature of same origin policy in web application security model, its limitations in accessing elements from different domains, and how Selenium RC handled this limitation by tricking the browser to believe that the Selenium core and the web application under test came from the same domain.', 'Selenese Commands Classification Describes the classification of Selenese commands into action commands, accessors, and assertions, highlighting their respective functionalities and examples of each category.']}, {'end': 15718.922, 'start': 15391.908, 'title': 'Selenium web locators', 'summary': 'Explains the different types of web locators used in selenium, such as id, link text, partial link text, name, tag name, class name, xpath, and css selector, with examples and benefits of using each locator.', 'duration': 327.014, 'highlights': ['Selenium uses around eight locating techniques including ID, link text, partial link text, name, tag name, class name, XPath, and CSS selector. Selenium uses around eight locating techniques, such as ID, link text, partial link text, name, tag name, class name, XPath, and CSS selector, providing a variety of options for locating web elements.', 'ID is the most common way of locating elements in Selenium due to its uniqueness for each element. ID is the most common way of locating elements in Selenium due to its uniqueness for each element, making it a reliable locator in Selenium testing.', 'CSS selectors work much faster than XPath, leading to better performance of test scripts. CSS selectors work much faster than XPath, leading to better performance of test scripts, highlighting the advantage of using CSS selector for locating web elements.']}], 'duration': 1405.352, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY14313570.jpg', 'highlights': ['Selenium 3.0 completely eliminated Selenium RC and focused on IDE, WebDriver, and GRID as its major components, making it a powerful tool for web application automation.', 'Selenium uses around eight locating techniques, such as ID, link text, partial link text, name, tag name, class name, XPath, and CSS selector, providing a variety of options for locating web elements.', 'Regression tests are run every time a new fix has been received or a new feature has been deployed, and selection of tests can be based on various criteria, such as recently added features, test areas with more defects, integration areas, or critical functionalities and business impacts.', 'CSS selectors work much faster than XPath, leading to better performance of test scripts, highlighting the advantage of using CSS selector for locating web elements.']}, {'end': 16662.605, 'segs': [{'end': 16005.701, 'src': 'embed', 'start': 15967.023, 'weight': 0, 'content': [{'end': 15969.664, 'text': 'So these are some of the commonly used navigation methods.', 'start': 15967.023, 'duration': 2.641}, {'end': 15971.265, 'text': 'First one is NavigateTo.', 'start': 15969.884, 'duration': 1.381}, {'end': 15978.788, 'text': 'So this method loads a new web page in the existing browser window and it accepts string as a parameter and returns nothing.', 'start': 15971.425, 'duration': 7.363}, {'end': 15979.508, 'text': "So it's a void.", 'start': 15978.868, 'duration': 0.64}, {'end': 15983.049, 'text': 'So the URL you mentioned here needs to be a fully formed URL.', 'start': 15979.708, 'duration': 3.341}, {'end': 15990.672, 'text': 'Driver.navigate.refresh So this method refreshes or reloads the current web page in the existing browser window.', 'start': 15983.389, 'duration': 7.283}, {'end': 15994.814, 'text': 'It neither accepts anything so there is no value passed or it returns nothing.', 'start': 15990.932, 'duration': 3.882}, {'end': 16001.118, 'text': 'Forward So this method enables the web browser to click on the forward button in the existing browser window.', 'start': 15995.114, 'duration': 6.004}, {'end': 16005.701, 'text': 'Again, this has no arguments to be passed or it returns nothing.', 'start': 16001.378, 'duration': 4.323}], 'summary': 'Commonly used navigation methods: navigateto, refresh, forward.', 'duration': 38.678, 'max_score': 15967.023, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY15967023.jpg'}, {'end': 16064.459, 'src': 'embed', 'start': 16025.094, 'weight': 1, 'content': [{'end': 16029.115, 'text': 'So Selenium WebDriver provides two methods for closing the browser window.', 'start': 16025.094, 'duration': 4.021}, {'end': 16032.676, 'text': 'One is browser.close and the other one is the browser.quit.', 'start': 16029.375, 'duration': 3.301}, {'end': 16040.318, 'text': "So you might think to use them interchangeably and that's what everybody thinks that both anyway does the same function so it can be used.", 'start': 16032.936, 'duration': 7.382}, {'end': 16041.678, 'text': 'However it is not so.', 'start': 16040.538, 'duration': 1.14}, {'end': 16043.299, 'text': 'Both are two different methods.', 'start': 16041.918, 'duration': 1.381}, {'end': 16049.06, 'text': 'Now driver.close command is used to close the current browser window which is having the focus.', 'start': 16043.579, 'duration': 5.481}, {'end': 16056.689, 'text': 'And in case if there is a only single browser window open, then calling this driver.close actually quits the complete browser session.', 'start': 16049.48, 'duration': 7.209}, {'end': 16064.459, 'text': "Now it is used when you're working with say multiple browser tabs or windows and you want to just close one of them which is in focus in the test.", 'start': 16057.13, 'duration': 7.329}], 'summary': 'Selenium webdriver has distinct methods for closing browser windows: browser.close and browser.quit. the former closes the current window, while the latter ends the entire browser session when only one window is open.', 'duration': 39.365, 'max_score': 16025.094, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY16025094.jpg'}, {'end': 16231.452, 'src': 'embed', 'start': 16197.979, 'weight': 6, 'content': [{'end': 16199.941, 'text': "Let's go to that website and see what it means.", 'start': 16197.979, 'duration': 1.962}, {'end': 16201.642, 'text': 'So in the Amazon.in.', 'start': 16200.361, 'duration': 1.281}, {'end': 16209.567, 'text': "if you look at some of these hyperlink text called today's deals or Amazon pay or sell or customer service, if you inspect this element,", 'start': 16201.642, 'duration': 7.925}, {'end': 16214.59, 'text': "you will see that this is associated with a link text which is called as today's deals.", 'start': 16209.567, 'duration': 5.023}, {'end': 16217.394, 'text': 'along with its href and of course an anchor tag.', 'start': 16214.73, 'duration': 2.664}, {'end': 16222.34, 'text': "So one way of identifying this link is to use this complete text which is today's T.", 'start': 16217.594, 'duration': 4.746}, {'end': 16225.464, 'text': 'Also there is another way by using partial link text.', 'start': 16222.34, 'duration': 3.124}, {'end': 16231.452, 'text': 'For say example you have a link text which is pretty long and you do not want to use this complete text.', 'start': 16225.584, 'duration': 5.868}], 'summary': 'The transcript discusses identifying links on a website using complete and partial link text, along with associated attributes such as href and anchor tags.', 'duration': 33.473, 'max_score': 16197.979, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY16197979.jpg'}, {'end': 16650.635, 'src': 'embed', 'start': 16621.887, 'weight': 2, 'content': [{'end': 16627.63, 'text': 'in this example, we are just using moveToElement, but also you can, if you want to do a drag and drop operation, you can still have that.', 'start': 16621.887, 'duration': 5.743}, {'end': 16634.972, 'text': 'So in such case where you have multiple actions like a drag and drop then you use a method called build along with this.', 'start': 16627.849, 'duration': 7.123}, {'end': 16639.033, 'text': 'So you say actions dot move to element dot build and then dot perform.', 'start': 16635.272, 'duration': 3.761}, {'end': 16642.993, 'text': 'So dot build method is called before the perform method,', 'start': 16639.433, 'duration': 3.56}, {'end': 16650.635, 'text': 'and what it does is it generates that composite actions which has all those multiple actions which you want to perform on a web element.', 'start': 16642.993, 'duration': 7.642}], 'summary': 'Using movetoelement, you can perform drag and drop operations with the build method before the perform method.', 'duration': 28.748, 'max_score': 16621.887, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY16621886.jpg'}], 'start': 15718.922, 'title': 'Selenium webdriver and techniques', 'summary': 'Covers types of weights in selenium webdriver including implicit, explicit, and fluent waits with their syntax and functionality, recommended usage and differences, navigation commands, browser window closure methods, locating techniques for identifying hyperlinks, executing javascript, asserting web page title, and mouse hover actions, with practical examples.', 'chapters': [{'end': 15822.606, 'start': 15718.922, 'title': 'Types of weights in webdriver', 'summary': 'Explains the importance of weights in selenium webdriver due to elements loading at different time intervals, and it details the three types of weights - implicit, explicit, and fluent - with a focus on the syntax and functionality of implicit weight, where the default setting is 0 and it can be applied globally to all web elements.', 'duration': 103.684, 'highlights': ["The implicit wait tells the browser or your web driver to wait for a certain amount of time before it can throw a no such element exception. The implicit wait in WebDriver allows the browser or web driver to wait for a specified time before throwing a 'no such element' exception, providing better element identification.", 'It waits for that time, such as 10 seconds, until it finds the element, and only after that time, it throws an exception. The implicit wait functionality involves waiting for the specified time, e.g., 10 seconds, to find the element, and if it is still not found within the set time, it throws an exception.', 'The syntax for setting implicit wait involves driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS). To set the implicit wait, the syntax includes driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS), where the time value and unit (e.g., seconds) are specified.']}, {'end': 16174.986, 'start': 15823.066, 'title': 'Selenium waits, navigation, and browser commands', 'summary': 'Explains implicit, explicit, and fluent waits in selenium, highlighting their recommended usage and differences, along with navigation commands and browser window closure methods. it also provides guidance on typing into input boxes and clicking hyperlinks.', 'duration': 351.92, 'highlights': ['Usage of Explicit and Fluent Waits in Selenium Explicit and fluent waits are recommended for elements taking longer to load, and for verifying element properties such as visibility, clickability, and selection, with specific details on expected conditions and maximum wait time.', 'Navigation Commands in Selenium WebDriver provides NavigateTo, Refresh, Forward, and Back commands for basic browser navigation, each explained with details on usage, parameters, and return values.', 'Difference Between driver.close and driver.quit Explains the distinction between driver.close and driver.quit, highlighting their specific purposes, usage scenarios, and impact on browser session and associated windows, tabs, and pop-ups.', 'Typing into Input Box using Selenium Provides a clear explanation of using the send keys command to insert values into input boxes, with an example and details on the argument type and usage.', 'Clicking on a Hyperlink in Selenium Guidance on testing hyperlinks in web pages, emphasizing the need for testing in e-commerce applications and the method for clicking on hyperlinks.']}, {'end': 16662.605, 'start': 16174.986, 'title': 'Selenium locating techniques and web page operations', 'summary': "Discusses selenium's two locating techniques for identifying hyperlinks, executing javascript to scroll down a page, asserting a web page's title, and performing mouse hover actions, with a detailed explanation and practical examples.", 'duration': 487.619, 'highlights': ["Selenium's two locating techniques for identifying hyperlinks Selenium provides two locating techniques, link text and partial link text, for identifying hyperlinks on web pages.", 'Executing JavaScript to scroll down a page Selenium provides JavaScript Executor interface to execute JavaScript for actions like scrolling down a web page, aiding in situations where standard locators are insufficient.', "Asserting the title of a web page using Selenium WebDriver Selenium WebDriver's getTitle method retrieves the title of the current page, which can be stored in a string variable and verified using if-else statements or assert statements.", "Performing mouse hover actions using Selenium's action class The action class in Selenium provides APIs for emulating complex user gestures, including mouse events like moveToElement, enabling actions such as mouse hover over an element."]}], 'duration': 943.683, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY15718922.jpg', 'highlights': ['Covers types of weights in selenium webdriver including implicit, explicit, and fluent waits with their syntax and functionality, recommended usage and differences, navigation commands, browser window closure methods, locating techniques for identifying hyperlinks, executing javascript, asserting web page title, and mouse hover actions, with practical examples.', "The implicit wait in WebDriver allows the browser or web driver to wait for a specified time before throwing a 'no such element' exception, providing better element identification.", 'The implicit wait functionality involves waiting for the specified time, e.g., 10 seconds, to find the element, and if it is still not found within the set time, it throws an exception.', 'Usage of Explicit and Fluent Waits in Selenium Explicit and fluent waits are recommended for elements taking longer to load, and for verifying element properties such as visibility, clickability, and selection, with specific details on expected conditions and maximum wait time.', 'Difference Between driver.close and driver.quit Explains the distinction between driver.close and driver.quit, highlighting their specific purposes, usage scenarios, and impact on browser session and associated windows, tabs, and pop-ups.', 'Selenium provides two locating techniques, link text and partial link text, for identifying hyperlinks on web pages.', "Selenium WebDriver's getTitle method retrieves the title of the current page, which can be stored in a string variable and verified using if-else statements or assert statements.", 'The action class in Selenium provides APIs for emulating complex user gestures, including mouse events like moveToElement, enabling actions such as mouse hover over an element.']}, {'end': 17784.228, 'segs': [{'end': 16945.154, 'src': 'embed', 'start': 16903.573, 'weight': 2, 'content': [{'end': 16912.978, 'text': 'What is Page Object Model popularly known as POM? Page Object Model is a design pattern that helps create object repositories for web elements.', 'start': 16903.573, 'duration': 9.405}, {'end': 16921.783, 'text': 'So writing Selenium test cases without say using any patterns may lead to code duplicacy and also the code becomes unmaintainable after some time.', 'start': 16913.258, 'duration': 8.525}, {'end': 16925.426, 'text': 'And say if you have web element locators which changes over time,', 'start': 16922.004, 'duration': 3.422}, {'end': 16929.348, 'text': 'then you will have to go through the entire code base to make all the required changes.', 'start': 16925.426, 'duration': 3.922}, {'end': 16935.71, 'text': 'So under this model for each web page in the application there should be a corresponding page class.', 'start': 16929.668, 'duration': 6.042}, {'end': 16945.154, 'text': 'And this page class will have all the web elements of the web page and also it contains the page methods which perform operations on the web elements.', 'start': 16936.15, 'duration': 9.004}], 'summary': 'Page object model (pom) prevents code duplicacy and maintains web element locators efficiently.', 'duration': 41.581, 'max_score': 16903.573, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY16903573.jpg'}, {'end': 17083.808, 'src': 'embed', 'start': 17056.818, 'weight': 8, 'content': [{'end': 17062.5, 'text': 'And then, since your application has CAPTCHA as one of its functionality, if you really need to test that,', 'start': 17056.818, 'duration': 5.682}, {'end': 17067.222, 'text': 'you can just test that separately as a manual testing itself, but not automated.', 'start': 17062.5, 'duration': 4.722}, {'end': 17068.522, 'text': 'Question 19.', 'start': 17067.502, 'duration': 1.02}, {'end': 17074.344, 'text': 'How does Selenium handle Windows-based pop-ups? Selenium is an automation tool for automating web applications.', 'start': 17068.522, 'duration': 5.822}, {'end': 17077.065, 'text': 'It cannot handle Windows-based applications.', 'start': 17074.785, 'duration': 2.28}, {'end': 17083.808, 'text': 'However, we can use tools like AutoIT and RobotClass along with Selenium to handle such pop-ups.', 'start': 17077.266, 'duration': 6.542}], 'summary': 'Selenium cannot handle windows-based pop-ups, use autoit and robotclass instead.', 'duration': 26.99, 'max_score': 17056.818, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY17056818.jpg'}, {'end': 17204.817, 'src': 'embed', 'start': 17164.154, 'weight': 0, 'content': [{'end': 17170.877, 'text': 'So using the screenshot functionality, it helps us debug and identify the problem by looking at those screenshots.', 'start': 17164.154, 'duration': 6.723}, {'end': 17177.081, 'text': "So WebDriver has this built-in functionality to take the screenshot across the page and it's pretty easy to use.", 'start': 17171.178, 'duration': 5.903}, {'end': 17182.024, 'text': 'TakeScreenshot interface is used to capture the screenshot during the execution.', 'start': 17177.501, 'duration': 4.523}, {'end': 17192.552, 'text': 'Now this interface has a method called getScreenshotAs which captures a screenshot and it also stores in a location specified by us.', 'start': 17182.184, 'duration': 10.368}, {'end': 17199.555, 'text': "So let's take an example of our Facebook page and say we fail a particular test case on the Facebook application.", 'start': 17192.972, 'duration': 6.583}, {'end': 17204.817, 'text': "And then let's see how we take a screenshot at that particular moment when the test case fails.", 'start': 17199.755, 'duration': 5.062}], 'summary': "Using webdriver's screenshot functionality to debug and identify problems during execution.", 'duration': 40.663, 'max_score': 17164.154, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY17164154.jpg'}, {'end': 17620.449, 'src': 'embed', 'start': 17596.284, 'weight': 6, 'content': [{'end': 17603.051, 'text': "Now what I have done in my code is first thing is, I've identified all this drop down boxes using one of.", 'start': 17596.284, 'duration': 6.767}, {'end': 17606.976, 'text': "I'm using mostly the ID locating technique here, so you can use any of your choice.", 'start': 17603.051, 'duration': 3.925}, {'end': 17616.546, 'text': 'So once I identify the element I created the select object class for each of this and I pass that web element to the constructor of the select class.', 'start': 17607.236, 'duration': 9.31}, {'end': 17620.449, 'text': 'So now my select element or the object is ready to use.', 'start': 17616.906, 'duration': 3.543}], 'summary': 'Code identifies dropdown boxes using id locating technique.', 'duration': 24.165, 'max_score': 17596.284, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY17596284.jpg'}], 'start': 16663.064, 'title': 'Selenium automation techniques', 'summary': 'Covers automating mouse hover, retrieving css properties, and implementing the page object model in selenium, along with captcha automation. it also includes handling captcha, windows-based pop-ups, and taking screenshots in selenium, as well as using javascript executor and select objects for dropdown interaction.', 'chapters': [{'end': 17035.912, 'start': 16663.064, 'title': 'Automating mouse hover, retrieving css properties, and page object model in selenium', 'summary': 'Covers automating mouse hover functionality, retrieving css properties of web elements, and the benefits and implementation of the page object model in selenium, along with a discussion on the automation of captcha.', 'duration': 372.848, 'highlights': ['The Page Object Model (POM) is a design pattern that helps create object repositories for web elements, making the code more readable, maintainable, and reusable. POM helps in creating object repositories for web elements, reducing code duplicacy and making the code maintainable. It ensures that changes in web element locators only require modifications in the corresponding page class, leading to better code maintainability and reusability.', 'Automating CAPTCHA is not possible as it is a security feature designed to prevent bots and automated programs from accessing sensitive information. CAPTCHA serves as a security feature to differentiate between human and computer users, preventing automated processes from accessing sensitive data. Attempting to automate CAPTCHA would defeat its purpose.', 'Retrieving CSS properties of web elements involves using the getCSSValue method to fetch attributes like font size, width, height, and color, which cannot be achieved through the getAttribute method due to their absence in the DOM. To retrieve CSS properties such as font size, width, and color, the getCSSValue method is used, as these properties cannot be fetched through the getAttribute method when they are not explicitly mentioned in the DOM.', 'Demonstration of mouse hover functionality automation, including launching a website, finding an element using XPath, and using the move to element method to achieve mouse hover functionality. The process of automating mouse hover functionality involves launching a website, locating an element using XPath, and utilizing the move to element method to simulate a mouse hover action, leading to the display of a dropdown list.']}, {'end': 17420.813, 'start': 17036.432, 'title': 'Handling captcha, windows-based pop-ups, and screenshots in selenium', 'summary': 'Covers handling captcha by disabling it in the test environment or using static data, managing windows-based pop-ups using tools like autoit and robotclass, and taking screenshots in webdriver for bug analysis, with examples and use cases provided.', 'duration': 384.381, 'highlights': ['Handling CAPTCHA The chapter discusses handling CAPTCHA by either disabling it in the test environment or using static data for testing, providing alternatives for automated testing and manual testing, aiding in understanding how to approach CAPTCHA testing in Selenium.', 'Managing Windows-based Pop-ups The section explains managing Windows-based pop-ups using tools like AutoIT and RobotClass, detailing their functionalities and integration with Selenium, and highlighting the limitations of Selenium WebDriver in handling such pop-ups.', 'Taking Screenshots in WebDriver The transcript outlines the importance of taking screenshots in WebDriver for bug analysis and debugging, describes the TakeScreenshot interface and its method getScreenshotAs, and provides a step-by-step example of taking a screenshot during the execution of a test case.', 'Using JavaScript Executor for Text Input The chapter addresses using JavaScript Executor as an alternative to send keys, particularly for IE browsers, highlighting its role in executing JavaScript through Selenium WebDriver and providing an example of replicating send keys function using JavaScript.']}, {'end': 17784.228, 'start': 17420.973, 'title': 'Using javascript executor and select objects in selenium', 'summary': 'Explains how to use javascript executor to send values to web elements, demonstrates using select class to interact with dropdowns, and describes the switch to command for handling multiple windows or frames in a web application.', 'duration': 363.255, 'highlights': ['Using JavaScript Executor Demonstrates using JavaScript Executor to send values to web elements in Selenium, replicating the functionality of send keys method, enabling efficient manipulation of web elements.', 'Using Select Objects Illustrates the usage of Select class in Selenium to interact with dropdowns, explaining methods like select by index, select by value, and select by visible text for efficient selection of dropdown options.', 'Switch to Command Describes the usage of switch to command in Selenium for handling multiple windows or frames within a web application, providing an example of switching between windows in a web page.']}], 'duration': 1121.164, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY16663063.jpg', 'highlights': ['POM ensures better code maintainability and reusability by creating object repositories for web elements.', 'Automating CAPTCHA is not possible as it serves as a security feature to prevent automated access to sensitive data.', 'Retrieving CSS properties involves using the getCSSValue method to fetch attributes like font size, width, and color.', 'Demonstration of automating mouse hover functionality involves launching a website, locating an element using XPath, and using the move to element method.', 'Handling CAPTCHA can be done by either disabling it in the test environment or using static data for testing.', 'Managing Windows-based pop-ups can be achieved using tools like AutoIT and RobotClass, highlighting the limitations of Selenium WebDriver in handling such pop-ups.', 'Taking screenshots in WebDriver is important for bug analysis and debugging, using the TakeScreenshot interface and its method getScreenshotAs.', 'Using JavaScript Executor as an alternative to send keys, particularly for IE browsers, and providing an example of replicating send keys function using JavaScript.', 'Using JavaScript Executor to send values to web elements in Selenium, replicating the functionality of send keys method.', 'Illustrating the usage of Select class in Selenium to interact with dropdowns, explaining methods like select by index, select by value, and select by visible text for efficient selection of dropdown options.', 'Describing the usage of switch to command in Selenium for handling multiple windows or frames within a web application.']}, {'end': 18983.727, 'segs': [{'end': 17838.895, 'src': 'embed', 'start': 17784.668, 'weight': 0, 'content': [{'end': 17788.369, 'text': "Now you'll also come across a case where there are multiple windows open.", 'start': 17784.668, 'duration': 3.701}, {'end': 17791.17, 'text': 'Right now the example what we saw we just had a single window.', 'start': 17788.569, 'duration': 2.601}, {'end': 17795.412, 'text': 'But say if you whenever you launch an application say there are multiple windows which are open.', 'start': 17791.33, 'duration': 4.082}, {'end': 17799.173, 'text': 'So in such case you can use something called as getWindowsHandles.', 'start': 17795.532, 'duration': 3.641}, {'end': 17800.833, 'text': 'Now getWindowsHandles.', 'start': 17799.693, 'duration': 1.14}, {'end': 17801.594, 'text': 'what it does it?', 'start': 17800.833, 'duration': 0.761}, {'end': 17806.275, 'text': 'it picks up all the active windows at that point of a time and using a for loop,', 'start': 17801.594, 'duration': 4.681}, {'end': 17811.697, 'text': 'you can read into every handle and then you do your operations specific to your window handles.', 'start': 17806.275, 'duration': 5.422}, {'end': 17816.441, 'text': 'Also, there is another way wherein you can switch back to your parent window.', 'start': 17812.097, 'duration': 4.344}, {'end': 17822.466, 'text': 'So if ever you want to switch back to your parent window, you have to use the same command driver dot, switch to and the handle.', 'start': 17816.621, 'duration': 5.845}, {'end': 17824.568, 'text': 'what you need to provide here is your parent handle.', 'start': 17822.466, 'duration': 2.102}, {'end': 17826.189, 'text': 'Alright, so this is about windows.', 'start': 17824.788, 'duration': 1.401}, {'end': 17829.552, 'text': 'Then I also said switch to can be used for your frames.', 'start': 17826.349, 'duration': 3.203}, {'end': 17830.632, 'text': 'So what are frames?', 'start': 17829.932, 'duration': 0.7}, {'end': 17838.895, 'text': 'Frames are usually used to divide your web application or your web page or the on the same domain into various different windows or sections right.', 'start': 17830.772, 'duration': 8.123}], 'summary': 'Using getwindowshandles to manage multiple windows and frames in web applications.', 'duration': 54.227, 'max_score': 17784.668, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY17784668.jpg'}, {'end': 18332.743, 'src': 'embed', 'start': 18268.56, 'weight': 4, 'content': [{'end': 18276.268, 'text': 'What is pause on exception in Selenium IDE? So pause on exception is a new feature of Selenium IDE.', 'start': 18268.56, 'duration': 7.708}, {'end': 18281.152, 'text': 'It is one of the brilliant debugger function which this new Selenium IDE provides us.', 'start': 18276.468, 'duration': 4.684}, {'end': 18282.053, 'text': 'What it does?', 'start': 18281.393, 'duration': 0.66}, {'end': 18289.3, 'text': 'is it enables us, or, when this particular option is enabled, the execution of your test pauses, if at all?', 'start': 18282.053, 'duration': 7.247}, {'end': 18292.123, 'text': 'there is any exception which occurs in your test scripts?', 'start': 18289.3, 'duration': 2.823}, {'end': 18293.343, 'text': 'And because of this,', 'start': 18292.543, 'duration': 0.8}, {'end': 18300.246, 'text': 'what you can do is you can go and handle that error by say changing your command in the script and then continue your test execution.', 'start': 18293.343, 'duration': 6.903}, {'end': 18302.807, 'text': 'So this helps in debugging your code pretty well.', 'start': 18300.366, 'duration': 2.441}, {'end': 18305.528, 'text': 'So, whenever there is an exception, say, for example,', 'start': 18302.887, 'duration': 2.641}, {'end': 18311.61, 'text': "an web element which you're trying to identify has a wrong identifier or it changes on your web page.", 'start': 18305.528, 'duration': 6.082}, {'end': 18318.233, 'text': 'Then you can correct that command which caused the exception and then resume the test execution from that point onwards.', 'start': 18311.89, 'duration': 6.343}, {'end': 18322.116, 'text': "So let's look at a simple use case and see how exactly this works.", 'start': 18318.553, 'duration': 3.563}, {'end': 18325.638, 'text': "So for example, let's go to my browser here.", 'start': 18322.396, 'duration': 3.242}, {'end': 18332.743, 'text': 'Okay So I have a simple use case here where I want to log in into Facebook using my email ID and password.', 'start': 18326.078, 'duration': 6.665}], 'summary': "Selenium ide's pause on exception feature enables pausing test execution upon encountering exceptions, allowing users to handle errors and continue test execution, aiding in debugging code.", 'duration': 64.183, 'max_score': 18268.56, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY18268560.jpg'}, {'end': 18396.245, 'src': 'embed', 'start': 18369.329, 'weight': 2, 'content': [{'end': 18374.772, 'text': 'So if I give a wrong ID and if I execute a test script now, it is going to throw an exception at this point.', 'start': 18369.329, 'duration': 5.443}, {'end': 18375.733, 'text': "So let's do that.", 'start': 18375.052, 'duration': 0.681}, {'end': 18382.557, 'text': "So it's going to throw an exception, but now since I want to use that pause on exception feature, what I do is it's available here.", 'start': 18375.853, 'duration': 6.704}, {'end': 18383.898, 'text': 'It says pause on exception.', 'start': 18382.677, 'duration': 1.221}, {'end': 18385.659, 'text': 'By default, it is switched off.', 'start': 18384.238, 'duration': 1.421}, {'end': 18388.861, 'text': 'So when you select this, that means this has been switched on.', 'start': 18385.819, 'duration': 3.042}, {'end': 18396.245, 'text': 'And now if I execute the script, this is going to come into a debug mode at this point where my exception is going to be thrown.', 'start': 18389.081, 'duration': 7.164}], 'summary': 'Executing test script with wrong id triggers exception, enabling pause on exception switches to debug mode.', 'duration': 26.916, 'max_score': 18369.329, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY18369329.jpg'}, {'end': 18804.021, 'src': 'embed', 'start': 18777.384, 'weight': 9, 'content': [{'end': 18784.669, 'text': 'which has some methods to send HTTP request and to capture the HTTP response codes, like the ones which you see it on the screen.', 'start': 18777.384, 'duration': 7.285}, {'end': 18792.954, 'text': 'So if we have to see how do we do that now first thing the logic behind how do we get this broken links is you get all the URLs on your website first.', 'start': 18784.889, 'duration': 8.065}, {'end': 18798.177, 'text': 'After getting all the URLs, now how do you get the URLs? By using the tag A like it is done here.', 'start': 18793.274, 'duration': 4.903}, {'end': 18804.021, 'text': 'So once you get the complete list of all URLs, you also check for a non-null or a blank ones.', 'start': 18798.397, 'duration': 5.624}], 'summary': 'Methods for capturing http response codes and finding broken links on a website using tag a.', 'duration': 26.637, 'max_score': 18777.384, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY18777384.jpg'}], 'start': 17784.668, 'title': 'Handling selenium windows, frames, and pop-ups', 'summary': 'Covers techniques for handling multiple windows, frames, and alert pop-ups in selenium webdriver, including file upload, setting browser window size, and using findelement and findelements. it also includes practical examples and use cases.', 'chapters': [{'end': 18369.069, 'start': 17784.668, 'title': 'Handling windows, frames, and pop-ups in selenium', 'summary': 'Covers handling multiple windows, frames, and alert pop-ups in selenium webdriver, including techniques for file upload, setting browser window size, and using findelement and findelements, with practical examples and use cases.', 'duration': 584.401, 'highlights': ['Handling Multiple Windows The chapter explains how to handle multiple windows in Selenium WebDriver using getWindowsHandles to pick up all active windows and switch back to the parent window, with techniques for handling frames and alert pop-ups, providing practical examples and use cases.', 'File Upload in Selenium WebDriver The chapter details two methods for file upload in Selenium WebDriver: using send keys to enter the complete path of the file in the file select input field, and using the robot class to handle native windows, with prerequisites for working with the send keys option and practical examples.', 'Setting Browser Window Size The chapter explains how to maximize the window using driver.manage.window.maximize and set a particular window size using driver.manage.window.setSize with a dimension class argument, and demonstrates using JavaScript executor for window functionality, with a practical demonstration.', 'Using findElement and findElements The chapter covers the usage of findElement to access a single element and findElements to return a list of web elements, including practical examples of identifying elements with specific class names on a web page and using enhanced for loop to traverse and print the attributes of the identified elements.', 'Pause on Exception in Selenium IDE The chapter introduces pause on exception as a brilliant debugger function in Selenium IDE, which pauses test execution on any exception occurrence, allowing for error handling and debugging by changing the command in the script and resuming test execution from the point of exception, with a practical demonstration.']}, {'end': 18695.574, 'start': 18369.329, 'title': 'Selenium automation: pausing on exception and handling authentication pop-up', 'summary': 'Explains the pause on exception feature in selenium, demonstrating how it enters debug mode upon encountering an exception, allowing correction and resumption of script execution. additionally, it details handling authentication pop-ups using the alert class and differentiate between single and double slash in xpath.', 'duration': 326.245, 'highlights': ["The chapter demonstrates how the pause on exception feature in Selenium enters debug mode upon encountering an exception, allowing correction and resumption of script execution by switching the feature on and using the 'resume test execution' option. Demonstrates the functionality of the pause on exception feature and the process of correcting and resuming script execution.", "It explains handling authentication pop-ups using the alert class and the method 'authenticate using', utilizing explicit wait for the alert to pop up, and creating a user and password class object to pass as parameters. Details the process of handling authentication pop-ups using explicit wait, alert class, and creating user and password class object.", 'The chapter differentiates between single and double slash in XPath, highlighting single slash for creating an XPath with absolute path and double slash for relative path, and demonstrates how to identify an element using both paths in an example with the Facebook application. Explains the difference between single and double slash in XPath and provides an example of identifying an element using both paths.']}, {'end': 18983.727, 'start': 18695.854, 'title': 'Finding broken links in selenium', 'summary': 'Discusses how to find broken links in selenium webdriver using http requests, http url connection class, and response codes, with an emphasis on identifying broken links with response codes above 400 and sharing the information with developers.', 'duration': 287.873, 'highlights': ['Identifying broken links using HTTP requests and response codes The chapter explains using head requests and HTTP response codes to identify broken links, with a focus on response codes above 400 indicating broken links.', 'Utilizing HTTP URL connection class to send HTTP requests The transcript discusses using the HTTP URL connection class and its methods to send HTTP requests and capture HTTP response codes for identifying broken links.', 'Iterating through URLs to check for validity and broken links The transcript details the process of iterating through URLs, checking for non-null or blank ones, creating an HTTP connection object, and determining the validity of links based on response codes, with response codes above 400 indicating broken links.']}], 'duration': 1199.059, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Jdkrj2lDAEY/pics/Jdkrj2lDAEY17784668.jpg', 'highlights': ['Handling Multiple Windows The chapter explains how to handle multiple windows in Selenium WebDriver using getWindowsHandles to pick up all active windows and switch back to the parent window, with techniques for handling frames and alert pop-ups, providing practical examples and use cases.', 'Setting Browser Window Size The chapter explains how to maximize the window using driver.manage.window.maximize and set a particular window size using driver.manage.window.setSize with a dimension class argument, and demonstrates using JavaScript executor for window functionality, with a practical demonstration.', 'Using findElement and findElements The chapter covers the usage of findElement to access a single element and findElements to return a list of web elements, including practical examples of identifying elements with specific class names on a web page and using enhanced for loop to traverse and print the attributes of the identified elements.', 'File Upload in Selenium WebDriver The chapter details two methods for file upload in Selenium WebDriver: using send keys to enter the complete path of the file in the file select input field, and using the robot class to handle native windows, with prerequisites for working with the send keys option and practical examples.', 'Pause on Exception in Selenium IDE The chapter introduces pause on exception as a brilliant debugger function in Selenium IDE, which pauses test execution on any exception occurrence, allowing for error handling and debugging by changing the command in the script and resuming test execution from the point of exception, with a practical demonstration.', "The chapter demonstrates how the pause on exception feature in Selenium enters debug mode upon encountering an exception, allowing correction and resumption of script execution by switching the feature on and using the 'resume test execution' option. Demonstrates the functionality of the pause on exception feature and the process of correcting and resuming script execution.", "It explains handling authentication pop-ups using the alert class and the method 'authenticate using', utilizing explicit wait for the alert to pop up, and creating a user and password class object to pass as parameters. Details the process of handling authentication pop-ups using explicit wait, alert class, and creating user and password class object.", 'The chapter differentiates between single and double slash in XPath, highlighting single slash for creating an XPath with absolute path and double slash for relative path, and demonstrates how to identify an element using both paths in an example with the Facebook application. Explains the difference between single and double slash in XPath and provides an example of identifying an element using both paths.', 'Identifying broken links using HTTP requests and response codes The chapter explains using head requests and HTTP response codes to identify broken links, with a focus on response codes above 400 indicating broken links.', 'Utilizing HTTP URL connection class to send HTTP requests The transcript discusses using the HTTP URL connection class and its methods to send HTTP requests and capture HTTP response codes for identifying broken links.', 'Iterating through URLs to check for validity and broken links The transcript details the process of iterating through URLs, checking for non-null or blank ones, creating an HTTP connection object, and determining the validity of links based on response codes, with response codes above 400 indicating broken links.']}], 'highlights': ['Selenium comprises four major components: Selenium IDE, Selenium RC, Selenium WebDriver, and Selenium Grid, each serving specific purposes in web application test automation.', 'WebDriver directly interacts with browsers, making it faster than RC.', "Selenium Grid for Parallel Execution Selenium offers Grid to run test cases parallelly on multiple machines and browsers, addressing the limitation of WebDriver's sequential execution and enabling efficient parallel execution.", 'Selenium allows for parallel execution, enabling the fast execution of large volumes of test cases compared to manual testing.', 'Selenium supports wide spectrum of programming languages, all browsers, and all operating systems, saving time from manual execution and achieving a broad test coverage.', "The new IDE provides a debugger with features like step execution, adding breakpoints, and the 'pause on exception' functionality, enhancing the debugging capabilities.", 'Instructions for sending search text to Google.com, demonstrating the practical application of the Selenium HQ documentation.', 'Assert vs. Verify: assert is a hard assertion that stops the test immediately upon failure, while verify is a soft assertion that continues with the test and flags it as a failure at the end.', 'Selenium SideRunner enables parallel test execution and remote machine testing, offering flexibility to run IDE test cases on various browsers.', 'Selenium 3.0 completely eliminated Selenium RC and focused on IDE, WebDriver, and GRID as its major components, making it a powerful tool for web application automation.', 'POM ensures better code maintainability and reusability by creating object repositories for web elements.', 'Handling Multiple Windows The chapter explains how to handle multiple windows in Selenium WebDriver using getWindowsHandles to pick up all active windows and switch back to the parent window, with techniques for handling frames and alert pop-ups, providing practical examples and use cases.']}