title
Selenium Interview Questions and Answers For Freshers And Experienced | Selenium Interview | Edureka
description
** Selenium Training : https://www.edureka.co/selenium-certification-training **
This Edureka videos on "Selenium Interview Questions and Answers" (Top Selenium Interview Questions blog: https://goo.gl/dKovMg) will help both Freshers And Experienced professionals to prepare for Selenium interviews. Learn about the most important Selenium interview questions and answers and know what will set you apart in the Selenium interview process.
Go through the slides in Slideshare: https://www.slideshare.net/EdurekaIN/selenium-interview-questions-and-answers-selenium-tutorial-selenium-training-edureka
Check our complete Selenium playlist here: https://goo.gl/NmuzXE
#edureka #SeleniumEdureka #SeleniumInterviewQuestions #SeleniumAutomation #SeleniumTesting #SeleniumTutorial #SeleniumTraining
Subscribe to our channel to get video updates. Hit the subscribe button above.
- - - - - - - - - - - - - -
How it Works?
1. This is a 5 Week Instructor led Online Course, 20 hours of assignment and 30 hours of project work
2. We have a 24x7 One-on-One LIVE Technical Support to help you with any problems you might face or any clarifications you may require during the course.
3. At the end of the training you will have to undergo a 2-hour LIVE Practical Exam based on which we will provide you a Grade and a Verifiable Certificate!
- - - - - - - - - - - - - -
About the Course:
Selenium is the most popular tool used to automate the testing of web applications. In this Course, you will learn about Selenium 3.0 and its various components such as Selenium IDE, Selenium WebDriver, and Selenium GRID. You learn to set up your environment so that you are ready to start using Selenium for testing your web applications. Browsers such as Chrome, Firefox, and IE are used to test the web applications. In addition, you will experience to work with Selenium IDE, Selenium WebDriver, Selenium GRID, different frameworks such as Data Driven, Keyword Driven, Hybrid and Cross browser testing.
Page Object Model (POM) is a design pattern that enables you to maintain reusability and readability of the automation scripts. This course introduces you to the concept of POM, and how to implement Page Classes and Page Factory to optimize the execution of automated scripts. In addition, you learn about various third party tools such as Jenkins, TestNG, Sikuli, and AutoIT to optimally use them for performing various tasks in our browsers such as working with flash applications or Windows-based UI elements. Finally, you get introduced to Appium, an open source mobile application UI testing framework, and UIautomatorviewer.
- - - - - - - - - - - - - -
Who should go for this course?
Selenium is a new and booming Technology in Software Industry that helps you automate the testing of your applications. Professionals with basic knowledge of Object Oriented Programming can easily take up this course.
- - - - - - - - - - - - - -
Why learn Selenium?
For any project, Companies are rapidly inclining towards open source automated testing tools that will enable them to cut down the cost and effort that manual testing involves. Selenium is one such open source automated testing tool for websites. Performance, execution speed, and browser interaction of Selenium is too fast than any other automation tool. The test packages, the Modes of Selenium available for unattended execution, and the fact that the text script can be developed in any of the language that Selenium supports; makes Selenium the most desired automation testing tool. In addition, Selenium supports different operating systems along with support for different programming languages such as Python, Pearl, Ruby, PHP, .NET, C#, and Java; and various browsers, thereby making Selenium ahead of any other Automation tool.
- - - - - - - - - - - - - -
For more information, Please write back to us at sales@edureka.in or call us at IND: 9606058406 / US: 18338555775 (toll free).
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
- - - - - - - - - - - - - -
Customer Review:
Tom Tully says, “I wanted to learn Selenium Webdriver in a live, real course, not self paced, so there would be pressure on me to finish. Edureka accomplished this at a price far lower than an in-person class, and as far as I know they are the only internet class that has live lectures on this subject. Teacher was very knowledgeable. I learned basic use of Selenium. No problem with me being in US and teacher in India. They have US 800 number.”
detail
{'title': 'Selenium Interview Questions and Answers For Freshers And Experienced | Selenium Interview | Edureka', 'heatmap': [{'end': 279.463, 'start': 163.849, 'weight': 0.726}, {'end': 831.681, 'start': 664.565, 'weight': 1}, {'end': 944.235, 'start': 884.097, 'weight': 0.717}, {'end': 1052.415, 'start': 994.511, 'weight': 0.783}, {'end': 4822.389, 'start': 4758.03, 'weight': 0.725}], 'summary': 'Covers various aspects of selenium interview preparation, including uses of excel sheet as a data source, selenium webdriver features, capabilities, handling browser window size and dropdown, windows and frames, testng, and frameworks in automation, providing practical examples and emphasizing their significance.', 'chapters': [{'end': 464.919, 'segs': [{'end': 67.899, 'src': 'embed', 'start': 43.574, 'weight': 5, 'content': [{'end': 52.702, 'text': 'so whenever you a selenium webdriver is a script written in different programming languages, you can use java, ruby pearl, python, php, javascript,', 'start': 43.574, 'duration': 9.128}, {'end': 55.324, 'text': 'etc. to write your selenium scripts.', 'start': 52.702, 'duration': 2.622}, {'end': 62.854, 'text': 'so these scripts might throw exception at certain point of time when the application does not behave as per your expectation.', 'start': 55.324, 'duration': 7.53}, {'end': 65.557, 'text': 'so few of the exceptions are listed below.', 'start': 62.854, 'duration': 2.703}, {'end': 67.899, 'text': 'the first one is timeout exception.', 'start': 65.557, 'duration': 2.342}], 'summary': 'Selenium webdriver allows scripting in various languages, such as java, ruby, python, etc., and may encounter timeout exceptions.', 'duration': 24.325, 'max_score': 43.574, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM43574.jpg'}, {'end': 208.308, 'src': 'embed', 'start': 185.033, 'weight': 6, 'content': [{'end': 196.06, 'text': 'So what we do is the at the rate test annotation, it has a parameter that is expected exception and you can name the exception that you are expecting.', 'start': 185.033, 'duration': 11.027}, {'end': 203.625, 'text': "For instance, I say I run a test and I know that element which I'm trying to find is not available on the currently loaded page.", 'start': 196.52, 'duration': 7.105}, {'end': 208.308, 'text': 'So you expect that it should throw a no such element exception.', 'start': 204.145, 'duration': 4.163}], 'summary': "Test annotation parameter 'expected exception' allows naming the expected exception, such as 'no such element exception'.", 'duration': 23.275, 'max_score': 185.033, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM185033.jpg'}, {'end': 288.91, 'src': 'heatmap', 'start': 163.849, 'weight': 0, 'content': [{'end': 167.63, 'text': 'then Selenium would throw a stale element exception, okay?', 'start': 163.849, 'duration': 3.781}, {'end': 173.426, 'text': 'The second question is what is exception test in Selenium WebDriver?', 'start': 168.823, 'duration': 4.603}, {'end': 178.329, 'text': 'So whenever you run a test, you expect an exception to be thrown.', 'start': 173.946, 'duration': 4.383}, {'end': 181.731, 'text': 'You have written a test in a way that it should throw an exception.', 'start': 178.369, 'duration': 3.362}, {'end': 184.693, 'text': 'Might be this is a part of your negative testing strategy.', 'start': 182.211, 'duration': 2.482}, {'end': 196.06, 'text': 'So what we do is the at the rate test annotation, it has a parameter that is expected exception and you can name the exception that you are expecting.', 'start': 185.033, 'duration': 11.027}, {'end': 203.625, 'text': "For instance, I say I run a test and I know that element which I'm trying to find is not available on the currently loaded page.", 'start': 196.52, 'duration': 7.105}, {'end': 208.308, 'text': 'So you expect that it should throw a no such element exception.', 'start': 204.145, 'duration': 4.163}, {'end': 216.574, 'text': 'So the format is at the rate test, expected exception, is equal to no such element exception dot class.', 'start': 208.668, 'duration': 7.906}, {'end': 221.719, 'text': 'So whatever exception you expect over here, you should append dot class after that.', 'start': 217.075, 'duration': 4.644}, {'end': 226.703, 'text': "So that's the standard format and the way in which the exception is to be stated.", 'start': 222.219, 'duration': 4.484}, {'end': 232.328, 'text': 'So the next question is have you used Excel sheet in your project?', 'start': 228.124, 'duration': 4.204}, {'end': 236.297, 'text': 'so this is a very common question that people would like to ask,', 'start': 232.935, 'duration': 3.362}, {'end': 241.94, 'text': 'and people would like to drill down on the excel sheets part so as to how you used it.', 'start': 236.297, 'duration': 5.643}, {'end': 243.381, 'text': 'did you use it for data sets?', 'start': 241.94, 'duration': 1.441}, {'end': 252.106, 'text': 'did you use it for providing information while starting your test, like, for instance, the application url, then the username, the password?', 'start': 243.381, 'duration': 8.725}, {'end': 253.427, 'text': 'in what way did you use it?', 'start': 252.106, 'duration': 1.321}, {'end': 257.969, 'text': 'people would be interested to know, and also people would like to know if it was dynamic.', 'start': 253.427, 'duration': 4.542}, {'end': 260.891, 'text': 'the coding was dynamic, that is, No hard codings.', 'start': 257.969, 'duration': 2.922}, {'end': 266.194, 'text': 'the for loops would run as many number of times there is data in the data sheet, and so on.', 'start': 260.891, 'duration': 5.303}, {'end': 273.059, 'text': 'Excel sheet is used as a data source for test and also contains data set for data when testing.', 'start': 266.915, 'duration': 6.144}, {'end': 279.463, 'text': 'So these are the two basic uses of Excel sheet when you use it as a data source.', 'start': 273.7, 'duration': 5.763}, {'end': 284.327, 'text': 'So what can be the part of the Excel sheet? It can be the application URL for all environments.', 'start': 279.503, 'duration': 4.824}, {'end': 286.949, 'text': 'That is, you state all the application.', 'start': 284.767, 'duration': 2.182}, {'end': 288.91, 'text': 'For example, you have different environments.', 'start': 287.229, 'duration': 1.681}], 'summary': 'Selenium webdriver exceptions and usage of excel sheet in testing, including dynamic coding and data sets.', 'duration': 35.483, 'max_score': 163.849, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM163849.jpg'}, {'end': 355.271, 'src': 'embed', 'start': 324.051, 'weight': 3, 'content': [{'end': 328.755, 'text': 'Each environment will be associated with a different username and a different password.', 'start': 324.051, 'duration': 4.704}, {'end': 333.459, 'text': 'So this is a case wherein, you know, the security is specifically concerned.', 'start': 329.195, 'duration': 4.264}, {'end': 338.643, 'text': 'So you can use it to store your usernames and passwords in an encoded format.', 'start': 333.899, 'duration': 4.744}, {'end': 344.027, 'text': "It's a very good practice to put your usernames and password in encoded format in Excel sheets.", 'start': 339.023, 'duration': 5.004}, {'end': 348.128, 'text': 'Keeping open passwords is vulnerable to security risks.', 'start': 344.827, 'duration': 3.301}, {'end': 355.271, 'text': 'So just encode your password, put it in the Excel sheet, your framework or wherever you are calling your passwords.', 'start': 348.328, 'duration': 6.943}], 'summary': 'Storing usernames and passwords in an encoded format, such as excel sheets, is a good security practice to mitigate vulnerabilities.', 'duration': 31.22, 'max_score': 324.051, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM324051.jpg'}, {'end': 429.687, 'src': 'embed', 'start': 394.35, 'weight': 2, 'content': [{'end': 395.331, 'text': 'Rest will be skipped.', 'start': 394.35, 'duration': 0.981}, {'end': 402.194, 'text': 'so these are the three major uses of excel sheet when it is used as a data source.', 'start': 395.891, 'duration': 6.303}, {'end': 410.798, 'text': 'if you use it as a data set for data driven test, then you have data for your different iterations to be performed on application.', 'start': 402.194, 'duration': 8.604}, {'end': 418.562, 'text': 'for instance, i have a page wherein i want to check, you know, by putting in the different combinations of different fields, for example, first name,', 'start': 410.798, 'duration': 7.764}, {'end': 423.204, 'text': 'last name, email, and I want to perform UI validations as well.', 'start': 418.562, 'duration': 4.642}, {'end': 429.687, 'text': "So what I will do is for each iteration I'll have a particular data set in which one of the field is invalid,", 'start': 423.304, 'duration': 6.383}], 'summary': 'Excel sheet used for data-driven tests with different iterations and ui validations.', 'duration': 35.337, 'max_score': 394.35, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM394350.jpg'}, {'end': 464.919, 'src': 'embed', 'start': 439.631, 'weight': 1, 'content': [{'end': 445.053, 'text': 'So all these data, they can be kept in Excel sheet as a data set for your data driven test.', 'start': 439.631, 'duration': 5.422}, {'end': 455.297, 'text': 'And your code is going to execute each row of this as one data set, put it onto your application and then run your test case.', 'start': 445.654, 'duration': 9.643}, {'end': 460.098, 'text': 'So your functional flow is the same, your data for each iteration differs.', 'start': 455.717, 'duration': 4.381}, {'end': 464.919, 'text': "So that's the particular use of using it for data driven testing.", 'start': 460.378, 'duration': 4.541}], 'summary': 'Data driven testing uses excel sheet as data set for executing test cases with varying data for each iteration.', 'duration': 25.288, 'max_score': 439.631, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM439631.jpg'}], 'start': 0.089, 'title': 'Selenium interview prep and uses of excel sheet as data source', 'summary': 'Covers selenium interview preparation, including different exceptions in selenium webdriver and the usage of excel sheet in projects, as well as the uses of excel sheet as a data source for storing application data and enabling data driven testing for different iterations.', 'chapters': [{'end': 273.059, 'start': 0.089, 'title': 'Selenium interview prep', 'summary': 'Discusses selenium interview preparation, covering topics like different exceptions in selenium webdriver, exception test in selenium webdriver, and usage of excel sheet in projects.', 'duration': 272.97, 'highlights': ['The chapter discusses different exceptions in selenium webdriver such as timeout exception, no such element exception, element not visible exception, and stale element exception.', 'It explains the exception test in Selenium WebDriver, demonstrating the format for specifying the expected exceptions using the at the rate test annotation.', 'The usage of Excel sheet in projects is discussed, emphasizing its role as a data source for tests and its dynamic coding for running as many times as there is data in the data sheet.']}, {'end': 464.919, 'start': 273.7, 'title': 'Uses of excel sheet as data source', 'summary': 'Discusses the various uses of excel sheet as a data source, including storing application urls, usernames and passwords for different environments, and test cases to be executed, with an emphasis on data driven testing for different iterations.', 'duration': 191.219, 'highlights': ['The chapter discusses the various uses of Excel sheet as a data source, including storing application URLs, usernames and passwords for different environments, and test cases to be executed, with an emphasis on data driven testing for different iterations.', 'Excel sheet can be used to store application URLs for different environments, such as development, testing, staging, pre-production, and production, and point out the specific URL to be used in the code, providing flexibility and organization.', 'Storing usernames and passwords in an encoded format in Excel sheets is recommended to enhance security and mitigate vulnerabilities.', 'Excel sheet can be utilized to specify the test cases to be executed, allowing for selective execution of specific test cases and skipping the rest, thereby optimizing testing processes.', "Using Excel sheet as a data set for data driven testing enables the storage of different iterations' data for performing UI validations and executing test cases, providing a structured approach for functional testing with varying data for each iteration."]}], 'duration': 464.83, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM89.jpg', 'highlights': ['The usage of Excel sheet in projects is discussed, emphasizing its role as a data source for tests and its dynamic coding for running as many times as there is data in the data sheet.', "Using Excel sheet as a data set for data driven testing enables the storage of different iterations' data for performing UI validations and executing test cases, providing a structured approach for functional testing with varying data for each iteration.", 'Excel sheet can be utilized to specify the test cases to be executed, allowing for selective execution of specific test cases and skipping the rest, thereby optimizing testing processes.', 'Storing usernames and passwords in an encoded format in Excel sheets is recommended to enhance security and mitigate vulnerabilities.', 'Excel sheet can be used to store application URLs for different environments, such as development, testing, staging, pre-production, and production, and point out the specific URL to be used in the code, providing flexibility and organization.', 'The chapter discusses different exceptions in selenium webdriver such as timeout exception, no such element exception, element not visible exception, and stale element exception.', 'It explains the exception test in Selenium WebDriver, demonstrating the format for specifying the expected exceptions using the at the rate test annotation.', 'The chapter discusses the various uses of Excel sheet as a data source, including storing application URLs, usernames and passwords for different environments, and test cases to be executed, with an emphasis on data driven testing for different iterations.']}, {'end': 1536.328, 'segs': [{'end': 577.778, 'src': 'embed', 'start': 516.511, 'weight': 3, 'content': [{'end': 526.376, 'text': 'So first of all I declare a string called proxy and state what hub I want to use in terms of the host name or the IP address.', 'start': 516.511, 'duration': 9.865}, {'end': 529.908, 'text': 'So over here I have taken the IP address that is 199.201.', 'start': 526.977, 'duration': 2.931}, {'end': 538.968, 'text': '125.147 and the port on which the communication needs to be carried out is 8080.', 'start': 529.908, 'duration': 9.06}, {'end': 544.432, 'text': 'So now using the proxy class, so org.openqa.selenium.proxy.', 'start': 538.968, 'duration': 5.464}, {'end': 548.055, 'text': "Okay, so I'm creating an object of proxy class.", 'start': 544.992, 'duration': 3.063}, {'end': 550.737, 'text': 'Proxy is equal to new proxy.', 'start': 548.635, 'duration': 2.102}, {'end': 563.326, 'text': 'Then I will set the HTTP proxy, the FTP proxy, and the SSL proxy using proxy.setHttpProxy to the value that we have taken as string over here.', 'start': 550.977, 'duration': 12.349}, {'end': 567.894, 'text': 'ftp proxy to the same ssl proxy to the same.', 'start': 564.073, 'duration': 3.821}, {'end': 573.937, 'text': 'so you can also set different proxies over here, like if you want the http proxy to go through 199.201.', 'start': 567.894, 'duration': 6.043}, {'end': 577.778, 'text': 'the http proxy can be mentioned here.', 'start': 573.937, 'duration': 3.841}], 'summary': 'Setting up proxy with ip address 199.201.125.147 and port 8080 for communication in selenium.', 'duration': 61.267, 'max_score': 516.511, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM516510.jpg'}, {'end': 831.681, 'src': 'heatmap', 'start': 664.565, 'weight': 1, 'content': [{'end': 666.767, 'text': 'So now, whenever my browser invokes,', 'start': 664.565, 'duration': 2.202}, {'end': 674.993, 'text': 'it knows it has to communicate through one of the proxies and hence behave as if it is a page on that particular proxy.', 'start': 666.767, 'duration': 8.226}, {'end': 678.977, 'text': 'That is one nine nine two zero one dot one twenty five dot one forty seven.', 'start': 675.113, 'duration': 3.864}, {'end': 680.698, 'text': 'Okay, next.', 'start': 679.637, 'duration': 1.061}, {'end': 690.185, 'text': 'So this one is a very important question being frequently asked but most of the time the answer is not found up to the mark by the interviewers.', 'start': 681.318, 'duration': 8.867}, {'end': 696.55, 'text': "So let's see what exactly is a page object model and what are the advantages of page object model.", 'start': 690.665, 'duration': 5.885}, {'end': 705.016, 'text': "So as you all know that page object model it's a design pattern to create object repository for web UI elements.", 'start': 697.13, 'duration': 7.886}, {'end': 710.977, 'text': 'What we want to do is we want to separate the page methods from the page objects.', 'start': 705.694, 'duration': 5.283}, {'end': 713.739, 'text': 'Why?? Because the page objects.', 'start': 711.338, 'duration': 2.401}, {'end': 720.863, 'text': "they can be utilized by multiple tests and we don't want to create the objects in that test itself,", 'start': 713.739, 'duration': 7.124}, {'end': 728.028, 'text': 'because what will happen is ultimately you would be creating web elements for the same objects into multiple test cases.', 'start': 720.863, 'duration': 7.165}, {'end': 732.591, 'text': 'And if one of the object changes, you will have to make changes at multiple places.', 'start': 728.288, 'duration': 4.303}, {'end': 735.874, 'text': "So we don't want to give multiple points of failure.", 'start': 733.251, 'duration': 2.623}, {'end': 738.096, 'text': 'What we want is there should be a single point of failure.', 'start': 735.994, 'duration': 2.102}, {'end': 743.742, 'text': 'If the web element has changed, if the web element does not exist, if there is something happened to the web element,', 'start': 738.196, 'duration': 5.546}, {'end': 748.808, 'text': 'it has moved to a different place, because of which the XPath is not being identified or any such sort of thing.', 'start': 743.742, 'duration': 5.066}, {'end': 752.268, 'text': 'So it should be done only at one place.', 'start': 749.386, 'duration': 2.882}, {'end': 756.03, 'text': 'That is the object repository for the page which we are creating.', 'start': 752.348, 'duration': 3.682}, {'end': 761.294, 'text': 'OK, so what we do in page object model, separate the objects from the methods.', 'start': 756.531, 'duration': 4.763}, {'end': 767.558, 'text': 'So page object model is a design pattern to create object repositories for web UI elements.', 'start': 761.754, 'duration': 5.804}, {'end': 773.082, 'text': 'Then each web page in the application should have corresponding page class.', 'start': 768.038, 'duration': 5.044}, {'end': 779.026, 'text': 'So what we try to do is each of the web page of the application should have a class in the.', 'start': 773.542, 'duration': 5.484}, {'end': 787.909, 'text': 'That means we can create objects in that class and then those objects can be utilized by any of the test which needs that object.', 'start': 780.046, 'duration': 7.863}, {'end': 797.171, 'text': 'Page class will find the web elements of that web page and also contain page methods which will perform operations on those web elements.', 'start': 788.229, 'duration': 8.942}, {'end': 805.914, 'text': 'So page class will contain the page objects and the page methods will be able to perform operations on these page objects.', 'start': 797.751, 'duration': 8.163}, {'end': 809.578, 'text': 'What are the advantages of POM? That is a page object model.', 'start': 806.434, 'duration': 3.144}, {'end': 814.224, 'text': 'Keep operations and flows in UI separate from a verification.', 'start': 810.159, 'duration': 4.065}, {'end': 820.431, 'text': 'So we want to keep the objects and the operations separate from the verification.', 'start': 814.444, 'duration': 5.987}, {'end': 824.937, 'text': "So whenever we are trying to perform a verification, we don't want the methods to exist over there.", 'start': 820.491, 'duration': 4.446}, {'end': 827.518, 'text': "We don't want the objects to exist over there.", 'start': 825.397, 'duration': 2.121}, {'end': 831.681, 'text': 'So basically, for a particular functionality, you come up with three classes.', 'start': 827.679, 'duration': 4.002}], 'summary': 'Page object model separates web ui elements, provides single point of failure, and keeps operations separate from verification.', 'duration': 167.116, 'max_score': 664.565, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM664565.jpg'}, {'end': 787.909, 'src': 'embed', 'start': 756.531, 'weight': 2, 'content': [{'end': 761.294, 'text': 'OK, so what we do in page object model, separate the objects from the methods.', 'start': 756.531, 'duration': 4.763}, {'end': 767.558, 'text': 'So page object model is a design pattern to create object repositories for web UI elements.', 'start': 761.754, 'duration': 5.804}, {'end': 773.082, 'text': 'Then each web page in the application should have corresponding page class.', 'start': 768.038, 'duration': 5.044}, {'end': 779.026, 'text': 'So what we try to do is each of the web page of the application should have a class in the.', 'start': 773.542, 'duration': 5.484}, {'end': 787.909, 'text': 'That means we can create objects in that class and then those objects can be utilized by any of the test which needs that object.', 'start': 780.046, 'duration': 7.863}], 'summary': 'Page object model separates objects from methods to create object repositories for web ui elements.', 'duration': 31.378, 'max_score': 756.531, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM756531.jpg'}, {'end': 835.523, 'src': 'embed', 'start': 806.434, 'weight': 8, 'content': [{'end': 809.578, 'text': 'What are the advantages of POM? That is a page object model.', 'start': 806.434, 'duration': 3.144}, {'end': 814.224, 'text': 'Keep operations and flows in UI separate from a verification.', 'start': 810.159, 'duration': 4.065}, {'end': 820.431, 'text': 'So we want to keep the objects and the operations separate from the verification.', 'start': 814.444, 'duration': 5.987}, {'end': 824.937, 'text': "So whenever we are trying to perform a verification, we don't want the methods to exist over there.", 'start': 820.491, 'duration': 4.446}, {'end': 827.518, 'text': "We don't want the objects to exist over there.", 'start': 825.397, 'duration': 2.121}, {'end': 831.681, 'text': 'So basically, for a particular functionality, you come up with three classes.', 'start': 827.679, 'duration': 4.002}, {'end': 835.523, 'text': 'One class for the objects purely, one class for the methods.', 'start': 831.981, 'duration': 3.542}], 'summary': 'Pom separates ui operations and verification, with 3 classes for objects, methods.', 'duration': 29.089, 'max_score': 806.434, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM806434.jpg'}, {'end': 960.609, 'src': 'heatmap', 'start': 884.097, 'weight': 1, 'content': [{'end': 892.02, 'text': 'write the code for the object once and let all these classes which want the objects on the same page come to the object repository,', 'start': 884.097, 'duration': 7.923}, {'end': 896.121, 'text': 'pick up the object of its choice, do its operation and just get back the results.', 'start': 892.02, 'duration': 4.101}, {'end': 900.222, 'text': 'And this also encourages extreme code reusability.', 'start': 896.621, 'duration': 3.601}, {'end': 908.364, 'text': 'So whatever code you have written that will be utilized by different classes and hence you can achieve more code reusability.', 'start': 900.882, 'duration': 7.482}, {'end': 911.624, 'text': 'OK, then what is a page factory?', 'start': 908.784, 'duration': 2.84}, {'end': 921.186, 'text': 'So page object model was a concept wherein you have to manually create all these three classes and then work with these three classes.', 'start': 911.964, 'duration': 9.222}, {'end': 927.868, 'text': 'So page factory came into picture at a later point of time with one of the Selenium releases,', 'start': 921.626, 'duration': 6.242}, {'end': 933.07, 'text': 'and page factory gave you optimized way of implementing page object model.', 'start': 927.868, 'duration': 5.202}, {'end': 937.832, 'text': 'So it implements page object model but in a very optimized way.', 'start': 934.03, 'duration': 3.802}, {'end': 944.235, 'text': 'PageFactory is an inbuilt page object model concept for Selenium WebDriver which is very optimized.', 'start': 938.272, 'duration': 5.963}, {'end': 948.697, 'text': 'So optimized in the sense the memory utilization is very good.', 'start': 944.435, 'duration': 4.262}, {'end': 954.14, 'text': 'Also the implementation is done in completely object oriented manner.', 'start': 949.298, 'duration': 4.842}, {'end': 958.265, 'text': 'Separation of page object repository and test methods.', 'start': 954.58, 'duration': 3.685}, {'end': 960.609, 'text': 'So this is what we want to achieve.', 'start': 958.626, 'duration': 1.983}], 'summary': 'Pagefactory encourages extreme code reusability and optimized implementation of page object model in selenium webdriver.', 'duration': 22.337, 'max_score': 884.097, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM884097.jpg'}, {'end': 1052.415, 'src': 'heatmap', 'start': 994.511, 'weight': 0.783, 'content': [{'end': 1000.293, 'text': 'So all the major locators of Selenium are supported by adderit find by annotation.', 'start': 994.511, 'duration': 5.782}, {'end': 1010.497, 'text': 'So you can find any of the elements with the help of tag name, partial link text, name, link text, ID, CSS, class name and XPath attributes.', 'start': 1000.773, 'duration': 9.724}, {'end': 1018.537, 'text': 'OK, The next question is what are the different types of wait statements in Selenium WebDriver?', 'start': 1011.517, 'duration': 7.02}, {'end': 1030.363, 'text': 'So, Selenium WebDriver provides very powerful synchronization techniques by which you can synchronize the speed of execution of WebDriver script with the application under test.', 'start': 1019.198, 'duration': 11.165}, {'end': 1039.747, 'text': 'Because what happens is the application under test has certain kind of latency, like it has to serve requests from multiple users or multiple clients.', 'start': 1030.623, 'duration': 9.124}, {'end': 1043.108, 'text': "So it's going to respond one by one, one by one, one by one.", 'start': 1040.307, 'duration': 2.801}, {'end': 1049.273, 'text': 'So my request goes there and it takes a few milliseconds or seconds for the server to respond back.', 'start': 1043.249, 'duration': 6.024}, {'end': 1052.415, 'text': "But Selenium WebDriver wouldn't have known that that OK,", 'start': 1049.613, 'duration': 2.802}], 'summary': 'Selenium webdriver supports major locators, provides powerful synchronization techniques for script execution.', 'duration': 57.904, 'max_score': 994.511, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM994511.jpg'}, {'end': 1039.747, 'src': 'embed', 'start': 1011.517, 'weight': 0, 'content': [{'end': 1018.537, 'text': 'OK, The next question is what are the different types of wait statements in Selenium WebDriver?', 'start': 1011.517, 'duration': 7.02}, {'end': 1030.363, 'text': 'So, Selenium WebDriver provides very powerful synchronization techniques by which you can synchronize the speed of execution of WebDriver script with the application under test.', 'start': 1019.198, 'duration': 11.165}, {'end': 1039.747, 'text': 'Because what happens is the application under test has certain kind of latency, like it has to serve requests from multiple users or multiple clients.', 'start': 1030.623, 'duration': 9.124}], 'summary': 'Selenium webdriver offers powerful synchronization techniques to synchronize script execution with the application under test, addressing latency caused by serving requests from multiple users or clients.', 'duration': 28.23, 'max_score': 1011.517, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM1011517.jpg'}, {'end': 1135.751, 'src': 'embed', 'start': 1109.304, 'weight': 6, 'content': [{'end': 1114.608, 'text': 'It instructs WebDriver to wait for some time by polling the DOM.', 'start': 1109.304, 'duration': 5.304}, {'end': 1118.571, 'text': 'So what it does is for instance I declare a weight of 30 second.', 'start': 1115.169, 'duration': 3.402}, {'end': 1122.534, 'text': 'So it will poll the document object model periodically.', 'start': 1119.151, 'duration': 3.383}, {'end': 1123.475, 'text': 'for the element.', 'start': 1122.774, 'duration': 0.701}, {'end': 1127.14, 'text': 'For instance, my command is driver.find element by XPath XYZ.', 'start': 1123.515, 'duration': 3.625}, {'end': 1135.751, 'text': 'So it, first of all, when you come to this line of code where you want to find the element, it will go, it will try to find that object in the DOM.', 'start': 1127.68, 'duration': 8.071}], 'summary': 'Webdriver polls the dom for 30 seconds to find the element.', 'duration': 26.447, 'max_score': 1109.304, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM1109304.jpg'}, {'end': 1366.029, 'src': 'embed', 'start': 1338.075, 'weight': 7, 'content': [{'end': 1343.279, 'text': 'An explicit wait instructs the execution to wait for some time until some condition is achieved.', 'start': 1338.075, 'duration': 5.204}, {'end': 1347.042, 'text': 'So there are different conditions for which you can put an explicit wait.', 'start': 1343.839, 'duration': 3.203}, {'end': 1349.964, 'text': 'The first one being element to be clickable.', 'start': 1347.422, 'duration': 2.542}, {'end': 1357.509, 'text': 'So the condition can be wait till the element is clickable, but wait only for 30 seconds, which is the maximum timeout.', 'start': 1350.084, 'duration': 7.425}, {'end': 1366.029, 'text': 'Explicit weight also behaves in the same manner as I explained for implicit weight, that is, it would pull the DOM periodically.', 'start': 1358.624, 'duration': 7.405}], 'summary': 'Explicit waits in selenium can wait for specific conditions, such as element clickability, with a maximum timeout of 30 seconds.', 'duration': 27.954, 'max_score': 1338.075, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM1338075.jpg'}], 'start': 465.579, 'title': 'Selenium webdriver features', 'summary': 'Covers setting a proxy, page object model and page factory, and selenium webdriver wait statements, including practical examples and emphasizing code reusability and synchronization with the application under test.', 'chapters': [{'end': 690.185, 'start': 465.579, 'title': 'Setting proxy with selenium webdriver', 'summary': 'Explains how to set a proxy for a browser using selenium webdriver, including setting the proxy class, declaring the desired capabilities, and starting the browser with the specified proxy, with an example of setting http, ftp, and ssl proxies.', 'duration': 224.606, 'highlights': ['Selenium has a proxy class to redirect browsing from a proxy.', 'Setting HTTP, FTP, and SSL proxies using Selenium proxy class.', 'Example of setting HTTP proxy to 199.201.125.147 and port 8080.']}, {'end': 1010.497, 'start': 690.665, 'title': 'Page object model and page factory', 'summary': 'Highlights the concept of page object model (pom) and its advantages, emphasizing the separation of objects and methods for web ui elements, the implementation of pom to ensure code reusability, and the introduction of pagefactory as an optimized way of implementing pom in selenium webdriver.', 'duration': 319.832, 'highlights': ['PageFactory is an inbuilt page object model concept for Selenium WebDriver which is very optimized.', 'Separation of page object repository and test methods.', 'PageFactory class provides at the rate find by annotation to find web elements.', 'Page object model is a design pattern to create object repositories for web UI elements.', 'Keep operations and flows in UI separate from a verification.']}, {'end': 1536.328, 'start': 1011.517, 'title': 'Selenium webdriver wait statements', 'summary': 'Explains the types of wait statements in selenium webdriver, highlighting the use of implicit and explicit waits to synchronize the script execution with the application under test, with emphasis on polling, maximum timeout, and conditions for explicit waits.', 'duration': 524.811, 'highlights': ['Selenium WebDriver provides powerful synchronization techniques using implicit and explicit waits to synchronize script execution with the application under test.', 'Implicit wait instructs WebDriver to wait for some time by polling the DOM and can be declared upon the web driver instance for maximum seconds before throwing an exception.', 'Explicit wait allows the execution to wait for some time until specific conditions for a particular element are achieved, such as visibility, selection, or presence.']}], 'duration': 1070.749, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM465579.jpg', 'highlights': ['Selenium WebDriver provides powerful synchronization techniques using implicit and explicit waits to synchronize script execution with the application under test.', 'PageFactory is an inbuilt page object model concept for Selenium WebDriver which is very optimized.', 'Page object model is a design pattern to create object repositories for web UI elements.', 'Setting HTTP, FTP, and SSL proxies using Selenium proxy class.', 'Example of setting HTTP proxy to 199.201.125.147 and port 8080.', 'Separation of page object repository and test methods.', 'Implicit wait instructs WebDriver to wait for some time by polling the DOM and can be declared upon the web driver instance for maximum seconds before throwing an exception.', 'Explicit wait allows the execution to wait for some time until specific conditions for a particular element are achieved, such as visibility, selection, or presence.', 'Keep operations and flows in UI separate from a verification.']}, {'end': 2541.313, 'segs': [{'end': 1628.83, 'src': 'embed', 'start': 1601.98, 'weight': 0, 'content': [{'end': 1609.085, 'text': 'So Selenium can perform those operations which are beyond its capability with the help of JavaScript executor.', 'start': 1601.98, 'duration': 7.105}, {'end': 1616.627, 'text': 'So JavaScript Executor is an interface which provides a mechanism to execute JavaScript through Selenium WebDriver.', 'start': 1609.725, 'duration': 6.902}, {'end': 1621.948, 'text': 'It provides execute script and execute async script, that is,', 'start': 1617.047, 'duration': 4.901}, {'end': 1628.83, 'text': 'asynchronous script methods to run JavaScript in context of the currently selected frame or window.', 'start': 1621.948, 'duration': 6.882}], 'summary': 'Selenium uses javascript executor to extend capabilities, offering execute script and execute async script methods.', 'duration': 26.85, 'max_score': 1601.98, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM1601980.jpg'}, {'end': 1904.178, 'src': 'embed', 'start': 1879.694, 'weight': 1, 'content': [{'end': 1885.859, 'text': 'Handling special keyboard and mouse events are done using the advanced user interactions API.', 'start': 1879.694, 'duration': 6.165}, {'end': 1888.842, 'text': 'It contains the actions and the action classes.', 'start': 1885.859, 'duration': 2.983}, {'end': 1896.773, 'text': 'So there are basically two classes one is called as the actions and one is called as the action class that are needed for executing these events.', 'start': 1888.842, 'duration': 7.931}, {'end': 1900.415, 'text': 'So basically all the complex things you can just hand over to actions class.', 'start': 1896.913, 'duration': 3.502}, {'end': 1904.178, 'text': 'Like for instance, I want to type in something in uppercase.', 'start': 1900.475, 'duration': 3.703}], 'summary': 'Advanced user interactions api handles keyboard and mouse events using actions and action classes.', 'duration': 24.484, 'max_score': 1879.694, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM1879694.jpg'}, {'end': 2099.995, 'src': 'embed', 'start': 2071.567, 'weight': 3, 'content': [{'end': 2073.628, 'text': 'So the first one is the key down method.', 'start': 2071.567, 'duration': 2.061}, {'end': 2077.688, 'text': 'So key down method accepts modifier key as the parameter.', 'start': 2074.108, 'duration': 3.58}, {'end': 2088.351, 'text': 'So anyone out of these three, like the alt shift control, for instance, I want to press control shift delete with the help of my Selenium script.', 'start': 2078.009, 'duration': 10.342}, {'end': 2094.793, 'text': 'So I can use the actions class, I can use the key down method, I can key down alt,', 'start': 2088.712, 'duration': 6.081}, {'end': 2099.995, 'text': 'then the next line of code I can key down shift and the next line of code I can key down delete.', 'start': 2094.793, 'duration': 5.202}], 'summary': 'Selenium script can press control shift delete using key down method with modifier keys.', 'duration': 28.428, 'max_score': 2071.567, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2071567.jpg'}, {'end': 2381.555, 'src': 'embed', 'start': 2347.679, 'weight': 2, 'content': [{'end': 2353.202, 'text': 'So just capture it and you send it across to the client that, OK, see, your application is not up from your end.', 'start': 2347.679, 'duration': 5.523}, {'end': 2356.283, 'text': 'And hence, this is the proof.', 'start': 2354.102, 'duration': 2.181}, {'end': 2361.346, 'text': 'So screenshot would serve as the best proof in any case, success or failure.', 'start': 2356.824, 'duration': 4.522}, {'end': 2364.868, 'text': 'So keeping screenshots is a good practice.', 'start': 2362.046, 'duration': 2.822}, {'end': 2367.529, 'text': "And let's see how to capture the screenshot.", 'start': 2365.648, 'duration': 1.881}, {'end': 2371.932, 'text': 'So getting screenshot is done through an object of file class.', 'start': 2367.709, 'duration': 4.223}, {'end': 2381.555, 'text': 'So what we want to do is basically First of all, we want to get the screenshot of the web browser, whatever state the application is.', 'start': 2372.412, 'duration': 9.143}], 'summary': 'Capturing and sending screenshots to clients as proof of application status is essential for success or failure.', 'duration': 33.876, 'max_score': 2347.679, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2347679.jpg'}], 'start': 1536.673, 'title': 'Selenium webdriver capabilities', 'summary': 'Covers using javascript executor to extend selenium webdriver capabilities, implementing mouse and keyboard actions with the actions class, sending modifier and function keys, and capturing screenshots for client proof and reference.', 'chapters': [{'end': 2045.647, 'start': 1536.673, 'title': 'Javascript executor and actions class in selenium', 'summary': 'Explains the use of javascript executor in selenium webdriver, which extends its capabilities to perform operations beyond its built-in methods, and the actions class for imitating mouse and keyboard actions, including methods like click and hold, drag and drop, and source target.', 'duration': 508.974, 'highlights': ['The JavaScript executor in Selenium WebDriver extends its capabilities to perform operations beyond its built-in methods, allowing the execution of JavaScript in the context of the currently selected frame or window.', 'The JavaScript executor is used to scroll down a page or to a particular element in the page, providing the ability to execute scripts directly for scrolling.', 'The actions class in Selenium provides solutions for imitating mouse and keyboard actions, including handling special keyboard and mouse events using the advanced user interactions API.']}, {'end': 2287.636, 'start': 2046.647, 'title': 'Sending modifier and function keys in selenium', 'summary': 'Discusses how to send modifier keys like alt, shift, and control, as well as function keys using the key down and key up methods in selenium webdriver, enabling complex keyboard operations and case manipulation in test scripts.', 'duration': 240.989, 'highlights': ['Using the key down method, modifier keys like alt, shift, and control can be pressed and kept held during subsequent interactions, enabling complex keyboard operations in Selenium scripts.', 'The key down method allows for case manipulation by keeping the modifier keys held while typing, resulting in uppercase letters for the corresponding text entered using the send keys method.', 'The key up method performs the release of modifier keys, allowing subsequent interactions to resume normal operations and case for the entered text to revert to lowercase.', 'The actions class in Selenium WebDriver provides methods like key down and key up to handle modifier keys and perform complex keyboard operations.', 'The chapter also showcases an example of using the actions class to send text in uppercase by pressing and releasing the shift key during the text entry process.']}, {'end': 2541.313, 'start': 2287.636, 'title': 'Capturing screenshots in selenium webdriver', 'summary': 'Discusses the importance of capturing screenshots in selenium webdriver for providing proof to the client, the process of capturing screenshots using selenium webdriver, and storing the screenshot in the file system for future reference.', 'duration': 253.677, 'highlights': ["Capturing screenshots serves as proof for the client in cases of success or failure, ensuring the application's state can be validated, contributing to the best practice.", "The process of capturing screenshots in Selenium WebDriver involves using the 'takeScreenshot' method to obtain the current state of the driver as an output file, then transferring the file to the file system using file utils.", "The captured screenshot is stored in the java heap memory and must be transferred to the file system to ensure it is preserved beyond program execution, as java's garbage collector will clear the heap memory."]}], 'duration': 1004.64, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM1536673.jpg', 'highlights': ['The JavaScript executor in Selenium WebDriver extends its capabilities to perform operations beyond its built-in methods, allowing the execution of JavaScript in the context of the currently selected frame or window.', 'The actions class in Selenium provides solutions for imitating mouse and keyboard actions, including handling special keyboard and mouse events using the advanced user interactions API.', "Capturing screenshots serves as proof for the client in cases of success or failure, ensuring the application's state can be validated, contributing to the best practice.", 'Using the key down method, modifier keys like alt, shift, and control can be pressed and kept held during subsequent interactions, enabling complex keyboard operations in Selenium scripts.']}, {'end': 2903.584, 'segs': [{'end': 2625.959, 'src': 'embed', 'start': 2578.052, 'weight': 0, 'content': [{'end': 2584.956, 'text': 'there is an inbuilt method from selenium inside the driver dot, manage dot, window dot, maximize.', 'start': 2578.052, 'duration': 6.904}, {'end': 2591.481, 'text': 'so this maximize method, it will put your browser window to the maximum width as your screen.', 'start': 2584.956, 'duration': 6.525}, {'end': 2598.465, 'text': 'so if your resolution is a 1980 into 1240, so it will just maximize it to that particular resolution.', 'start': 2591.481, 'duration': 6.984}, {'end': 2602.067, 'text': 'if your resolution is something else, it will cater to that resolution.', 'start': 2598.465, 'duration': 3.602}, {'end': 2608.149, 'text': 'but the basic functionality it will perform is maximize your browser window to fit to your screen.', 'start': 2602.067, 'duration': 6.082}, {'end': 2610.991, 'text': 'but what if I want to set it to a particular size?', 'start': 2608.149, 'duration': 2.842}, {'end': 2618.774, 'text': 'so to set it to a particular size, what I will do is, first of all I will have to know what size I want to set my window to.', 'start': 2610.991, 'duration': 7.783}, {'end': 2622.156, 'text': 'so what I do is system.out.println.', 'start': 2619.034, 'duration': 3.122}, {'end': 2625.959, 'text': "I'll say driver.manage.window.getsize.", 'start': 2622.156, 'duration': 3.803}], 'summary': "Selenium's maximize method sets browser window to screen resolution, but specific size requires knowing and setting dimensions.", 'duration': 47.907, 'max_score': 2578.052, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2578052.jpg'}, {'end': 2721.825, 'src': 'embed', 'start': 2694.79, 'weight': 2, 'content': [{'end': 2699.012, 'text': 'okay, I can also use JavaScript executor to do the same.', 'start': 2694.79, 'duration': 4.222}, {'end': 2703.815, 'text': 'so what I do is I say JavaScript executor, driver dot execute script.', 'start': 2699.012, 'duration': 4.803}, {'end': 2705.015, 'text': 'window dot resize.', 'start': 2703.815, 'duration': 1.2}, {'end': 2712.88, 'text': "so within JavaScript there is a very simple function to resize your window and that's window dot resize to, and I just pass on the dimensions,", 'start': 2705.015, 'duration': 7.865}, {'end': 2715.101, 'text': 'that is, I want it to be 1024 into 768.', 'start': 2712.88, 'duration': 2.221}, {'end': 2721.825, 'text': 'so this is a horizontal window where in the X coordinate is greater than the Y coordinate.', 'start': 2715.101, 'duration': 6.724}], 'summary': 'Using javascript executor, window was resized to 1024x768 dimensions.', 'duration': 27.035, 'max_score': 2694.79, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2694790.jpg'}, {'end': 2782.116, 'src': 'embed', 'start': 2756.747, 'weight': 4, 'content': [{'end': 2764.849, 'text': 'So you see over here, the important condition to use the select class for Selenium WebDriver is that the HTML tag for the element should be select.', 'start': 2756.747, 'duration': 8.102}, {'end': 2773.951, 'text': 'That is, over here, without the select tag, you cannot use this method, that is select by visible text, select by index, or select by value.', 'start': 2765.429, 'duration': 8.522}, {'end': 2778.114, 'text': "So just be sure that whatever element you're using, it should have the select tag.", 'start': 2774.651, 'duration': 3.463}, {'end': 2782.116, 'text': 'So what I can do is web element, my select element.', 'start': 2778.774, 'duration': 3.342}], 'summary': 'To use the select class in selenium webdriver, the element should have the select tag.', 'duration': 25.369, 'max_score': 2756.747, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2756747.jpg'}, {'end': 2829.018, 'src': 'embed', 'start': 2802.529, 'weight': 3, 'content': [{'end': 2806.33, 'text': 'so this is the code just for selecting that drop down to work with.', 'start': 2802.529, 'duration': 3.801}, {'end': 2809.291, 'text': 'or I can directly say select drop down is equal to new.', 'start': 2806.33, 'duration': 2.961}, {'end': 2810.511, 'text': 'select driver dot.', 'start': 2809.291, 'duration': 1.22}, {'end': 2813.212, 'text': 'find element by id as my select.', 'start': 2810.511, 'duration': 2.701}, {'end': 2820.954, 'text': 'so now, within this drop down option, I have my drop down, for which there are different options available.', 'start': 2813.212, 'duration': 7.742}, {'end': 2825.737, 'text': 'so you can select the value using three different methods.', 'start': 2820.954, 'duration': 4.783}, {'end': 2829.018, 'text': 'the first one is select by visible text.', 'start': 2825.737, 'duration': 3.281}], 'summary': "Code selects dropdown using 'find element by id' method.", 'duration': 26.489, 'max_score': 2802.529, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2802529.jpg'}, {'end': 2879.918, 'src': 'embed', 'start': 2849.344, 'weight': 5, 'content': [{'end': 2855.245, 'text': 'get the option index or index your options from 0 to n-1.', 'start': 2849.344, 'duration': 5.901}, {'end': 2864.028, 'text': 'so for me, option 1 is at index 0, option 2 is at index 1 and option 3 is at index 2.', 'start': 2855.245, 'duration': 8.783}, {'end': 2869.89, 'text': 'so when I say drop-down dot, select by index 2, what will get selected from the drop-down is Spain.', 'start': 2864.028, 'duration': 5.862}, {'end': 2875.795, 'text': 'okay, do remember that the indexing it always starts from 0 and not from 1.', 'start': 2869.89, 'duration': 5.905}, {'end': 2879.918, 'text': 'and the third option is drop-down dot select by value.', 'start': 2875.795, 'duration': 4.123}], 'summary': "Options in a dropdown are indexed from 0 to n-1. selecting by index 2 yields 'spain'.", 'duration': 30.574, 'max_score': 2849.344, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2849344.jpg'}], 'start': 2542.628, 'title': 'Setting browser window size and handling dropdown in selenium', 'summary': 'Covers setting browser window size in selenium, demonstrating maximizing the window and setting specific dimensions using inbuilt methods and javascript executor. it also explores handling dropdown in selenium webdriver, emphasizing the use of select class and detailing methods for selecting dropdown values.', 'chapters': [{'end': 2715.101, 'start': 2542.628, 'title': 'Setting browser window size with selenium', 'summary': 'Explains how to set the browser window size in selenium, highlighting the methods to maximize the window to fit the screen resolution and set a specific window size using inbuilt methods as well as javascript executor, with a demonstration of resizing the window to 420x600 dimensions and 1024x768 using dimension classes and javascript executor respectively.', 'duration': 172.473, 'highlights': ["The chapter explains the method to maximize the browser window using Selenium's inbuilt method 'driver.manage().window().maximize', which adjusts the window to the screen resolution, such as 1980x1240, and that it performs the basic functionality of maximizing the browser window to fit the screen.", "It details the process of setting a specific window size using the method 'driver.manage().window().setSize(new Dimension(420, 600))', demonstrating how to create a dimension object and resize the window to 420x600 dimensions, highlighting the ability to set a new size for the window.", "The chapter also mentions the utilization of JavaScript executor to resize the window by using 'driver.executeScript('window.resizeTo(1024, 768)')', showcasing the alternative option to set the window size by passing dimensions, such as 1024x768, using JavaScript executor."]}, {'end': 2903.584, 'start': 2715.101, 'title': 'Handling dropdown in selenium webdriver', 'summary': 'Explains how to handle a dropdown in selenium webdriver, highlighting the importance of using the select class for elements with the select tag and detailing three methods for selecting dropdown values: by visible text, by index, and by value.', 'duration': 188.483, 'highlights': ['The HTML tag for the element should be select for using the select class in Selenium WebDriver.', 'Three methods for selecting dropdown values: by visible text, by index, and by value.', 'Explaining the indexing of options from 0 to n-1 and the usage of select by index method.']}], 'duration': 360.956, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2542628.jpg', 'highlights': ["The chapter explains the method to maximize the browser window using Selenium's inbuilt method 'driver.manage().window().maximize', which adjusts the window to the screen resolution, such as 1980x1240, and that it performs the basic functionality of maximizing the browser window to fit the screen.", "It details the process of setting a specific window size using the method 'driver.manage().window().setSize(new Dimension(420, 600))', demonstrating how to create a dimension object and resize the window to 420x600 dimensions, highlighting the ability to set a new size for the window.", "The chapter also mentions the utilization of JavaScript executor to resize the window by using 'driver.executeScript('window.resizeTo(1024, 768)')', showcasing the alternative option to set the window size by passing dimensions, such as 1024x768, using JavaScript executor.", 'Three methods for selecting dropdown values: by visible text, by index, and by value.', 'The HTML tag for the element should be select for using the select class in Selenium WebDriver.', 'Explaining the indexing of options from 0 to n-1 and the usage of select by index method.']}, {'end': 3473.784, 'segs': [{'end': 2974.819, 'src': 'embed', 'start': 2946.263, 'weight': 0, 'content': [{'end': 2954.69, 'text': 'So it is very important that you switch from the current window to the newly opened window and to do this Selenium has provided an inbuilt method.', 'start': 2946.263, 'duration': 8.427}, {'end': 2959.269, 'text': 'So you can use the driver dot switch to that window.', 'start': 2955.427, 'duration': 3.842}, {'end': 2965.013, 'text': 'That is, if you want to switch to a new window using the window name so I can pass the window name.', 'start': 2959.73, 'duration': 5.283}, {'end': 2974.819, 'text': "whatever the window name is, I can say OK, it's driver to switch to window X, Y, Z and it will find the window name and just shift to that window.", 'start': 2965.013, 'duration': 9.806}], 'summary': "Use selenium's inbuilt method to switch between windows for improved functionality.", 'duration': 28.556, 'max_score': 2946.263, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2946263.jpg'}, {'end': 3030.319, 'src': 'embed', 'start': 2984.626, 'weight': 2, 'content': [{'end': 2992.134, 'text': 'the same page is used to switch to a frame using the name of frame and the third one is driver.switchToAlert.', 'start': 2984.626, 'duration': 7.508}, {'end': 2997.079, 'text': 'so if there is any kind of alert which is asking you to accept it or dismiss it,', 'start': 2992.134, 'duration': 4.945}, {'end': 3001.724, 'text': 'you need to first go to that alert and only then you can accept or dismiss it.', 'start': 2997.079, 'duration': 4.645}, {'end': 3004.527, 'text': 'so we will be writing driver.switchToAlert.', 'start': 3001.724, 'duration': 2.803}, {'end': 3008.848, 'text': 'There is a problem when the window does not have a name.', 'start': 3005.506, 'duration': 3.342}, {'end': 3016.052, 'text': 'So it is a common problem that whatever new window is open, the window does not have a name, the window does not have an ID.', 'start': 3009.128, 'duration': 6.924}, {'end': 3021.596, 'text': 'So how will you identify that window? So there is a method called as getWindowHandle.', 'start': 3016.212, 'duration': 5.384}, {'end': 3023.556, 'text': 'so get window handle.', 'start': 3022.176, 'duration': 1.38}, {'end': 3030.319, 'text': 'what it will do is it will return you the handle of the current window and the command is get windows handle.', 'start': 3023.556, 'duration': 6.763}], 'summary': 'Switch between frames and handle alerts using driver.switchtoalert and getwindowhandle', 'duration': 45.693, 'max_score': 2984.626, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2984626.jpg'}, {'end': 3124.71, 'src': 'embed', 'start': 3097.473, 'weight': 5, 'content': [{'end': 3104.176, 'text': 'yes, you can do it using the inbuilt method from selenium web driver and the method is get attribute.', 'start': 3097.473, 'duration': 6.703}, {'end': 3108.997, 'text': 'so using get attribute, you need to pass a parameter which is the name of the attribute,', 'start': 3104.176, 'duration': 4.821}, {'end': 3113.399, 'text': 'and selenium web driver will return you the value for that particular attribute.', 'start': 3108.997, 'duration': 4.402}, {'end': 3118.707, 'text': "So let's take an example that I have WebElement, which is the login text box.", 'start': 3114.045, 'duration': 4.662}, {'end': 3124.71, 'text': 'So I say WebElement eLogin is equal to driver.findElement by name as login.', 'start': 3119.307, 'duration': 5.403}], 'summary': "Selenium web driver's get attribute method retrieves attribute values for web elements.", 'duration': 27.237, 'max_score': 3097.473, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3097473.jpg'}, {'end': 3271.999, 'src': 'embed', 'start': 3249.481, 'weight': 6, 'content': [{'end': 3258.528, 'text': 'So these two are important conditions which you will have to check before you can upload the file using the direct method provided by Selenium WebDriver.', 'start': 3249.481, 'duration': 9.047}, {'end': 3264.811, 'text': 'So what you can do is you can upload the file just by using the send keys method.', 'start': 3259.386, 'duration': 5.425}, {'end': 3271.999, 'text': 'So you can say element is equal to driver dot find element by ID upload file and element dot send keys.', 'start': 3264.832, 'duration': 7.167}], 'summary': 'Check conditions before uploading file using selenium webdriver, upload file using send keys method.', 'duration': 22.518, 'max_score': 3249.481, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3249481.jpg'}, {'end': 3328.96, 'src': 'embed', 'start': 3295.313, 'weight': 7, 'content': [{'end': 3299.017, 'text': 'Next, how can we enter text without using the SendKeys method??', 'start': 3295.313, 'duration': 3.704}, {'end': 3301.699, 'text': 'Whether it is possible to enter text without SendKeys?', 'start': 3299.537, 'duration': 2.162}, {'end': 3303.941, 'text': 'The answer to this question is yes.', 'start': 3302.24, 'duration': 1.701}, {'end': 3310.328, 'text': 'You can enter text by using JavaScript Executor, which we have already seen in the previous questions.', 'start': 3304.582, 'duration': 5.746}, {'end': 3319.395, 'text': 'And how to do that? JavaScript Executor JSE, that is an object of JavaScript Executor, and also providing it the instance of the web driver.', 'start': 3311.128, 'duration': 8.267}, {'end': 3328.96, 'text': 'So jsc.executescript document.getElementByIdAsLogin.value is equal to test text without send keys.', 'start': 3319.415, 'duration': 9.545}], 'summary': 'Text can be entered without sendkeys using javascript executor, as demonstrated in previous questions.', 'duration': 33.647, 'max_score': 3295.313, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3295313.jpg'}, {'end': 3481.18, 'src': 'embed', 'start': 3449.23, 'weight': 8, 'content': [{'end': 3453.513, 'text': 'Alert is equal to wait until expected conditions alert is present.', 'start': 3449.23, 'duration': 4.283}, {'end': 3455.614, 'text': 'That is the pop up is being displayed.', 'start': 3454.053, 'duration': 1.561}, {'end': 3461.654, 'text': 'then alert dot authenticate using new user and password.', 'start': 3456.089, 'duration': 5.565}, {'end': 3464.596, 'text': 'so I have defined the username and password.', 'start': 3461.654, 'duration': 2.942}, {'end': 3468.96, 'text': "so what I'll do is I'll just pass on the values of username and password from here,", 'start': 3464.596, 'duration': 4.364}, {'end': 3473.784, 'text': 'which will be entered in into the text fields of that pop-up bin display.', 'start': 3468.96, 'duration': 4.824}, {'end': 3481.18, 'text': 'okay, the next is explain how you can find broken links in in a page using Selenium.', 'start': 3473.784, 'duration': 7.396}], 'summary': 'Using selenium, define alert authentication with new user and password, and find broken links in a page.', 'duration': 31.95, 'max_score': 3449.23, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3449230.jpg'}], 'start': 2904.025, 'title': 'Handling windows and frames in selenium webdriver', 'summary': 'Explains switching webdriver references to new windows and frames, emphasizing the necessity to switch for performing operations and finding elements. it also discusses practical solutions for navigating, extracting, and interacting with web elements, including handling windows without names or ids, retrieving attributes and text, uploading files, entering text, and handling authentication pop-ups.', 'chapters': [{'end': 3008.848, 'start': 2904.025, 'title': 'Switching to new windows and frames in selenium', 'summary': 'Explains the significance of switching webdriver references to new windows and frames, highlighting the method to switch to a new window using window name and the necessity to switch to frames and alerts for performing operations, emphasizing the importance of correct webdriver reference for finding elements on new windows.', 'duration': 104.823, 'highlights': ["The significance of switching WebDriver references to new windows and frames is explained, emphasizing the necessity to shift from the current window to the newly opened window to find elements, as WebDriver remains on the old window, with the inbuilt method 'driver.switchTo' being provided in Selenium.", 'The method to switch to a new window using the window name is detailed, highlighting the ability to specify the window name for the driver to switch to, enabling the shift to the designated window for performing operations.', "The necessity to switch to frames using the frame name on the same page is explained, emphasizing the usage of 'driver.switchTo.frame' to navigate to a specific frame for operations within a web page.", "The importance of first navigating to alerts before accepting or dismissing them is highlighted, with the usage of 'driver.switchToAlert' to handle alerts and the need to address alerts before taking further actions."]}, {'end': 3473.784, 'start': 3009.128, 'title': 'Handling windows, attributes, and file upload in selenium', 'summary': 'Discusses handling windows without names or ids, retrieving attributes and text from web elements, uploading files, entering text without using sendkeys method, and handling authentication pop-ups in selenium webdriver, offering practical solutions for navigating, extracting, and interacting with web elements.', 'duration': 464.656, 'highlights': ['Handling windows without names or IDs', 'Retrieving attributes and text from web elements', 'Uploading files using Selenium WebDriver', 'Entering text without using SendKeys method', 'Handling authentication pop-ups in Selenium WebDriver']}], 'duration': 569.759, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM2904025.jpg', 'highlights': ["The significance of switching WebDriver references to new windows and frames is explained, emphasizing the necessity to shift from the current window to the newly opened window to find elements, as WebDriver remains on the old window, with the inbuilt method 'driver.switchTo' being provided in Selenium.", 'The method to switch to a new window using the window name is detailed, highlighting the ability to specify the window name for the driver to switch to, enabling the shift to the designated window for performing operations.', "The necessity to switch to frames using the frame name on the same page is explained, emphasizing the usage of 'driver.switchTo.frame' to navigate to a specific frame for operations within a web page.", "The importance of first navigating to alerts before accepting or dismissing them is highlighted, with the usage of 'driver.switchToAlert' to handle alerts and the need to address alerts before taking further actions.", 'Handling windows without names or IDs', 'Retrieving attributes and text from web elements', 'Uploading files using Selenium WebDriver', 'Entering text without using SendKeys method', 'Handling authentication pop-ups in Selenium WebDriver']}, {'end': 4163.307, 'segs': [{'end': 3547.257, 'src': 'embed', 'start': 3522.222, 'weight': 0, 'content': [{'end': 3531.906, 'text': "So what I'll do is I'll create a set of all the anchor tags, then I'll get the value of href for all the anchor tags.", 'start': 3522.222, 'duration': 9.684}, {'end': 3538.529, 'text': 'Once I have the value of all the hrefs for anchor tag, that means I know the URL where it is hitting.', 'start': 3532.506, 'duration': 6.023}, {'end': 3547.257, 'text': "Then using Java methods, what I'll do is I'll send a HTTP request to each of the href on the page.", 'start': 3539.448, 'duration': 7.809}], 'summary': 'Creating a set of anchor tags, extracting href values, and sending http requests using java methods.', 'duration': 25.035, 'max_score': 3522.222, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3522222.jpg'}, {'end': 3637.429, 'src': 'embed', 'start': 3614.624, 'weight': 1, 'content': [{'end': 3624.644, 'text': "But you don't need to worry because even if the frame ID or frame name is not available, you can still switch to the frame using the frame index.", 'start': 3614.624, 'duration': 10.02}, {'end': 3626.665, 'text': 'And how does the indexing start?', 'start': 3625.324, 'duration': 1.341}, {'end': 3632.647, 'text': 'If you just go through the source code of the page, the first frame tag will have index zero.', 'start': 3626.785, 'duration': 5.862}, {'end': 3635.469, 'text': 'the second frame tag will have index one.', 'start': 3632.647, 'duration': 2.822}, {'end': 3637.429, 'text': 'the third frame tag will have index two.', 'start': 3635.469, 'duration': 1.96}], 'summary': 'Frames in web pages can be accessed by index, starting from zero.', 'duration': 22.805, 'max_score': 3614.624, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3614624.jpg'}, {'end': 3714.251, 'src': 'embed', 'start': 3687.437, 'weight': 2, 'content': [{'end': 3692.04, 'text': 'So, for executing your test cases in a suite that is, a group of test cases,', 'start': 3687.437, 'duration': 4.603}, {'end': 3700.045, 'text': "you'll have to create a TestNG.xml file which contains the name of all the classes or methods which you want to execute.", 'start': 3692.04, 'duration': 8.005}, {'end': 3703.226, 'text': 'as a part of that particular execution flow.', 'start': 3700.665, 'duration': 2.561}, {'end': 3709.349, 'text': 'So a test suite is a collection of test cases defined in the testng.xml file.', 'start': 3704.067, 'duration': 5.282}, {'end': 3714.251, 'text': 'In testng, we cannot define a suite in testing source code.', 'start': 3709.809, 'duration': 4.442}], 'summary': 'Testng.xml file groups test cases for execution.', 'duration': 26.814, 'max_score': 3687.437, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3687437.jpg'}, {'end': 3841.068, 'src': 'embed', 'start': 3816.265, 'weight': 3, 'content': [{'end': 3822.771, 'text': 'So we learned just now that okay, testng.xml file can be used for execution of different test cases.', 'start': 3816.265, 'duration': 6.506}, {'end': 3825.633, 'text': "So first of all, let's talk about parameterization.", 'start': 3823.451, 'duration': 2.182}, {'end': 3832.78, 'text': 'Testng allows to define parameters in testng.xml file and then reference those parameters in test cases.', 'start': 3826.094, 'duration': 6.686}, {'end': 3841.068, 'text': 'So for instance, I want to execute my test case on a certain environment and the username and the password for each of the environment is different.', 'start': 3833.564, 'duration': 7.504}], 'summary': 'Testng.xml enables parameterization for executing different test cases.', 'duration': 24.803, 'max_score': 3816.265, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3816265.jpg'}, {'end': 4036.817, 'src': 'embed', 'start': 4010.115, 'weight': 4, 'content': [{'end': 4021.323, 'text': 'So just now we saw that TestNG supports parameters, that is, I can pass a value from a test ng file to my test method and I can easily work with it.', 'start': 4010.115, 'duration': 11.208}, {'end': 4027.148, 'text': "What is the requirement for a data provider? So first of all, let's clear with the definition of data provider.", 'start': 4021.563, 'duration': 5.585}, {'end': 4036.817, 'text': 'Data providers are used to pass complex parameters or parameters that need to be created from Java, that is, complex objects,', 'start': 4027.609, 'duration': 9.208}], 'summary': 'Testng supports parameters for passing values to test methods.', 'duration': 26.702, 'max_score': 4010.115, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4010115.jpg'}], 'start': 3473.784, 'title': 'Selenium and testng in webdriver', 'summary': 'Explains finding broken links and frame switching in selenium, as well as the significance of testng.xml file in defining test suites and executing test cases, with emphasis on parameterization and data providers in testng.', 'chapters': [{'end': 3660.36, 'start': 3473.784, 'title': 'Selenium broken links and frame switching', 'summary': 'Explains how to find broken links on a page using selenium, including the method to identify working and broken links and the technique to switch frames using frame index when frame id or frame name is not available.', 'duration': 186.576, 'highlights': ['The method to identify working and broken links involves retrieving all anchor tags, getting the value of each href, sending an HTTP request to each href using Java methods, and categorizing links with status 200 as working and others as broken links.', 'The technique to switch frames without frame ID or frame name involves using the frame index, starting the indexing from zero for the first frame tag in the page source, and incrementing the index for subsequent frame tags.']}, {'end': 4163.307, 'start': 3661.441, 'title': 'Significance of testng.xml file', 'summary': 'Explains the significance of testng.xml file in selenium webdriver, emphasizing its role in defining test suites and executing test cases, as well as parameterization and data providers in testng.', 'duration': 501.866, 'highlights': ['TestNG.xml file is used to execute test cases in a suite, containing the names of classes or methods to be executed, providing the feature of execution and allowing flexible configuration.', 'Parameterization in TestNG allows defining parameters in the TestNG.xml file and referencing those parameters in test cases, enabling the passing of parameters such as username and password for multiple test cases, with an example illustrating how to use parameters in test cases.', 'Data providers in TestNG are used to pass complex parameters or objects to test methods, with the ability to reuse a single data provider method in multiple functions and classes by declaring it in a separate class.']}], 'duration': 689.523, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM3473784.jpg', 'highlights': ['The method to identify working and broken links involves retrieving all anchor tags, getting the value of each href, sending an HTTP request to each href using Java methods, and categorizing links with status 200 as working and others as broken links.', 'The technique to switch frames without frame ID or frame name involves using the frame index, starting the indexing from zero for the first frame tag in the page source, and incrementing the index for subsequent frame tags.', 'TestNG.xml file is used to execute test cases in a suite, containing the names of classes or methods to be executed, providing the feature of execution and allowing flexible configuration.', 'Parameterization in TestNG allows defining parameters in the TestNG.xml file and referencing those parameters in test cases, enabling the passing of parameters such as username and password for multiple test cases, with an example illustrating how to use parameters in test cases.', 'Data providers in TestNG are used to pass complex parameters or objects to test methods, with the ability to reuse a single data provider method in multiple functions and classes by declaring it in a separate class.']}, {'end': 4763.775, 'segs': [{'end': 4213.609, 'src': 'embed', 'start': 4188.687, 'weight': 2, 'content': [{'end': 4196.897, 'text': 'So at the rate test annotation is going to accept a parameter called as enabled and this enabled can have two values.', 'start': 4188.687, 'duration': 8.21}, {'end': 4203.122, 'text': 'The first one is enabled is equal to false, that means the particular test case will not be executed.', 'start': 4196.957, 'duration': 6.165}, {'end': 4209.566, 'text': 'it will be skipped and at the rate test enabled is equal to true, that means the test will be executed.', 'start': 4203.122, 'duration': 6.444}, {'end': 4213.609, 'text': 'so this parameter does not need to be specified explicitly.', 'start': 4209.566, 'duration': 4.043}], 'summary': "Annotation 'test' accepts 'enabled' parameter with values 'false' for skip and 'true' for execution.", 'duration': 24.922, 'max_score': 4188.687, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4188687.jpg'}, {'end': 4327.601, 'src': 'embed', 'start': 4299.769, 'weight': 0, 'content': [{'end': 4303.952, 'text': 'But with soft assertion you can still, even if your assertion fails.', 'start': 4299.769, 'duration': 4.183}, {'end': 4308.775, 'text': 'you can still go on to the next step and check if the next assertion passes or fails.', 'start': 4303.952, 'duration': 4.823}, {'end': 4314.899, 'text': 'If hard assertion is in place, then your test case ultimately fails because the hard assertion has failed.', 'start': 4309.235, 'duration': 5.664}, {'end': 4327.601, 'text': 'But if you have soft assertions and all the soft assertions fail and your last hard assertion, it passes, then the test case will be declared as pass.', 'start': 4316.259, 'duration': 11.342}], 'summary': 'Soft assertions allow continuing after failure, improving test case pass rates.', 'duration': 27.832, 'max_score': 4299.769, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4299769.jpg'}, {'end': 4432.826, 'src': 'embed', 'start': 4407.578, 'weight': 1, 'content': [{'end': 4415.525, 'text': 'what it will do is it will get combined results from assertion a, b, c and d, and if any of the soft assertions has failed,', 'start': 4407.578, 'duration': 7.947}, {'end': 4418.248, 'text': 'then call to assert all method will throw an exception.', 'start': 4415.525, 'duration': 2.723}, {'end': 4421.437, 'text': 'So once the exception is thrown, your test case fails.', 'start': 4418.735, 'duration': 2.702}, {'end': 4429.003, 'text': 'Though there are two assertions that have passed, but still, because of the two assertions, your test case will be failing.', 'start': 4422.638, 'duration': 6.365}, {'end': 4432.826, 'text': 'So this is how you can use soft assertions in Selenium.', 'start': 4429.444, 'duration': 3.382}], 'summary': 'Soft assertions in selenium combine results from a, b, c, and d. fails test if any soft assertion fails.', 'duration': 25.248, 'max_score': 4407.578, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4407578.jpg'}, {'end': 4540.619, 'src': 'embed', 'start': 4512.404, 'weight': 4, 'content': [{'end': 4517.747, 'text': 'So it will execute drive method first, then the change care method, and then the accelerate method.', 'start': 4512.404, 'duration': 5.343}, {'end': 4526.732, 'text': 'So it basically checks if any kind of dependent test case is yet to be executed, the dependent test case will get executed first.', 'start': 4518.187, 'duration': 8.545}, {'end': 4534.816, 'text': 'So dependency is a feature in test NG that allows a test method to depend on a single or a group of test methods.', 'start': 4527.432, 'duration': 7.384}, {'end': 4540.619, 'text': 'Not only single test method you can also state multiple test methods to depend on.', 'start': 4535.296, 'duration': 5.323}], 'summary': 'Testng allows test methods to depend on single or multiple test methods, ensuring dependent test cases are executed first.', 'duration': 28.215, 'max_score': 4512.404, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4512404.jpg'}, {'end': 4585.729, 'src': 'embed', 'start': 4559.437, 'weight': 6, 'content': [{'end': 4566.3, 'text': "So how is the dependency stated? It's stated as a attribute or as a parameter with at the rate test annotation.", 'start': 4559.437, 'duration': 6.863}, {'end': 4572.663, 'text': 'So at the rate test depends on methods is equal to, for instance, init environment test.', 'start': 4566.82, 'duration': 5.843}, {'end': 4578.686, 'text': 'I can not only provide one test method over here, but I can provide multiple test methods over here.', 'start': 4572.983, 'duration': 5.703}, {'end': 4585.729, 'text': 'So please make a note that this init environment test is the name of the test method on which it is depending.', 'start': 4578.846, 'duration': 6.883}], 'summary': 'Dependency is stated using at the rate test annotation, with at least one method, e.g. init environment test.', 'duration': 26.292, 'max_score': 4559.437, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4559437.jpg'}, {'end': 4634.847, 'src': 'embed', 'start': 4603.582, 'weight': 5, 'content': [{'end': 4606.364, 'text': 'So drive, change gear, and then accelerate.', 'start': 4603.582, 'duration': 2.782}, {'end': 4610.449, 'text': 'Explain what is group test in TestNG.', 'start': 4608.027, 'duration': 2.422}, {'end': 4617.576, 'text': 'So TestNG provides you a feature that the same test case can be a part of multiple groups.', 'start': 4611.09, 'duration': 6.486}, {'end': 4628.127, 'text': 'So if I want to execute a particular group, then all the test cases which have that particular group name will get executed in the particular suite.', 'start': 4618.197, 'duration': 9.93}, {'end': 4634.847, 'text': 'So for instance, I have multiple test cases like on max speed, drive, accelerate and drifting.', 'start': 4628.922, 'duration': 5.925}], 'summary': 'Testng allows test cases to be grouped and executed together, providing flexibility and efficiency.', 'duration': 31.265, 'max_score': 4603.582, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4603582.jpg'}], 'start': 4163.307, 'title': 'Testng features', 'summary': 'Covers testng features such as data provider, skipping methods, soft assertions, dependency between test methods, and grouping test cases, providing insights into their usage and benefits for efficient testing processes.', 'chapters': [{'end': 4429.003, 'start': 4163.307, 'title': 'Testng: data provider, skipping methods, soft assertions', 'summary': 'Covers accessing objects of data provider in multiple classes, skipping methods in testng, and understanding soft assertions in selenium, including how to mark a test case as failed using soft assertions and the purpose of using soft assertions for multiple assertion points.', 'duration': 265.696, 'highlights': ['Soft assertions are customized error handlers provided by TestNG, allowing test cases to continue till any kind of exception is thrown without throwing any exceptions even if the assertion fails.', 'Using the assert all method in soft assertions will combine results from multiple assertions and throw an exception if any of the soft assertions has failed, leading to the test case failing.', 'The at the rate test annotation in TestNG accepts a parameter called as enabled, where enabled=false means the test case will be skipped, and enabled=true means the test will be executed, with the parameter not needing to be explicitly specified.', 'Soft assertions allow test cases to execute completely instead of stopping at the first failed assertion, enabling the checking of the rest of the steps and knowing whether they are in good or bad shape.']}, {'end': 4763.775, 'start': 4429.444, 'title': 'Testng dependency and group tests', 'summary': 'Elaborates on how testng allows stating dependencies between test methods, where a test method can depend on a single or multiple methods, and how testng enables categorizing test cases into groups, enabling the execution of specific groups of test cases within a suite.', 'duration': 334.331, 'highlights': ['TestNG dependency feature allows a test method to depend on a single or a group of test methods.', 'TestNG also supports categorizing test cases into multiple groups, and executing specific groups of test cases within a suite.', 'Dependency can be stated using the @Test annotation followed by the dependsOnMethods attribute, which specifies the method or methods upon which the current test method depends.', 'Groups in TestNG enable the execution of specific sets of test cases within a suite based on the group categorization of the test methods.']}], 'duration': 600.468, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4163307.jpg', 'highlights': ['Soft assertions allow test cases to continue till any kind of exception is thrown without throwing any exceptions even if the assertion fails.', 'Using the assert all method in soft assertions will combine results from multiple assertions and throw an exception if any of the soft assertions has failed, leading to the test case failing.', 'The at the rate test annotation in TestNG accepts a parameter called as enabled, where enabled=false means the test case will be skipped, and enabled=true means the test will be executed, with the parameter not needing to be explicitly specified.', 'Soft assertions allow test cases to execute completely instead of stopping at the first failed assertion, enabling the checking of the rest of the steps and knowing whether they are in good or bad shape.', 'TestNG dependency feature allows a test method to depend on a single or a group of test methods.', 'TestNG also supports categorizing test cases into multiple groups, and executing specific groups of test cases within a suite.', 'Dependency can be stated using the @Test annotation followed by the dependsOnMethods attribute, which specifies the method or methods upon which the current test method depends.', 'Groups in TestNG enable the execution of specific sets of test cases within a suite based on the group categorization of the test methods.']}, {'end': 5528.245, 'segs': [{'end': 4918.984, 'src': 'embed', 'start': 4889.448, 'weight': 0, 'content': [{'end': 4892.47, 'text': 'that is, what kind of test are to be performed on your application?', 'start': 4889.448, 'duration': 3.022}, {'end': 4894.59, 'text': 'what is the data that is to be provided?', 'start': 4892.47, 'duration': 2.12}, {'end': 4903.334, 'text': "If your data set is changing with every release, then it's very economic way to use an Excel file so that it can be very easily changed.", 'start': 4894.71, 'duration': 8.624}, {'end': 4907.376, 'text': 'So let us talk about different components of framework.', 'start': 4904.634, 'duration': 2.742}, {'end': 4914.18, 'text': 'So this is a generic structure of all the frameworks that is may be data driven, may be keyword driven.', 'start': 4907.556, 'duration': 6.624}, {'end': 4918.984, 'text': 'All these components, they come together to serve the purpose of a framework.', 'start': 4914.461, 'duration': 4.523}], 'summary': 'Discussion on types of tests, data management, and framework components for application testing.', 'duration': 29.536, 'max_score': 4889.448, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4889448.jpg'}, {'end': 5001.563, 'src': 'embed', 'start': 4976.275, 'weight': 1, 'content': [{'end': 4981.721, 'text': 'So Selenium is the most popular testing tool, automation tool used in industry worldwide today.', 'start': 4976.275, 'duration': 5.446}, {'end': 4983.644, 'text': 'Then you have a framework logical layer.', 'start': 4982.002, 'duration': 1.642}, {'end': 4987.668, 'text': "So framework logical layer, it's kind of abstraction.", 'start': 4983.724, 'duration': 3.944}, {'end': 4995.918, 'text': "For the outer world, it's not gonna show the implementation details of what is being coded to any kind of non-technical testers.", 'start': 4987.989, 'duration': 7.929}, {'end': 4999.581, 'text': 'what it is going to show is okay, you want to execute this.', 'start': 4996.378, 'duration': 3.203}, {'end': 5001.563, 'text': 'this is how you should do it.', 'start': 4999.581, 'duration': 1.982}], 'summary': 'Selenium is the most popular automation tool in industry, with a framework logical layer providing abstraction and ease of execution.', 'duration': 25.288, 'max_score': 4976.275, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4976275.jpg'}, {'end': 5206.98, 'src': 'embed', 'start': 5185.012, 'weight': 2, 'content': [{'end': 5194.005, 'text': 'So reporting is very important because that gives non-technical users or the stakeholders an insight of what exactly is happening with the application.', 'start': 5185.012, 'duration': 8.993}, {'end': 5195.207, 'text': 'Are we on the right path??', 'start': 5194.125, 'duration': 1.082}, {'end': 5196.609, 'text': 'Are we not on the right path??', 'start': 5195.367, 'duration': 1.242}, {'end': 5200.673, 'text': 'so everything is provided by the reports.', 'start': 5197.109, 'duration': 3.564}, {'end': 5206.98, 'text': 'so reports, they need to be descriptive, they need to be pictorial or, you can say, graphical,', 'start': 5200.673, 'duration': 6.307}], 'summary': 'Reporting provides non-technical users with insights using descriptive and graphical data.', 'duration': 21.968, 'max_score': 5185.012, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM5185012.jpg'}, {'end': 5311.895, 'src': 'embed', 'start': 5283.745, 'weight': 3, 'content': [{'end': 5288.551, 'text': "but that doesn't make point, first of all, and the second part is it's a tedious, repetitive task.", 'start': 5283.745, 'duration': 4.806}, {'end': 5296.72, 'text': 'so instead of keeping this for the manual intervention, if they are automated, each time a report is generated it is automatically populated,', 'start': 5288.551, 'duration': 8.169}, {'end': 5303.146, 'text': 'which can be distributed across the test teams, development teams and stakeholders as well to the upper management as well.', 'start': 5297.2, 'duration': 5.946}, {'end': 5305.429, 'text': 'The next type is error logs.', 'start': 5303.827, 'duration': 1.602}, {'end': 5311.895, 'text': 'So any kind of errors arising in the application, they need to have a particular description.', 'start': 5305.709, 'duration': 6.186}], 'summary': 'Automating report generation and distribution can streamline processes and improve error log management.', 'duration': 28.15, 'max_score': 5283.745, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM5283745.jpg'}, {'end': 5384.773, 'src': 'embed', 'start': 5355.768, 'weight': 4, 'content': [{'end': 5359.109, 'text': 'This insight can be generated from the defect reports.', 'start': 5355.768, 'duration': 3.341}, {'end': 5362.85, 'text': 'And the last one is exception email notification.', 'start': 5359.589, 'duration': 3.261}, {'end': 5364.898, 'text': 'so exception, even notification.', 'start': 5363.297, 'duration': 1.601}, {'end': 5373.625, 'text': 'it is a part of your framework, because most of the times what you will like to do is while you are still working with your machine.', 'start': 5364.898, 'duration': 8.727}, {'end': 5378.448, 'text': 'you would like to trigger the execution of automated test cases on a remote machine.', 'start': 5373.625, 'duration': 4.823}, {'end': 5384.773, 'text': 'so, for instance, it takes four hours for your automated test scripts to execute your suite to get executed.', 'start': 5378.448, 'duration': 6.325}], 'summary': 'Defect reports generate insights, including exception email notifications, facilitating remote execution of automated test cases, potentially reducing automated test script execution time to four hours.', 'duration': 29.005, 'max_score': 5355.768, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM5355768.jpg'}], 'start': 4764.515, 'title': 'Frameworks and reporting in automation', 'summary': 'Discusses different types of frameworks (data-driven, keyword-driven, hybrid) and their application, emphasizing the popularity of excel files as data sources. it also highlights the importance of reporting in automation for providing insights and automating report generation.', 'chapters': [{'end': 5169.019, 'start': 4764.515, 'title': 'Types of frameworks and data sources', 'summary': 'Discusses the different types of frameworks (data-driven, keyword-driven, hybrid) and their application, as well as the various files (excel, xml, csv, text) that can be used as data sources, emphasizing the popularity of excel files and their advantages in managing changing data sets, and delves into the components of a framework, including the test management tool, automation tool, and framework logical layers, highlighting the significance of selenium as the most popular automation tool and the role of the driver script, automation script, object repository, and database layer in the framework setup.', 'duration': 404.504, 'highlights': ['The chapter discusses the different types of frameworks (data-driven, keyword-driven, hybrid) and their application, as well as the various files (Excel, XML, CSV, text) that can be used as data sources, emphasizing the popularity of Excel files and their advantages in managing changing data sets.', 'The chapter delves into the components of a framework, including the test management tool, automation tool, and framework logical layers, highlighting the significance of Selenium as the most popular automation tool and the role of the driver script, automation script, object repository, and database layer in the framework setup.']}, {'end': 5528.245, 'start': 5169.539, 'title': 'Importance of reporting in automation', 'summary': 'Emphasizes the importance of reporting in automation, highlighting the role of reports in providing insights to non-technical users, stakeholders, and technical teams, automating the generation of reports to save time and effort, and the types of reports including test reports, error logs, defect reports, and exception email notifications.', 'duration': 358.706, 'highlights': ['The importance of reporting in providing insights to non-technical users and stakeholders.', 'Automation of report generation to save time and effort.', 'Types of reports including test reports, error logs, defect reports, and exception email notifications.']}], 'duration': 763.73, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/6HS8-u96JJM/pics/6HS8-u96JJM4764515.jpg', 'highlights': ['The chapter discusses different types of frameworks and their application, emphasizing the popularity of Excel files as data sources.', 'The chapter emphasizes the significance of Selenium as the most popular automation tool and the role of the driver script, automation script, object repository, and database layer in the framework setup.', 'The importance of reporting in providing insights to non-technical users and stakeholders.', 'Automation of report generation to save time and effort.', 'Types of reports include test reports, error logs, defect reports, and exception email notifications.']}], 'highlights': ['Selenium WebDriver provides powerful synchronization techniques using implicit and explicit waits to synchronize script execution with the application under test.', 'The JavaScript executor in Selenium WebDriver extends its capabilities to perform operations beyond its built-in methods, allowing the execution of JavaScript in the context of the currently selected frame or window.', "The method to maximize the browser window using Selenium's inbuilt method 'driver.manage().window().maximize', which adjusts the window to the screen resolution, such as 1980x1240, and that it performs the basic functionality of maximizing the browser window to fit the screen.", 'The method to switch to a new window using the window name is detailed, highlighting the ability to specify the window name for the driver to switch to, enabling the shift to the designated window for performing operations.', 'The method to identify working and broken links involves retrieving all anchor tags, getting the value of each href, sending an HTTP request to each href using Java methods, and categorizing links with status 200 as working and others as broken links.', 'TestNG.xml file is used to execute test cases in a suite, containing the names of classes or methods to be executed, providing the feature of execution and allowing flexible configuration.', 'Soft assertions allow test cases to continue till any kind of exception is thrown without throwing any exceptions even if the assertion fails.', 'The chapter discusses different types of frameworks and their application, emphasizing the popularity of Excel files as data sources.', 'The importance of reporting in providing insights to non-technical users and stakeholders.', 'Automation of report generation to save time and effort.']}