การทดสอบข้ามเบราว์เซอร์โดยใช้ Selenium ไดรเวอร์เว็บ
การทดสอบข้ามเบราว์เซอร์โดยใช้ Selenium
การทดสอบข้ามเบราว์เซอร์ คือการทดสอบการทำงานประเภทหนึ่งเพื่อตรวจสอบว่าเว็บแอปพลิเคชันของคุณทำงานตามที่คาดไว้ในเบราว์เซอร์ที่แตกต่างกัน
เหตุใดเราจึงต้องทดสอบข้ามเบราว์เซอร์?
แอพพลิเคชั่นบนเว็บมีความแตกต่างกันโดยสิ้นเชิง Windows การใช้งาน ผู้ใช้ปลายทางสามารถเปิดแอปพลิเคชันเว็บในเบราว์เซอร์ใดก็ได้ เช่น บางคนชอบเปิด https://twitter.com in Firefox เบราว์เซอร์ ในขณะที่ตัวอื่นสามารถใช้ได้ เบราว์เซอร์ Chrome or IE.
ในแผนภาพด้านล่าง คุณจะสังเกตได้ว่าใน IEช่องเข้าสู่ระบบของ Twitter ไม่แสดงเส้นโค้งที่ทุกมุม แต่เราสามารถมองเห็นได้ในเบราว์เซอร์ Chrome
ดังนั้นเราจึงต้องแน่ใจว่าเว็บแอปพลิเคชันจะทำงานตามที่คาดไว้ในเบราว์เซอร์ยอดนิยมทั้งหมด เพื่อให้ผู้คนสามารถเข้าถึงและใช้งานได้มากขึ้น
แรงจูงใจนี้สามารถเติมเต็มได้ด้วย Cross Browser การทดสอบ ของผลิตภัณฑ์
สาเหตุของปัญหาเบราว์เซอร์ข้าม
- ขนาดตัวอักษรไม่ตรงกันในเบราว์เซอร์ที่แตกต่างกัน
- Javaการใช้งานสคริปต์อาจแตกต่างกันได้
- อาจมีความแตกต่างในการตรวจสอบ CSS, HTML
- เบราว์เซอร์บางตัวยังไม่รองรับ HTML5
- การจัดตำแหน่งหน้าและขนาด div
- การวางแนวรูปภาพ
- เบราว์เซอร์เข้ากันไม่ได้กับระบบปฏิบัติการ ฯลฯ
วิธีทำการทดสอบข้ามเบราว์เซอร์
ถ้าเราใช้ Selenium WebDriver เราสามารถสร้างกรณีทดสอบอัตโนมัติโดยใช้ Internet Explorer, FireFox, Chrome, เบราว์เซอร์ซาฟารี
เพื่อดำเนินการกรณีทดสอบกับเบราว์เซอร์ที่แตกต่างกันในเครื่องเดียวกันในเวลาเดียวกัน เราสามารถบูรณาการได้ TestNG กรอบด้วย Selenium เว็บไดร์เวอร์
Testing.xml ของคุณจะมีลักษณะเช่นนั้น
Testing.xml นี้จะแมปกับไฟล์ กรณีทดสอบ ซึ่งจะมีลักษณะเช่นนั้น
ที่นี่เนื่องจากการทดสอบ.xml มีแท็กทดสอบสองแท็ก ('ChromeTest','FirefoxTest') กรณีทดสอบนี้จะดำเนินการสองครั้งสำหรับเบราว์เซอร์ 2 ตัวที่แตกต่างกัน
การทดสอบครั้งแรก 'ChromeTest' จะส่งผ่านค่าของพารามิเตอร์ 'เบราว์เซอร์' เป็น 'chrome' ดังนั้น ChromeDriver จะถูกดำเนินการ กรณีทดสอบนี้จะทำงานบนเบราว์เซอร์ Chrome
การทดสอบครั้งที่สอง 'FirefoxTest' จะผ่านค่าของพารามิเตอร์ 'browser' เป็น 'Firefox' ดังนั้น Firefoxไดรเวอร์จะถูกดำเนินการ กรณีทดสอบนี้จะทำงานบน FireFox เบราว์เซอร์
Guru99CrossBrowserScript.java
รหัสที่สมบูรณ์:
package parallelTest; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class CrossBrowserScript { WebDriver driver; /** * This function will execute before each Test tag in testng.xml * @param browser * @throws Exception */ @BeforeTest @Parameters("browser") public void setup(String browser) throws Exception{ //Check if parameter passed from TestNG is 'firefox' if(browser.equalsIgnoreCase("firefox")){ //create firefox instance System.setProperty("webdriver.gecko.driver", ".\\geckodriver.exe"); driver = new FirefoxDriver(); } //Check if parameter passed as 'chrome' else if(browser.equalsIgnoreCase("chrome")){ //set path to chromedriver.exe System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe"); //create chrome instance driver = new ChromeDriver(); } //Check if parameter passed as 'Edge' else if(browser.equalsIgnoreCase("Edge")){ //set path to Edge.exe System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe"); //create Edge instance driver = new EdgeDriver(); } else{ //If no browser passed throw exception throw new Exception("Browser is not correct"); } driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public void testParameterWithXML() throws InterruptedException{ driver.get("https://demo.guru99.com/V4/"); //Find user name WebElement userName = driver.findElement(By.name("uid")); //Fill user name userName.sendKeys("guru99"); //Find password WebElement password = driver.findElement(By.name("password")); //Fill password password.sendKeys("guru99"); } }
การทดสอบ.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="2" parallel="tests" > <test name="ChromeTest"> <parameter name="browser" value="Chrome" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="Firefox" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> <test name="EdgeTest"> <parameter name="browser" value="Edge" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> </suite>
หมายเหตุ: หากต้องการรันการทดสอบ ให้คลิกขวาที่ การทดสอบ.xml, เลือกเรียกใช้เป็นแล้วคลิก TestNG
สรุป
- การทดสอบข้ามเบราว์เซอร์เป็นเทคนิคในการทดสอบเว็บแอปพลิเคชันกับเว็บเบราว์เซอร์ต่างๆ
- Selenium สามารถรองรับประเภทต่างๆได้ เครื่องมือทดสอบข้ามเบราว์เซอร์ สำหรับระบบอัตโนมัติ
- Selenium สามารถรวมเข้ากับ TestNG เพื่อทำการทดสอบหลายเบราว์เซอร์
- จากพารามิเตอร์ในการทดสอบ.xml เราสามารถส่งชื่อเบราว์เซอร์ได้ และในกรณีทดสอบ เราสามารถสร้างการอ้างอิง WebDriver ตามลำดับได้
หมายเหตุ โปรแกรมที่กำหนดถูกสร้างและทดสอบบน selenium 3.0.1, Chrome 56.0.2924.87 Firefox 47.0.2 & Microsoft Edge 14.14393. หากโปรแกรมแสดงข้อผิดพลาด โปรดอัปเดตไดรเวอร์
ดาวน์โหลด Selenium ไฟล์โครงการสำหรับการสาธิตในบทช่วยสอนนี้