fbpx
Wikipedia

Selenium (software)

Selenium is an open source umbrella project for a range of tools and libraries aimed at supporting browser automation.[3] It provides a playback tool for authoring functional tests across most modern web browsers, without the need to learn a test scripting language (Selenium IDE).[4] It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including JavaScript (Node.js), C#, Groovy, Java, Perl, PHP, Python, Ruby and Scala. Selenium runs on Windows, Linux, and macOS. It is open-source software released under the Apache License 2.0.

Selenium
Initial release2004; 20 years ago (2004)
Stable release
4.16.0[1]  / 6 December 2023; 4 months ago (6 December 2023)
Repository
  • github.com/SeleniumHQ/
Written inSelenium Server: Java; Selenium WebDriver (works without Selenium Server), official support: JavaScript (Node.js), Python, Ruby, Java or C#[2]
Operating systemCross-platform
TypeSoftware testing framework for web applications
LicenseApache License 2.0
Websiteselenium.dev 

Selenium is an open-source automation framework for web applications, enabling testers and developers to automate browser interactions and perform functional testing. With versatile tools like WebDriver, Selenium supports various programming languages and facilitates cross-browser testing, making it a go-to choice for efficient and scalable web automation.

History edit

Selenium was originally developed by Jason Huggins in 2004 as an internal tool at ThoughtWorks.[5] Huggins was later joined by other programmers and testers at ThoughtWorks, before Paul Hammant joined the team and steered the development of the second mode of operation that would later become "Selenium Remote Control" (RC). The tool was open sourced that year.

In 2005 Dan Fabulich and Nelson Sproul (with help from Pat Lightbody) made an offer to accept a series of patches that would transform Selenium-RC into what it became best known for. In the same meeting, the steering of Selenium as a project would continue as a committee, with Huggins and Hammant being the ThoughtWorks representatives.[6]

In 2007, Huggins joined Google. Together with others like Jennifer Bevan, he continued with the development and stabilization of Selenium RC. At the same time, Simon Stewart at ThoughtWorks developed a superior browser automation tool called WebDriver. In 2009, after a meeting between the developers at the Google Test Automation Conference, it was decided to merge the two projects, and call the new project Selenium WebDriver, or Selenium 2.0.[7]

In 2008, Philippe Hanrigou (then at ThoughtWorks) made "Selenium Grid", which provides a hub allowing the running of multiple Selenium tests concurrently on any number of local or remote systems, thus minimizing test execution time. Grid offered, as open source, a similar capability to the internal/private Google cloud for Selenium RC. Pat Lightbody had already made a private cloud for "HostedQA" which he went on to sell to Gomez, Inc.

The name Selenium comes from a joke made by Huggins in an email, mocking a competitor named Mercury, saying that you can cure mercury poisoning by taking selenium supplements. The others that received the email took the name and ran with it.[8]

Components edit

Selenium is composed of several components with each taking on a specific role in aiding the development of web application test automation.[9]

Selenium IDE edit

Selenium IDE is a complete integrated development environment (IDE) for Selenium tests. It is implemented as a Firefox Add-On and as a Chrome Extension. It allows for recording, editing and debugging of functional tests. It was previously known as Selenium Recorder. Selenium-IDE was originally created by Shinya Kasatani and donated to the Selenium project in 2006. Selenium IDE began being actively maintained in 2018.[10][11][12][13]

Scripts may be automatically recorded and edited manually providing autocompletion support and the ability to move commands around quickly. Scripts are recorded in Selenese, a special test scripting language for Selenium. Selenese provides commands for performing actions in a browser (click a link, select an option) and for retrieving data from the resulting pages. Selenese serves as the language for composing Selenium Commands, which are utilized in the testing of web applications. These commands, tailored to the HTML tags of UI elements, facilitate the verification of their existence. They guide Selenium in comprehending the specific actions or operations to execute.

Selenium client API edit

As an alternative to writing tests in Selenese, tests can also be written in various programming languages. These tests then communicate with Selenium by calling methods in the Selenium Client API. Selenium currently provides client APIs for Java, C#, Ruby, JavaScript, R and Python.

Selenium Remote Control edit

Selenium Remote Control (RC) is a server, written in Java, that accepts commands for the browser via HTTP. RC makes it possible to write automated tests for a web application in any programming language, which allows for better integration of Selenium in existing unit test frameworks. To make writing tests easier, Selenium project currently provides client drivers for PHP, Python, Ruby, .NET, Perl and Java. The Java driver can also be used with JavaScript (via the Rhino engine). An instance of selenium RC server is needed to launch html test case - which means that the port should be different for each parallel run.[citation needed] However, for Java/PHP test case only one Selenium RC instance needs to be running continuously.[14]

Selenium Remote Control was a refactoring of Driven Selenium or Selenium B designed by Paul Hammant, credited with Jason as co-creator of Selenium. The original version directly launched a process for the browser in question, from the test language of Java, .NET, Python or Ruby. The wire protocol (called 'Selenese' in its day) was reimplemented in each language port. After the refactor by Dan Fabulich and Nelson Sproul (with help from Pat Lightbody) there was an intermediate daemon process between the driving test script and the browser. The benefits included the ability to drive remote browsers and the reduced need to port every line of code to an increasingly growing set of languages. Selenium Remote Control completely took over from the Driven Selenium code-line in 2006. The browser pattern for 'Driven'/'B' and 'RC' was response/request, which subsequently became known as Comet.

Selenium RC served as the flagship testing framework of the entire project of selenium for a long-standing time. And significantly[editorializing] Selenium RC is the first and foremost automated web testing tool that enabled users to adopt their preferred programming language.[15][16]

With the release of Selenium 2, Selenium RC has been officially deprecated in favor of Selenium WebDriver.

Selenium WebDriver edit

At the core of Selenium is Selenium WebDriver, an interface to write instructions that work interchangeably across browsers. It is the successor to Selenium RC. Selenium WebDriver accepts commands (sent in Selenese, or via a Client API) and sends them to a browser. This is implemented through a browser-specific browser driver, which sends commands to a browser and retrieves results. Most browser drivers actually launch and access a browser application (such as Firefox, Google Chrome, Internet Explorer, Safari, or Microsoft Edge); there is also an HtmlUnit browser driver, which simulates a browser using the headless browser HtmlUnit.

Unlike in Selenium 1, where the Selenium server was necessary to run tests, Selenium WebDriver does not need a special server to execute tests. Instead, the WebDriver directly starts a browser instance and controls it. However, Selenium Grid can be used with WebDriver to execute tests on remote systems (see below). Where possible, WebDriver uses native operating system level functionality rather than browser-based JavaScript commands to drive the browser. This bypasses problems with subtle differences between native and JavaScript commands, including security restrictions.[17]

As of early 2012, Simon Stewart (inventor of WebDriver), who was then with Google, and David Burns of Mozilla were negotiating with the W3C to make WebDriver an Internet standard. In July 2012, the working draft was released and the recommendation followed in June 2018.[18] Selenium WebDriver (Selenium 2.0) is fully implemented and supported in JavaScript (Node.js), Python, Ruby, Java, Kotlin, and C#. As of 2021, Selenium 4 is a release candidate.[19]

Examples edit

Below are some of the simplest instructions one can make:

Python edit
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.expected_conditions import presence_of_element_located #This example requires Selenium WebDriver 3.13 or newer with webdriver.Firefox() as driver: wait = WebDriverWait(driver, 10) driver.get("https://google.com/ncr") driver.find_element(By.NAME, "q").send_keys("cheese" + Keys.RETURN) first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, "h3"))) print(first_result.get_attribute("textContent")) 
Java edit
import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated; import java.time.Duration; public class HelloSelenium {  public static void main(String[] args) {  WebDriver driver = new FirefoxDriver();  WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));  try {  driver.get("https://google.com/ncr");  driver.findElement(By.name("q")).sendKeys("cheese" + Keys.ENTER);  WebElement firstResult = wait.until(presenceOfElementLocated(By.cssSelector("h3")));  System.out.println(firstResult.getAttribute("textContent"));  } finally {  driver.quit();  }  } } 
C# edit
using System; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Support.UI; class HelloSelenium {  static void Main()  {  using(IWebDriver driver = new FirefoxDriver())  {  WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));  driver.Navigate().GoToUrl("https://www.google.com/ncr");  driver.FindElement(By.Name("q")).SendKeys("cheese" + Keys.Enter);  wait.Until(webDriver => webDriver.FindElement(By.CssSelector("h3")).Displayed);  IWebElement firstResult = driver.FindElement(By.CssSelector("h3"));  Console.WriteLine(firstResult.GetAttribute("textContent"));  }  } } 

Selenium Grid edit

Selenium Grid is a server that allows tests to use web browser instances running on remote machines. With Selenium Grid, one server acts as the central hub. Tests contact the hub to obtain access to browser instances. The hub has a list of servers that provide access to browser instances (WebDriver nodes), and lets tests use these instances. Selenium Grid allows running tests in parallel on multiple machines and to manage different browser versions and browser configurations centrally (instead of in each individual test).

The ability to run tests on remote browser instances is useful to spread the load of testing across several machines and to run tests in browsers running on different platforms or operating systems. The latter is particularly useful in cases where not all browsers to be used for testing can run on the same platform.[20]

See also edit

References edit

  1. ^ "Release Selenium 4.16". December 6, 2023.
  2. ^ "Downloads". Selenium.
  3. ^ "The Selenium Browser Automation Project". selenium.dev. March 16, 2020. Retrieved November 1, 2021.
  4. ^ Abdullaiev, O.A.; Ibrahimova, L. V. (2020). "Review of testing software: Selenium software" (PDF). Вінницький національний технічний університет. УДК 004.457.
  5. ^ "About Selenium".
  6. ^ "Selenium History". www.selenium.dev. Retrieved August 11, 2021.
  7. ^ "The Selenium Project". thenewcircle.com. NewCircle. Retrieved June 29, 2014.
  8. ^ Krill, Paul (April 6, 2011). . InfoWorld. Archived from the original on May 5, 2011. Retrieved May 9, 2012. Selenium was so named because Huggins, dissatisfied with testing tools on the market, was seeking a name that would position the product as an alternative to Mercury Interactive QuickTest Professional commercial testing software. The name, Selenium, was selected because selenium mineral supplements serve as a cure for mercury poisoning, Huggins explained.
  9. ^ Moizuddin, Khaja (June 7, 2018). "Components of the Selenium Automation Tool". dzone.com. DevOps Zone. Retrieved July 10, 2019.
  10. ^ "It's back! Selenium IDE Reborn with Dave Haeffner". testingpodcast.com. December 24, 2018.
  11. ^ Dave, Tour de (August 6, 2018). "Selenium IDE Is Dead, Long Live Selenium IDE!". Selenium IDE Official Blog. Retrieved November 27, 2019 – via seleniumhq.wordpress.com.
  12. ^ Colantonio, Joe (November 27, 2018). "Stunning return of Selenium IDE". testguild.com. Retrieved November 27, 2019.
  13. ^ Sargent, Al (March 19, 2019). "List of new Selenium IDE features". applitools.com. Retrieved October 18, 2021.
  14. ^ "Selenium Remote-Control". seleniumhq.org. Retrieved November 13, 2019.
  15. ^ "Selenium 1 (Selenium RC) :: Documentation for Selenium". www.selenium.dev. Retrieved December 20, 2020.
  16. ^ sparkdatabox_author (October 16, 2019). "Selenium | Spark Databox". Retrieved December 20, 2020. {{cite web}}: |last= has generic name (help)
  17. ^ "The Architecture of Open Source Applications: Selenium WebDriver". aosabook.org. Retrieved February 7, 2016.
  18. ^ Smith, Michael (June 5, 2018). "WebDriver motors on to W3C Recommendation". W3C Blog. Retrieved September 10, 2018.
  19. ^ "Downloads". selenium.dev. Retrieved September 29, 2021.
  20. ^ "Selenium Grid". The Selenium Browser Automation Project. Retrieved September 9, 2020.

External links edit

  • Official website  

selenium, software, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, selenium, software, news, newspapers, books, sch. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Selenium software news newspapers books scholar JSTOR January 2017 Learn how and when to remove this message Selenium is an open source umbrella project for a range of tools and libraries aimed at supporting browser automation 3 It provides a playback tool for authoring functional tests across most modern web browsers without the need to learn a test scripting language Selenium IDE 4 It also provides a test domain specific language Selenese to write tests in a number of popular programming languages including JavaScript Node js C Groovy Java Perl PHP Python Ruby and Scala Selenium runs on Windows Linux and macOS It is open source software released under the Apache License 2 0 SeleniumInitial release2004 20 years ago 2004 Stable release4 16 0 1 6 December 2023 4 months ago 6 December 2023 Repositorygithub wbr com wbr SeleniumHQ wbr Written inSelenium Server Java Selenium WebDriver works without Selenium Server official support JavaScript Node js Python Ruby Java or C 2 Operating systemCross platformTypeSoftware testing framework for web applicationsLicenseApache License 2 0Websiteselenium wbr dev Selenium is an open source automation framework for web applications enabling testers and developers to automate browser interactions and perform functional testing With versatile tools like WebDriver Selenium supports various programming languages and facilitates cross browser testing making it a go to choice for efficient and scalable web automation Contents 1 History 2 Components 2 1 Selenium IDE 2 2 Selenium client API 2 3 Selenium Remote Control 2 4 Selenium WebDriver 2 4 1 Examples 2 4 1 1 Python 2 4 1 2 Java 2 4 1 3 C 2 5 Selenium Grid 3 See also 4 References 5 External linksHistory editSelenium was originally developed by Jason Huggins in 2004 as an internal tool at ThoughtWorks 5 Huggins was later joined by other programmers and testers at ThoughtWorks before Paul Hammant joined the team and steered the development of the second mode of operation that would later become Selenium Remote Control RC The tool was open sourced that year In 2005 Dan Fabulich and Nelson Sproul with help from Pat Lightbody made an offer to accept a series of patches that would transform Selenium RC into what it became best known for In the same meeting the steering of Selenium as a project would continue as a committee with Huggins and Hammant being the ThoughtWorks representatives 6 In 2007 Huggins joined Google Together with others like Jennifer Bevan he continued with the development and stabilization of Selenium RC At the same time Simon Stewart at ThoughtWorks developed a superior browser automation tool called WebDriver In 2009 after a meeting between the developers at the Google Test Automation Conference it was decided to merge the two projects and call the new project Selenium WebDriver or Selenium 2 0 7 In 2008 Philippe Hanrigou then at ThoughtWorks made Selenium Grid which provides a hub allowing the running of multiple Selenium tests concurrently on any number of local or remote systems thus minimizing test execution time Grid offered as open source a similar capability to the internal private Google cloud for Selenium RC Pat Lightbody had already made a private cloud for HostedQA which he went on to sell to Gomez Inc The name Selenium comes from a joke made by Huggins in an email mocking a competitor named Mercury saying that you can cure mercury poisoning by taking selenium supplements The others that received the email took the name and ran with it 8 Components editSelenium is composed of several components with each taking on a specific role in aiding the development of web application test automation 9 Selenium IDE edit Selenium IDE is a complete integrated development environment IDE for Selenium tests It is implemented as a Firefox Add On and as a Chrome Extension It allows for recording editing and debugging of functional tests It was previously known as Selenium Recorder Selenium IDE was originally created by Shinya Kasatani and donated to the Selenium project in 2006 Selenium IDE began being actively maintained in 2018 10 11 12 13 Scripts may be automatically recorded and edited manually providing autocompletion support and the ability to move commands around quickly Scripts are recorded in Selenese a special test scripting language for Selenium Selenese provides commands for performing actions in a browser click a link select an option and for retrieving data from the resulting pages Selenese serves as the language for composing Selenium Commands which are utilized in the testing of web applications These commands tailored to the HTML tags of UI elements facilitate the verification of their existence They guide Selenium in comprehending the specific actions or operations to execute Selenium client API edit As an alternative to writing tests in Selenese tests can also be written in various programming languages These tests then communicate with Selenium by calling methods in the Selenium Client API Selenium currently provides client APIs for Java C Ruby JavaScript R and Python Selenium Remote Control edit Selenium Remote Control RC is a server written in Java that accepts commands for the browser via HTTP RC makes it possible to write automated tests for a web application in any programming language which allows for better integration of Selenium in existing unit test frameworks To make writing tests easier Selenium project currently provides client drivers for PHP Python Ruby NET Perl and Java The Java driver can also be used with JavaScript via the Rhino engine An instance of selenium RC server is needed to launch html test case which means that the port should be different for each parallel run citation needed However for Java PHP test case only one Selenium RC instance needs to be running continuously 14 Selenium Remote Control was a refactoring of Driven Selenium or Selenium B designed by Paul Hammant credited with Jason as co creator of Selenium The original version directly launched a process for the browser in question from the test language of Java NET Python or Ruby The wire protocol called Selenese in its day was reimplemented in each language port After the refactor by Dan Fabulich and Nelson Sproul with help from Pat Lightbody there was an intermediate daemon process between the driving test script and the browser The benefits included the ability to drive remote browsers and the reduced need to port every line of code to an increasingly growing set of languages Selenium Remote Control completely took over from the Driven Selenium code line in 2006 The browser pattern for Driven B and RC was response request which subsequently became known as Comet Selenium RC served as the flagship testing framework of the entire project of selenium for a long standing time And significantly editorializing Selenium RC is the first and foremost automated web testing tool that enabled users to adopt their preferred programming language 15 16 With the release of Selenium 2 Selenium RC has been officially deprecated in favor of Selenium WebDriver Selenium WebDriver edit At the core of Selenium is Selenium WebDriver an interface to write instructions that work interchangeably across browsers It is the successor to Selenium RC Selenium WebDriver accepts commands sent in Selenese or via a Client API and sends them to a browser This is implemented through a browser specific browser driver which sends commands to a browser and retrieves results Most browser drivers actually launch and access a browser application such as Firefox Google Chrome Internet Explorer Safari or Microsoft Edge there is also an HtmlUnit browser driver which simulates a browser using the headless browser HtmlUnit Unlike in Selenium 1 where the Selenium server was necessary to run tests Selenium WebDriver does not need a special server to execute tests Instead the WebDriver directly starts a browser instance and controls it However Selenium Grid can be used with WebDriver to execute tests on remote systems see below Where possible WebDriver uses native operating system level functionality rather than browser based JavaScript commands to drive the browser This bypasses problems with subtle differences between native and JavaScript commands including security restrictions 17 As of early 2012 Simon Stewart inventor of WebDriver who was then with Google and David Burns of Mozilla were negotiating with the W3C to make WebDriver an Internet standard In July 2012 the working draft was released and the recommendation followed in June 2018 18 Selenium WebDriver Selenium 2 0 is fully implemented and supported in JavaScript Node js Python Ruby Java Kotlin and C As of 2021 Selenium 4 is a release candidate 19 Examples edit Below are some of the simplest instructions one can make Python edit from selenium import webdriver from selenium webdriver common by import By from selenium webdriver common keys import Keys from selenium webdriver support ui import WebDriverWait from selenium webdriver support expected conditions import presence of element located This example requires Selenium WebDriver 3 13 or newer with webdriver Firefox as driver wait WebDriverWait driver 10 driver get https google com ncr driver find element By NAME q send keys cheese Keys RETURN first result wait until presence of element located By CSS SELECTOR h3 print first result get attribute textContent Java edit import org openqa selenium By import org openqa selenium Keys import org openqa selenium WebDriver import org openqa selenium WebElement import org openqa selenium firefox FirefoxDriver import org openqa selenium support ui WebDriverWait import static org openqa selenium support ui ExpectedConditions presenceOfElementLocated import java time Duration public class HelloSelenium public static void main String args WebDriver driver new FirefoxDriver WebDriverWait wait new WebDriverWait driver Duration ofSeconds 10 try driver get https google com ncr driver findElement By name q sendKeys cheese Keys ENTER WebElement firstResult wait until presenceOfElementLocated By cssSelector h3 System out println firstResult getAttribute textContent finally driver quit C edit using System using OpenQA Selenium using OpenQA Selenium Firefox using OpenQA Selenium Support UI class HelloSelenium static void Main using IWebDriver driver new FirefoxDriver WebDriverWait wait new WebDriverWait driver TimeSpan FromSeconds 10 driver Navigate GoToUrl https www google com ncr driver FindElement By Name q SendKeys cheese Keys Enter wait Until webDriver gt webDriver FindElement By CssSelector h3 Displayed IWebElement firstResult driver FindElement By CssSelector h3 Console WriteLine firstResult GetAttribute textContent Selenium Grid edit Selenium Grid is a server that allows tests to use web browser instances running on remote machines With Selenium Grid one server acts as the central hub Tests contact the hub to obtain access to browser instances The hub has a list of servers that provide access to browser instances WebDriver nodes and lets tests use these instances Selenium Grid allows running tests in parallel on multiple machines and to manage different browser versions and browser configurations centrally instead of in each individual test The ability to run tests on remote browser instances is useful to spread the load of testing across several machines and to run tests in browsers running on different platforms or operating systems The latter is particularly useful in cases where not all browsers to be used for testing can run on the same platform 20 See also edit nbsp Free and open source software portal Appium mobile and desktop apps automation using WebDriver Acceptance testing Capybara software Given When Then List of web testing tools MediaWiki Selenium Regression testing Robot FrameworkReferences edit Release Selenium 4 16 December 6 2023 Downloads Selenium The Selenium Browser Automation Project selenium dev March 16 2020 Retrieved November 1 2021 Abdullaiev O A Ibrahimova L V 2020 Review of testing software Selenium software PDF Vinnickij nacionalnij tehnichnij universitet UDK 004 457 About Selenium Selenium History www selenium dev Retrieved August 11 2021 The Selenium Project thenewcircle com NewCircle Retrieved June 29 2014 Krill Paul April 6 2011 Open source Selenium web app test suite to support iPhone and Android InfoWorld Archived from the original on May 5 2011 Retrieved May 9 2012 Selenium was so named because Huggins dissatisfied with testing tools on the market was seeking a name that would position the product as an alternative to Mercury Interactive QuickTest Professional commercial testing software The name Selenium was selected because selenium mineral supplements serve as a cure for mercury poisoning Huggins explained Moizuddin Khaja June 7 2018 Components of the Selenium Automation Tool dzone com DevOps Zone Retrieved July 10 2019 It s back Selenium IDE Reborn with Dave Haeffner testingpodcast com December 24 2018 Dave Tour de August 6 2018 Selenium IDE Is Dead Long Live Selenium IDE Selenium IDE Official Blog Retrieved November 27 2019 via seleniumhq wordpress com Colantonio Joe November 27 2018 Stunning return of Selenium IDE testguild com Retrieved November 27 2019 Sargent Al March 19 2019 List of new Selenium IDE features applitools com Retrieved October 18 2021 Selenium Remote Control seleniumhq org Retrieved November 13 2019 Selenium 1 Selenium RC Documentation for Selenium www selenium dev Retrieved December 20 2020 sparkdatabox author October 16 2019 Selenium Spark Databox Retrieved December 20 2020 a href Template Cite web html title Template Cite web cite web a last has generic name help The Architecture of Open Source Applications Selenium WebDriver aosabook org Retrieved February 7 2016 Smith Michael June 5 2018 WebDriver motors on to W3C Recommendation W3C Blog Retrieved September 10 2018 Downloads selenium dev Retrieved September 29 2021 Selenium Grid The Selenium Browser Automation Project Retrieved September 9 2020 External links editOfficial website nbsp Retrieved from https en wikipedia org w index php title Selenium software amp oldid 1209978981 Selenium WebDriver, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.