1 00:00:00,460 --> 00:00:04,280 Selenium is a set of tools that automates browsers, and that's really it. 2 00:00:04,280 --> 00:00:06,010 You can wield that power however you'd like. 3 00:00:06,010 --> 00:00:09,620 The most common use case is to take that power and use it for testing. 4 00:00:09,620 --> 00:00:11,850 But it for sure isn't limited at just that. 5 00:00:11,850 --> 00:00:13,755 If you have any sort of repetitive task but 6 00:00:13,755 --> 00:00:17,480 that perform in a web app, you can have Selenium do that for you. 7 00:00:17,480 --> 00:00:20,360 Selenium has been around for over 15 years. 8 00:00:20,360 --> 00:00:22,630 It's evolved and been a lot of things over time. 9 00:00:22,630 --> 00:00:23,540 And therefore, 10 00:00:23,540 --> 00:00:27,140 we believe that it's important that you understand its history, just a bit. 11 00:00:27,140 --> 00:00:30,040 Let's take a minute to discuss the different components that make up 12 00:00:30,040 --> 00:00:31,530 Selenium. 13 00:00:31,530 --> 00:00:33,225 Selenium Remote Control. 14 00:00:33,225 --> 00:00:37,460 The very first version of Selenium require a tool called Selenium RC, 15 00:00:37,460 --> 00:00:40,105 which stands for remote control. 16 00:00:40,105 --> 00:00:42,765 The tool worked by opening up a web page that installed 17 00:00:42,765 --> 00:00:46,288 a core JavaScript library that could receive commands. 18 00:00:46,288 --> 00:00:50,310 That page would then open the web page under test and then interact and 19 00:00:50,310 --> 00:00:52,250 send information back. 20 00:00:52,250 --> 00:00:56,210 However, this was limited due to the scope of JavaScript's reach and it made 21 00:00:56,210 --> 00:01:00,260 some things impossible, like working with file upload controls or native pop ups. 22 00:01:01,600 --> 00:01:03,170 Selenium Server. 23 00:01:03,170 --> 00:01:06,480 Selenium Server is a companion piece to Selenium RC. 24 00:01:06,480 --> 00:01:09,490 It allows remote machines to connect to the server, 25 00:01:09,490 --> 00:01:15,190 which then can be used to control or drive the browser on various server hardware. 26 00:01:15,190 --> 00:01:18,538 This enables Selenium-based test code on multiple machines, 27 00:01:18,538 --> 00:01:22,754 with potentially different configurations of operating systems, browsers, 28 00:01:22,754 --> 00:01:26,670 browser versions, plugins and any number of other possible variations. 29 00:01:27,700 --> 00:01:29,570 Selenium IDE. 30 00:01:29,570 --> 00:01:32,570 Selenium IDE, or integrated development environment, 31 00:01:32,570 --> 00:01:37,680 is a plugin in Mozilla Firefox that allows you to record your actions on a page and 32 00:01:37,680 --> 00:01:39,010 then play them back. 33 00:01:39,010 --> 00:01:42,500 It produces commands that are understood by Selenium RC. 34 00:01:42,500 --> 00:01:47,800 It can be used to document defects and it can be used to record exploratory testing. 35 00:01:47,800 --> 00:01:52,400 But it is definitely not suited for the large scale automated web testing. 36 00:01:52,400 --> 00:01:56,070 Now, it's outdated now and support seems pretty limited, so tread with caution. 37 00:01:57,260 --> 00:01:59,320 Selenium WebDriver. 38 00:01:59,320 --> 00:02:01,939 Selenium WebDriver is also known as Selenium 2.0. 39 00:02:01,939 --> 00:02:07,650 It is the result of the merging of an open source project, which was named WebDriver. 40 00:02:07,650 --> 00:02:12,230 It was created by a Google engineer who was an admirer of the Selenium project, 41 00:02:12,230 --> 00:02:15,410 but needed to get around those JavaScript limitations. 42 00:02:15,410 --> 00:02:19,330 What it does is to create the ability to directly program interactions with 43 00:02:19,330 --> 00:02:23,550 the browser, instead of interacting with the browser's JavaScript sandbox. 44 00:02:23,550 --> 00:02:28,020 The merge kept the mature API inherited from Selenium RC. 45 00:02:28,020 --> 00:02:29,720 We'll explore this more here in a bit. 46 00:02:30,780 --> 00:02:32,210 Selenium Grid. 47 00:02:32,210 --> 00:02:35,620 Selenium Grid is a smart proxy server that allows for 48 00:02:35,620 --> 00:02:38,320 communicating with a cluster of machines. 49 00:02:38,320 --> 00:02:41,490 This allows for parallel execution of tests. 50 00:02:41,490 --> 00:02:44,060 It also enables tests to be run against environments 51 00:02:44,060 --> 00:02:46,840 with a variety of specific configurations. 52 00:02:46,840 --> 00:02:50,540 It has been used commercially by companies to offer test execution environments 53 00:02:50,540 --> 00:02:51,620 as a service. 54 00:02:51,620 --> 00:02:52,390 More in the teacher's notes. 55 00:02:53,660 --> 00:02:58,010 So you can think of Selenium as an umbrella project for a range of tools and 56 00:02:58,010 --> 00:03:01,490 libraries that enable and support the automation of web browsers. 57 00:03:01,490 --> 00:03:05,420 15 years is quite a lot of time so 58 00:03:05,420 --> 00:03:09,350 you might encounter some terms or solutions that are no longer relevant. 59 00:03:09,350 --> 00:03:11,550 Now that we have a brief understanding of the components, 60 00:03:11,550 --> 00:03:14,530 let's talk about the current state of Selenium right after this quick break.