กลับไปหน้าบทความ

อ่าน 7 นาที

ซีลีเนียม (ซอฟต์แวร์)

Selenium เป็น โครงการโอ เพ นซอร์สที่ครอบคลุมเครื่องมือและ ไลบรารี ต่างๆ มากมายที่มุ่งสนับสนุน การทำงานอัตโนมัติของเบราว์เซอร์ [ 3 ] โดย มีเครื่องมือสำหรับการเล่นซ้ำเพื่อสร้าง...

ซีลีเนียม (ซอฟต์แวร์)

ซีลีเนียม
ปล่อย2004 ( 2004 )
เวอร์ชันเสถียร
4.45.0 [ 1 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 16 มิถุนายน 2026 ( 16 มิถุนายน 2569 )
เขียนเป็นSelenium Server: Java ; Selenium WebDriver (ใช้งานได้โดยไม่ต้องใช้ Selenium Server) รองรับอย่างเป็นทางการ: JavaScript ( Node.js ), Python , Ruby , JavaหรือC# [ 2 ]
ระบบปฏิบัติการข้ามแพลตฟอร์ม
พิมพ์กรอบการทำงานสำหรับการทดสอบซอฟต์แวร์สำหรับเว็บแอปพลิเคชัน
ใบอนุญาตใบอนุญาต Apache 2.0
เว็บไซต์selenium .dev แก้ไขข้อมูลนี้บนวิกิดาต้า
ที่เก็บข้อมูล
  • github.com/SeleniumHQ/

Seleniumเป็น โครงการโอ เพ นซอร์สที่ครอบคลุมเครื่องมือและ ไลบรารีต่างๆ มากมายที่มุ่งสนับสนุนการทำงานอัตโนมัติของเบราว์เซอร์ [ 3 ] โดยมีเครื่องมือสำหรับการเล่นซ้ำเพื่อสร้างการทดสอบการทำงาน ใน เว็บเบราว์เซอร์สมัยใหม่ส่วนใหญ่โดยไม่จำเป็นต้องเรียนรู้ภาษาสคริปต์ การทดสอบ (Selenium IDE) [ 4 ]นอกจากนี้ยังมีภาษาเฉพาะโดเมน สำหรับการทดสอบ (Selenese) เพื่อเขียนการทดสอบในภาษาโปรแกรมยอดนิยมหลายภาษา รวมถึงJavaScript ( Node.js ), C# , Groovy , Java , Perl , PHP , Python , RubyและScala มี wrapper สำหรับ C++อยู่ในหน้า git แต่ไม่ได้มีการอัปเดตมาหลายปีแล้ว Selenium ทำงานบนWindows , LinuxและmacOSเป็นซอฟต์แวร์โอเพนซอร์สที่เผยแพร่ภายใต้Apache License 2.0

ประวัติศาสตร์

Selenium ได้รับการพัฒนาขึ้นครั้งแรกโดย Jason Huggins ในปี 2547 ในฐานะเครื่องมือภายในของThoughtWorks [ 5 ] ต่อมา Huggins ได้ร่วมงานกับโปรแกรมเมอร์และผู้ ทดสอบคนอื่นๆ ที่ ThoughtWorks ก่อนที่ Paul Hammant จะเข้าร่วมทีมและเป็นผู้นำในการพัฒนาโหมดการทำงานที่สองซึ่งต่อมาจะกลายเป็น "Selenium Remote Control" (RC) เครื่องมือนี้ได้รับการเปิดเผยเป็นโอเพนซอร์สในปีนั้น

ในปี 2548 Dan Fabulich และ Nelson Sproul (โดยได้รับความช่วยเหลือจาก Pat Lightbody) ได้เสนอให้ยอมรับแพตช์ชุดหนึ่งที่จะเปลี่ยน Selenium-RC ให้กลายเป็นสิ่งที่เป็นที่รู้จักมากที่สุด ในการประชุมเดียวกันนั้น การบริหาร Selenium ในฐานะโครงการจะดำเนินต่อไปในรูปแบบคณะกรรมการ โดยมี Huggins และ Hammant เป็นตัวแทนของ ThoughtWorks [ 6 ]

ในปี 2550 Huggins เข้าร่วมงานกับGoogleร่วมกับคนอื่นๆ เช่น Jennifer Bevan เขาได้พัฒนาและทำให้ Selenium RC มีเสถียรภาพมากขึ้น ในขณะเดียวกัน Simon Stewart ที่ ThoughtWorks ได้พัฒนาเครื่องมืออัตโนมัติสำหรับเบราว์เซอร์ที่เหนือกว่าชื่อ WebDriver ในปี 2552 หลังจากการประชุมระหว่างนักพัฒนาที่งาน Google Test Automation Conference ได้มีการตัดสินใจที่จะรวมสองโครงการเข้าด้วยกัน และเรียกโครงการใหม่นี้ว่า Selenium WebDriver หรือ Selenium 2.0 [ 7 ]

ในปี 2008 ฟิลิปป์ ฮันริกู (ขณะนั้นทำงานอยู่ที่ ThoughtWorks) ได้สร้าง "Selenium Grid" ซึ่งเป็นศูนย์กลางที่ช่วยให้สามารถรันการทดสอบ Selenium หลายรายการพร้อมกันบนระบบภายในหรือระบบระยะไกลจำนวนเท่าใดก็ได้ ทำให้ลดเวลาในการดำเนินการทดสอบลง Grid นำเสนอความสามารถที่คล้ายคลึงกับคลาวด์ภายใน/ส่วนตัวของ Google สำหรับ Selenium RC ในรูปแบบโอเพนซอร์ส แพท ไลท์บอดี้ ได้สร้างคลาวด์ส่วนตัวสำหรับ "HostedQA" มาก่อนแล้ว ซึ่งต่อมาเขาได้ขายให้กับ Gomez, Inc.

ชื่อซีลีเนียมมาจากเรื่องตลกที่ฮักกินส์เขียนในอีเมลเพื่อล้อเลียนคู่แข่งชื่อเมอร์คิวรีโดยบอกว่า พิษ ปรอทสามารถรักษาได้ด้วยการรับประทานอาหารเสริมที่มีธาตุซีลีเนียมคนอื่นๆ ที่ได้รับอีเมลก็เลยนำชื่อนี้ไปใช้[ 8 ]

ส่วนประกอบ

Selenium ประกอบด้วยส่วนประกอบหลายอย่าง โดยแต่ละส่วนประกอบมีบทบาทเฉพาะในการช่วยพัฒนาการทดสอบแอปพลิเคชันเว็บแบบอัตโนมัติ[ 9 ]

Selenium IDE

Selenium IDE เป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) ที่สมบูรณ์แบบสำหรับการทดสอบ Selenium มีการใช้งานในรูปแบบAdd-On ของ Firefoxและส่วนขยายของ Chromeช่วยให้สามารถบันทึก แก้ไข และดีบักการทดสอบการทำงานได้ ก่อนหน้านี้รู้จักกันในชื่อ Selenium Recorder Selenium-IDE ถูกสร้างขึ้นโดย Shinya Kasatani และบริจาคให้กับโครงการ Selenium ในปี 2006 Selenium IDE เริ่มได้รับการบำรุงรักษาอย่างจริงจังในปี 2018 [ 10 ] [ 11 ] [ 12 ] [ 13 ]

สคริปต์สามารถบันทึกโดยอัตโนมัติและแก้ไขด้วยตนเองได้ โดยมีระบบช่วยเติมคำอัตโนมัติและความสามารถในการย้ายคำสั่งไปมาได้อย่างรวดเร็ว สคริปต์จะถูกบันทึกในภาษา Seleneseซึ่งเป็นภาษาสคริปต์ทดสอบพิเศษสำหรับ Selenium ภาษา Selenese มีคำสั่งสำหรับดำเนินการต่างๆ ในเบราว์เซอร์ (เช่น คลิกลิงก์ เลือกตัวเลือก) และสำหรับการดึงข้อมูลจากหน้าเว็บที่แสดงผล ภาษา Selenese ทำหน้าที่เป็นภาษาสำหรับเขียนคำสั่ง Selenium ซึ่งใช้ในการทดสอบเว็บแอปพลิเคชัน คำสั่งเหล่านี้ได้รับการปรับแต่งให้เข้ากับแท็ก HTML ขององค์ประกอบ UI ช่วยให้ตรวจสอบการมีอยู่ขององค์ประกอบเหล่านั้นได้ง่ายขึ้น และช่วยนำทาง Selenium ให้เข้าใจการกระทำหรือการดำเนินการเฉพาะที่จะต้องดำเนินการ

API ไคลเอ็นต์ Selenium

นอกเหนือจากการเขียนการทดสอบด้วยภาษา Selenese แล้ว การทดสอบยังสามารถเขียนได้ด้วยภาษาโปรแกรมต่างๆ การทดสอบเหล่านี้จะสื่อสารกับ Selenium โดยการเรียกใช้เมธอดใน Selenium Client API ปัจจุบัน Selenium มี Client API สำหรับJava , C # , Ruby , JavaScript , RและPython

รีโมทคอนโทรลซีลีเนียม

Selenium Remote Control (RC) เป็นเซิร์ฟเวอร์ที่เขียนด้วยภาษา Javaซึ่งรับคำสั่งจากเบราว์เซอร์ผ่านHTTP RC ทำให้สามารถเขียนการทดสอบอัตโนมัติสำหรับเว็บแอปพลิเคชันในภาษาโปรแกรมใดก็ได้ ซึ่งช่วยให้สามารถผสานรวม Selenium เข้ากับเฟรมเวิร์กการทดสอบหน่วยที่มีอยู่ได้ดียิ่งขึ้น เพื่อให้การเขียนการทดสอบง่ายขึ้น ปัจจุบันโครงการ Selenium มีไดรเวอร์ไคลเอ็นต์สำหรับPHP , Python , Ruby , .NET , PerlและJavaไดรเวอร์ Java ยังสามารถใช้กับJavaScript ได้ (ผ่าน เอนจิน Rhino ) จำเป็นต้องมีอินสแตนซ์ของเซิร์ฟเวอร์ Selenium RC เพื่อเรียกใช้เคสทดสอบ HTML ซึ่งหมายความว่าพอร์ตควรแตกต่างกันสำหรับการรันแบบขนานแต่ละครั้ง อย่างไรก็ตาม สำหรับเคสทดสอบ Java/PHP จำเป็นต้องมีอินสแตนซ์ Selenium RC เพียงอินสแตนซ์เดียวที่ทำงานอย่างต่อเนื่อง[ 14 ]

Selenium Remote Control คือการปรับปรุงโครงสร้างของ Driven Selenium หรือ Selenium B ที่ออกแบบโดย Paul Hammant ซึ่งได้รับการยกย่องว่าเป็นผู้ร่วมสร้าง Selenium ร่วมกับ Jason เวอร์ชันดั้งเดิมจะเรียกใช้กระบวนการสำหรับเบราว์เซอร์ที่เกี่ยวข้องโดยตรงจากภาษาที่ใช้ทดสอบ เช่น Java, .NET, Python หรือ Ruby โปรโตคอลการสื่อสาร (ที่เรียกว่า 'Selenese' ในสมัยนั้น) ถูกเขียนใหม่ในแต่ละภาษา หลังจากการปรับปรุงโครงสร้างโดย Dan Fabulich และ Nelson Sproul (โดยได้รับความช่วยเหลือจาก Pat Lightbody) ก็มีกระบวนการ daemon ระหว่างสคริปต์ทดสอบและเบราว์เซอร์ ประโยชน์ที่ได้รับคือความสามารถในการควบคุมเบราว์เซอร์ระยะไกล และลดความจำเป็นในการแปลงโค้ดทุกบรรทัดไปยังภาษาต่างๆ ที่เพิ่มมากขึ้นSelenium Remote Controlเข้ามาแทนที่โค้ดของ Driven Selenium อย่างสมบูรณ์ในปี 2006 รูปแบบเบราว์เซอร์สำหรับ 'Driven'/'B' และ 'RC' คือการตอบสนอง/การร้องขอ ซึ่งต่อมาเป็นที่รู้จักในชื่อ Comet

Selenium RC ทำหน้าที่เป็นเฟรมเวิร์กการทดสอบหลักของโครงการ Selenium ทั้งหมดมาเป็นเวลานาน Selenium RC เป็นเครื่องมือทดสอบเว็บอัตโนมัติตัวแรกและสำคัญที่สุดที่ช่วยให้ผู้ใช้สามารถเลือกใช้ภาษาการเขียนโปรแกรมที่ต้องการได้[ 15 ] [ 16 ]

เนื่องจากการเปิดตัว Selenium 2 ทำให้ Selenium RC ถูกยกเลิกอย่างเป็นทางการและแทนที่ด้วย Selenium WebDriver

เซเลเนียม เว็บไดรเวอร์

หัวใจหลักของ Selenium คือ Selenium WebDriver ซึ่งเป็นอินเทอร์เฟซสำหรับเขียนคำสั่งที่ใช้งานร่วมกันได้ในเบราว์เซอร์ต่างๆ เป็นรุ่นต่อจาก Selenium RC Selenium WebDriver รับคำสั่ง (ที่ส่งมาในรูปแบบ Selenese หรือผ่าน Client API) และส่งไปยังเบราว์เซอร์ การทำงานนี้ทำผ่านไดรเวอร์เบราว์เซอร์เฉพาะเบราว์เซอร์ ซึ่งจะส่งคำสั่งไปยังเบราว์เซอร์และดึงผลลัพธ์กลับมา ไดรเวอร์เบราว์เซอร์ส่วนใหญ่จะเปิดและเข้าถึงแอปพลิเคชันเบราว์เซอร์ (เช่นFirefox , Google Chrome , Internet Explorer , SafariหรือMicrosoft Edge ) นอกจากนี้ยังมี ไดรเวอร์เบราว์เซอร์ HtmlUnitซึ่งจำลองเบราว์เซอร์โดยใช้ HtmlUnit เบราว์เซอร์แบบ headless ตั้งแต่ Selenium 4 และ Google Chrome เวอร์ชัน 109 เป็นต้นมา โหมด headless ได้รับการสนับสนุนผ่านการใช้งานดั้งเดิมของเบราว์เซอร์ ซึ่ง Chrome ทำงานโดยไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก แต่มีพฤติกรรมการแสดงผลและการดำเนินการเหมือนกับโหมดปกติ[ 17 ]

แตกต่างจาก Selenium 1 ที่จำเป็นต้องใช้เซิร์ฟเวอร์ Selenium ในการรันการทดสอบ Selenium WebDriver ไม่จำเป็นต้องใช้เซิร์ฟเวอร์พิเศษในการรันการทดสอบ แต่ WebDriver จะเริ่มต้นอินสแตนซ์ของเบราว์เซอร์โดยตรงและควบคุมมัน อย่างไรก็ตาม สามารถใช้ Selenium Grid ร่วมกับ WebDriver เพื่อรันการทดสอบบนระบบระยะไกลได้ (ดูด้านล่าง) ในกรณีที่เป็นไปได้ WebDriver จะใช้ฟังก์ชันระดับระบบปฏิบัติการดั้งเดิมแทนที่จะใช้คำสั่ง JavaScript บนเบราว์เซอร์เพื่อขับเคลื่อนเบราว์เซอร์ ซึ่งจะช่วยหลีกเลี่ยงปัญหาความแตกต่างเล็กน้อยระหว่างคำสั่งดั้งเดิมและ JavaScript รวมถึงข้อจำกัดด้านความปลอดภัย[ 18 ]

ในช่วงต้นปี 2012 ไซมอน สจ๊วต (ผู้คิดค้น WebDriver) ซึ่งขณะนั้นทำงานอยู่ที่ Google และเดวิด เบิร์นส์ จาก Mozilla ได้เจรจากับW3Cเพื่อให้ WebDriver เป็นมาตรฐานอินเทอร์เน็ต ในเดือนกรกฎาคม 2012 ร่างฉบับทำงานได้รับการเผยแพร่ และคำแนะนำตามมาในเดือนมิถุนายน 2018 [ 19 ] Selenium WebDriver (Selenium 2.0) ได้รับการพัฒนาและรองรับอย่างสมบูรณ์ในJavaScript ( Node.js ), Python , Ruby , Java , KotlinและC#ณ ปี 2021 Selenium 4 เป็นเวอร์ชันทดลอง[ 20 ]

ไพธอน

จากselenium.webdriver นำเข้าFirefox จากselenium.webdriver.common.by นำเข้าBy จากselenium.webdriver.common.keys นำเข้าKeys จากselenium.webdriver.support.ui นำเข้าWebDriverWait จากselenium.webdriver.support.expected_conditions นำเข้าpresence_of_element_located จากselenium.webdriver.remote.webelement นำเข้าWebElementถ้า__name__ == "__main__" : # ตัวอย่าง นี้ต้องการ Selenium WebDriver 3.13 หรือใหม่กว่าโดยใช้Firefox ( ) เป็นไดรเวอร์: wait : WebDriverWait = WebDriverWait ( driver , 10 ) driver.get ( "https://google.com/ncr " ) driver.find_element ( By.NAME , " q " ) . send_keys ( f " cheese { Keys.RETURN } " ) first_result : WebElement = wait.until ( presence_of_element_located ( ( By.CSS_SELECTOR , " h3 " ) ) ) print ( first_result.get_attribute ( " textContent " ) )

ชวา

แพ็คเกจorg.wikipedia.examples ;import java.time.Duration ;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 ;public class HelloSelenium { public static void main ( String [] args ) { try ( WebDriver driver = new FirefoxDriver ()) { WebDriverWait wait = new WebDriverWait ( driver , Duration . ofSeconds ( 10 )) 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" )); driver . quit (); } catch ( Exception e ) { System . err . printf ( "Error caught: %s%n" , e . getMessage ()); } } }

ซี#

เนมสเปซWikipedia.Examples ;ใช้OpenQA.Selenium ; ใช้OpenQA.Selenium.Firefox ; ใช้OpenQA.Selenium.Support.UI ;public class HelloSelenium { static void Main ( string [] args ) { using ( IWebDriver driver = new FirefoxDriver ()) { WebDriverWait wait = new ( driver , TimeSpan.FromSeconds ( 10 )); driver.Navigate (). GoToUrl ( " https://www.google.com/ " ); 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 คือเซิร์ฟเวอร์ที่ช่วยให้การทดสอบสามารถใช้งานเว็บเบราว์เซอร์ที่ทำงานอยู่บนเครื่องระยะไกลได้ โดย Selenium Grid จะมีเซิร์ฟเวอร์หนึ่งตัวทำหน้าที่เป็นศูนย์กลาง การทดสอบจะติดต่อศูนย์กลางเพื่อขอสิทธิ์ในการเข้าถึงเบราว์เซอร์ ศูนย์กลางจะมีรายชื่อเซิร์ฟเวอร์ที่ให้สิทธิ์ในการเข้าถึงเบราว์เซอร์ (โหนด WebDriver) และอนุญาตให้การทดสอบใช้งานเบราว์เซอร์เหล่านั้นได้ Selenium Grid ช่วยให้สามารถรันการทดสอบแบบขนานบนเครื่องหลายเครื่อง และจัดการเวอร์ชันเบราว์เซอร์และการกำหนดค่าเบราว์เซอร์ต่างๆ ได้จากส่วนกลาง (แทนที่จะจัดการในแต่ละการทดสอบ)

ความสามารถในการรันการทดสอบบนอินสแตนซ์เบราว์เซอร์ระยะไกลมีประโยชน์ในการกระจายภาระการทดสอบไปยังเครื่องหลายเครื่อง และรันการทดสอบในเบราว์เซอร์ที่ทำงานบนแพลตฟอร์มหรือระบบปฏิบัติการที่แตกต่างกัน ซึ่งอย่างหลังนี้มีประโยชน์อย่างยิ่งในกรณีที่เบราว์เซอร์ทั้งหมดที่จะใช้ในการทดสอบไม่สามารถทำงานบนแพลตฟอร์มเดียวกันได้[ 21 ]

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Selenium_(software)&oldid=1340916036 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ซีลีเนียม (ซอฟต์แวร์)

Selenium เป็น โครงการโอ เพ นซอร์สที่ครอบคลุมเครื่องมือและ ไลบรารี ต่างๆ มากมายที่มุ่งสนับสนุน การทำงานอัตโนมัติของเบราว์เซอร์ [ 3 ] โดย มีเครื่องมือสำหรับการเล่นซ้ำเพื่อสร้าง...

ประวัติศาสตร์

Selenium ได้รับการพัฒนาขึ้นครั้งแรกโดย Jason Huggins ในปี 2547 ในฐานะเครื่องมือภายในของ ThoughtWorks [ 5 ] ต่อมา Huggins ได้ร่วมงานกับโปรแกรมเมอร์และผู้ ทดสอบคนอื่นๆ ที่ ThoughtWorks ก่อนที่ Paul Hammant...

ส่วนประกอบ

Selenium ประกอบด้วยส่วนประกอบหลายอย่าง โดยแต่ละส่วนประกอบมีบทบาทเฉพาะในการช่วยพัฒนาการทดสอบแอปพลิเคชันเว็บแบบ อัตโนมัติ [ 9 ]

Selenium IDE

Selenium IDE เป็น สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) ที่สมบูรณ์แบบสำหรับการทดสอบ Selenium มีการใช้งานในรูปแบบ Add-On ของ Firefox และส่วน ขยายของ Chrome ช่วยให้สามารถบันทึก แก้ไข และดีบักการทดสอบการทำงานได้ ก่อนหน้านี้รู้จักกันในชื่อ Selenium Recorder...