Selenium ไดรเวอร์เว็บ Java ตัวอย่างโปรแกรม (โค้ดตัวอย่าง)
Selenium Java ตัวอย่าง
การใช้ Java คลาส “myclass” ที่เราสร้างขึ้นในบทช่วยสอนก่อนหน้านี้ ให้เราลองสร้างสคริปต์ WebDriver ที่จะ:
ขั้นตอนที่ 1: นำมา Mercury หน้าแรกของทัวร์
ขั้นตอนที่ 2: ตรวจสอบชื่อของมัน
ขั้นตอนที่ 3: พิมพ์ผลการเปรียบเทียบออกมา
ขั้นตอนที่ 4: ปิดก่อนที่จะสิ้นสุดโปรแกรมทั้งหมด
Selenium โค้ดตัวอย่าง WebDriver
ด้านล่างนี้คือโค้ด WebDriver จริงสำหรับตรรกะที่นำเสนอโดยสถานการณ์ด้านบน
package newproject; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; //comment the above line and uncomment below line to use Chrome //import org.openqa.selenium.chrome.ChromeDriver; public class PG1 { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); //comment the above 2 lines and uncomment below 2 lines to use Chrome //System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); //WebDriver driver = new ChromeDriver(); String baseUrl = "http://demo.guru99.com/test/newtours/"; String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = ""; // launch Fire fox and direct it to the Base URL driver.get(baseUrl); // get the actual value of the title actualTitle = driver.getTitle(); /* * compare the actual title of the page with the expected one and print * the result as "Passed" or "Failed" */ if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); } //close Fire fox driver.close(); } }
หมายเหตุ เริ่มแล้ว Firefox คุณต้องใช้ไดรเวอร์ตุ๊กแกที่สร้างโดย Mozilla เพื่อใช้งาน Web Driver Selenium 3.0, gecko และ firefox มีปัญหาเรื่องความเข้ากันได้ และการตั้งค่าให้ถูกต้องอาจกลายเป็นงานยาก หากโค้ดไม่ทำงาน ให้ดาวน์เกรดเป็น Firefox เวอร์ชัน 47 หรือต่ำกว่า หรือคุณสามารถเรียกใช้สคริปต์ของคุณบน Chrome Selenium ใช้งานได้ทันทีสำหรับ Chrome คุณเพียงแค่ต้องเปลี่ยนโค้ด 3 บรรทัดเพื่อให้สคริปต์ของคุณทำงานกับ Chrome ได้ Firefox
อธิบายรหัส
การนำเข้าแพ็คเกจ
ในการเริ่มต้น คุณต้องนำเข้าแพ็คเกจสองรายการต่อไปนี้:
- org.openqa.selenium.*– มีคลาส WebDriver ที่จำเป็นในการสร้างอินสแตนซ์เบราว์เซอร์ใหม่ที่โหลดพร้อมไดรเวอร์เฉพาะ
- org.openqa.selenium.firefox.Firefoxคนขับรถ – ประกอบด้วย Firefoxคลาสไดรเวอร์ที่จำเป็นในการสร้างอินสแตนซ์ Firefox- ไดรเวอร์เฉพาะบนเบราว์เซอร์ที่สร้างอินสแตนซ์โดยคลาส WebDriver
หากการทดสอบของคุณต้องการการดำเนินการที่ซับซ้อนมากขึ้น เช่น การเข้าถึงคลาสอื่น การจับภาพหน้าจอของเบราว์เซอร์ หรือการจัดการไฟล์ภายนอก คุณจะต้องนำเข้าแพ็คเกจเพิ่มเติมอย่างแน่นอน
การสร้างอินสแตนซ์ของวัตถุและตัวแปร
โดยปกติ นี่คือวิธีการสร้างอินสแตนซ์ของวัตถุไดรเวอร์
WebDriver driver = new FirefoxDriver();
A Firefoxคลาสไดร์เวอร์ที่ไม่มีพารามิเตอร์หมายความว่าเป็นค่าเริ่มต้น Firefox โปรไฟล์ของเราจะถูกเปิดตัวโดย Java โปรแกรม ค่าเริ่มต้น Firefox โปรไฟล์คล้ายกับการเปิดตัว Firefox ในเซฟโหมด (ไม่ได้โหลดส่วนขยาย)
เพื่อความสะดวก เราได้บันทึก URL ฐานและชื่อที่คาดหวังไว้เป็นตัวแปร
การเปิดตัวเซสชันเบราว์เซอร์
เว็บไดร์เวอร์ รับ () วิธีการใช้เพื่อเปิดเซสชันเบราว์เซอร์ใหม่และนำไปยัง URL ที่คุณระบุเป็นพารามิเตอร์
driver.get(baseUrl);
รับชื่อหน้าจริง
คลาส WebDriver มี getTitle () วิธีการที่ใช้เสมอเพื่อรับชื่อหน้าของหน้าที่โหลดในปัจจุบัน
actualTitle = driver.getTitle();
เปรียบเทียบค่าที่คาดหวังและค่าจริง
โค้ดส่วนนี้ใช้พื้นฐานเพียงอย่างเดียว Java โครงสร้าง if-else เพื่อเปรียบเทียบชื่อจริงกับชื่อที่คาดหวัง
if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); }
การยุติเซสชันเบราว์เซอร์
"ปิด()” ใช้เพื่อปิดหน้าต่างเบราว์เซอร์
driver.close();
การยุติโปรแกรมทั้งหมด
หากคุณใช้คำสั่งนี้โดยไม่ปิดหน้าต่างเบราว์เซอร์ทั้งหมดก่อน Java โปรแกรมจะสิ้นสุดในขณะที่เปิดหน้าต่างเบราว์เซอร์ทิ้งไว้
System.exit(0);
เรียกใช้การทดสอบ
มีสองวิธีในการรันโค้ด Eclipse ไอดี.
- On Eclipseแถบเมนูของ คลิก วิ่ง > วิ่ง
- ข่าวประชาสัมพันธ์ Ctrl + F11 เพื่อรันโค้ดทั้งหมด
หากคุณทำทุกอย่างถูกต้อง Eclipse จะแสดงผลว่า "Test Passed!"
การค้นหาองค์ประกอบ GUI
การค้นหาองค์ประกอบใน WebDriver ทำได้โดยใช้ปุ่ม “ค้นหาองค์ประกอบ (โดย.ระบุตำแหน่ง-" วิธี. ส่วน “ตัวระบุตำแหน่ง” ของโค้ดจะเหมือนกับตัวระบุตำแหน่งใดๆ ที่กล่าวถึงก่อนหน้านี้ใน Selenium IDE บทต่างๆ ของบทช่วยสอนเหล่านี้ ที่จริงแล้ว ขอแนะนำให้คุณค้นหาองค์ประกอบ GUI โดยใช้ IDE และเมื่อระบุได้สำเร็จแล้ว ให้ส่งออกโค้ดไปยัง WebDriver
ที่นี่คือ Selenium โค้ดตัวอย่างที่ตั้งองค์ประกอบตามรหัส Facebook ถูกใช้เป็น URL ฐาน
package newproject; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG2 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String baseUrl = "http://www.facebook.com"; String tagName = ""; driver.get(baseUrl); tagName = driver.findElement(By.id("email")).getTagName(); System.out.println(tagName); driver.close(); System.exit(0); } }
เราใช้ getTagName() วิธีการแยกชื่อแท็กขององค์ประกอบเฉพาะที่มี ID เป็น “อีเมล” เมื่อเรียกใช้ โค้ดนี้ควรสามารถระบุชื่อแท็ก “อินพุต” ได้อย่างถูกต้องและจะพิมพ์ออกมา Eclipseหน้าต่างคอนโซลของ
สรุปการหาตำแหน่งองค์ประกอบ
การเปลี่ยนแปลง | Descriptไอออน | ตัวอย่าง |
---|---|---|
โดย.className | ค้นหาองค์ประกอบตามค่าของแอตทริบิวต์ "คลาส" | findElement(By.className(“someClassName”)) |
By.cssSelector | ค้นหาองค์ประกอบตามเอ็นจิ้น CSS Selector พื้นฐานของไดรเวอร์ | findElement(By.cssSelector(“อินพุต#อีเมล”)) |
โดย.id | ค้นหาองค์ประกอบตามค่าของแอตทริบิวต์ "id" |
findElement(By.id("someId")) |
โดย.linkText | ค้นหาองค์ประกอบลิงก์ตามข้อความที่แสดง |
findElement (By.linkText (“การลงทะเบียน”)) |
โดยชื่อ | ค้นหาองค์ประกอบตามค่าของแอตทริบิวต์ "ชื่อ" |
findElement(By.name("ชื่อบางคน")) |
โดย.partialLinkText | ค้นหาองค์ประกอบที่มีข้อความลิงก์ที่กำหนด |
findElement (By.partialLinkText (“REG”)) |
โดย.tagName | ค้นหาองค์ประกอบตามชื่อแท็ก |
findElement(By.tagName("div")) |
By.xpath | ค้นหาองค์ประกอบผ่าน XPath |
findElement(By.xpath(“//html/body/div/table/tbody/tr/td[2]/table/ tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td[3]/ form/table/tbody/tr[5]”)) |
หมายเหตุเกี่ยวกับการใช้ findElement(By.cssSelector())
By.cssSelector()
ไม่รองรับฟีเจอร์ "มี" พิจารณา Selenium รหัส IDE ด้านล่าง –
In Selenium IDE ข้างต้นผ่านการทดสอบทั้งหมด อย่างไรก็ตามใน Selenium สคริปต์ WebDriver ด้านล่าง การทดสอบเดียวกันนี้สร้างข้อผิดพลาดเนื่องจาก WebDriver ไม่รองรับคีย์เวิร์ด "contains" เมื่อใช้ในเมธอด By.cssSelector()
คำสั่งทั่วไป
การสร้างอินสแตนซ์องค์ประกอบเว็บ
แทนที่จะใช้รูปแบบยาว “driver.findElement(By.locator())” ทุกครั้งที่คุณจะเข้าถึงองค์ประกอบใดองค์ประกอบหนึ่ง เราสามารถสร้างอินสแตนซ์ของอ็อบเจ็กต์ WebElement สำหรับองค์ประกอบนั้นได้ คลาส WebElement อยู่ในแพ็คเกจ “org.openqa.selenium.*”
คลิกที่องค์ประกอบ
การคลิกอาจเป็นวิธีที่ใช้กันทั่วไปในการโต้ตอบกับองค์ประกอบต่างๆ ของเว็บ ที่ click()
วิธีนี้ใช้เพื่อจำลองการคลิกขององค์ประกอบใด ๆ ดังต่อไปนี้ Selenium Java ตัวอย่างแสดงให้เห็นว่าอย่างไร click()
ใช้ในการคลิก Mercury ปุ่ม "ลงชื่อเข้าใช้" ของ Tours
สิ่งที่ต้องสังเกตต่อไปนี้เมื่อใช้เมธอด click()
- ไม่ใช้พารามิเตอร์/อาร์กิวเมนต์ใดๆ
- วิธีการนี้จะรอให้โหลดหน้าใหม่โดยอัตโนมัติ หากมี
- ต้องมองเห็นองค์ประกอบที่จะคลิกได้ (ความสูงและความกว้างต้องไม่เท่ากับศูนย์)
รับคำสั่ง
รับคำสั่งดึงข้อมูลสำคัญต่างๆ เกี่ยวกับเพจ/องค์ประกอบ ต่อไปนี้เป็นคำสั่ง "get" ที่สำคัญที่คุณต้องคุ้นเคย
คำสั่ง | การใช้ |
---|---|
รับ ()
การใช้ตัวอย่าง: |
|
getTitle ()
การใช้ตัวอย่าง: |
|
getPageSource()
การใช้ตัวอย่าง: |
|
getCurrentUrl()
การใช้ตัวอย่าง: |
|
getText ()
การใช้ตัวอย่าง: |
|
นำทางคำสั่ง
คำสั่งเหล่านี้ช่วยให้คุณสามารถรีเฟรช เข้าไปและสลับไปมาระหว่างหน้าเว็บต่างๆ
นำทางไปยัง()
การใช้ตัวอย่าง: |
|
นำทาง().รีเฟรช()
การใช้ตัวอย่าง: |
|
นำทาง().กลับ()
การใช้ตัวอย่าง: |
|
นำทาง().ไปข้างหน้า()
การใช้ตัวอย่าง: |
|
การปิดและออกจากเบราว์เซอร์ Windows
ปิด()
การใช้ตัวอย่าง: |
|
เลิก()
การใช้ตัวอย่าง: |
|
เพื่อแสดงให้เห็นความแตกต่างระหว่างกันอย่างชัดเจน close()
และ quit()
ให้ลองรันโค้ดด้านล่างนี้ ใช้หน้าเว็บที่ปรากฏขึ้นหน้าต่างโดยอัตโนมัติเมื่อโหลดหน้าเว็บและเปิดขึ้นอีกหน้าต่างหนึ่งหลังจากออก
สังเกตว่ามีเฉพาะหน้าต่างเบราว์เซอร์หลักเท่านั้นที่ถูกปิด และไม่ได้ปิดหน้าต่างป็อปอัปทั้งสองหน้าต่าง
แต่หากคุณใช้ quit() หน้าต่างทั้งหมดจะถูกปิดลง ไม่ใช่แค่หน้าต่างหลักเท่านั้น ลองรันโค้ดด้านล่างแล้วคุณจะสังเกตเห็นว่าหน้าต่างป๊อปอัปทั้งสองหน้าต่างด้านบนจะถูกปิดลงโดยอัตโนมัติเช่นกัน
package newproject; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG3 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://www.popuptest.com/popuptest2.html"); driver.quit(); // using QUIT all windows will close } }
การสลับระหว่างเฟรม
ในการเข้าถึงองค์ประกอบ GUI ใน Frame เราควรสั่งให้ WebDriver โฟกัสไปที่เฟรมหรือหน้าต่างป๊อปอัปก่อนจึงจะสามารถเข้าถึงองค์ประกอบภายในได้ ให้เรายกตัวอย่างหน้าเว็บ http://demo.guru99.com/selenium/deprecated.html
หน้านี้มี 3 เฟรมซึ่งมีแอตทริบิวต์ "ชื่อ" ระบุไว้ด้านบน เราต้องการเข้าถึงลิงก์ "เลิกใช้แล้ว" ที่ล้อมรอบด้านบนด้วยสีเหลือง ในการทำเช่นนั้น เราต้องสั่งให้ WebDriver สลับไปที่เฟรม "classFrame" ก่อนโดยใช้ “switchTo().frame()” วิธี. เราจะใช้แอตทริบิวต์ชื่อของเฟรมเป็นพารามิเตอร์สำหรับส่วน "frame()"
package newproject; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG4 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://demo.guru99.com/selenium/deprecated.html"); driver.switchTo().frame("classFrame"); driver.findElement(By.linkText("Deprecated")).click(); driver.close(); } }
หลังจากรันโค้ดนี้ คุณจะเห็นว่าเฟรม "classFrame" ถูกนำไปที่หน้า "Deprecated API" ซึ่งหมายความว่าโค้ดของเราสามารถเข้าถึงลิงก์ "Deprecated" ได้สำเร็จ
การสลับระหว่างป๊อปอัป Windows
WebDriver อนุญาตให้แสดงหน้าต่างป๊อปอัป เช่น การแจ้งเตือน ซึ่งแตกต่างจาก Selenium ไอดี ในการเข้าถึงองค์ประกอบภายในการแจ้งเตือน (เช่นข้อความที่มีอยู่) เราต้องใช้ "switchTo().alert()"
วิธีการ ในโค้ดด้านล่าง เราจะใช้วิธีการนี้เพื่อเข้าถึงกล่องแจ้งเตือนและดึงข้อความโดยใช้ "getText()"
วิธีการแล้วจึงปิดกล่องแจ้งเตือนอัตโนมัติโดยใช้ "switchTo().alert().accept()"
วิธี
ก่อนอื่นให้มุ่งหน้าไปที่ https://output.jsbin.com/usidix/1 และคลิก "ไป!" ด้วยตนเอง ปุ่มที่นั่นและดูข้อความด้วยตัวคุณเอง
มาดูกัน Selenium โค้ดตัวอย่างเพื่อทำสิ่งนี้-
package mypackage; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class myclass { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String alertMessage = ""; driver.get("http://jsbin.com/usidix/1"); driver.findElement(By.cssSelector("input[value=\"Go!\"]")).click(); alertMessage = driver.switchTo().alert().getText(); driver.switchTo().alert().accept(); System.out.println(alertMessage); driver.quit(); } }
เกี่ยวกับ Eclipse console โปรดสังเกตว่าข้อความแจ้งเตือนที่พิมพ์ออกมาคือ:
รอ
การรอมีสองประเภท
- การรอโดยนัย – ใช้เพื่อตั้งค่าเวลารอเริ่มต้นตลอดทั้งโปรแกรม
- การรออย่างชัดเจน – ใช้เพื่อตั้งเวลารอสำหรับอินสแตนซ์เฉพาะเท่านั้น
รอโดยปริยาย
- โค้ดง่ายกว่า Explicit Waits
- โดยปกติจะมีการประกาศในส่วนการสร้างอินสแตนซ์ของโค้ด
- คุณจะต้องมีแพ็คเกจเพิ่มเติมเพียงแพ็คเกจเดียวเพื่อนำเข้า
หากต้องการเริ่มใช้การรอโดยนัย คุณจะต้องนำเข้าแพ็คเกจนี้ลงในโค้ดของคุณ
จากนั้นในส่วนการสร้างอินสแตนซ์ของโค้ดของคุณ ให้เพิ่มส่วนนี้
รออย่างชัดแจ้ง
การรอที่ชัดเจนเสร็จสิ้นโดยใช้คลาส WebDriverWait และ ExpectedCondition. สำหรับสิ่งต่อไปนี้ Selenium ตัวอย่าง WebDriver เราจะรอนานถึง 10 วินาทีเพื่อให้องค์ประกอบที่มี ID เป็น "ชื่อผู้ใช้" ปรากฏให้เห็นก่อนที่จะดำเนินการคำสั่งถัดไป นี่คือขั้นตอน
ขั้นตอนที่ 1:
นำเข้าแพ็คเกจทั้งสองนี้:
ขั้นตอนที่ 2:
ประกาศตัวแปร WebDriverWait ในตัวอย่างนี้ เราจะใช้ “myWaitVar” เป็นชื่อของตัวแปร
ขั้นตอนที่ 3:
ใช้ myWaitVar กับ ExpectedConditions ในส่วนที่คุณต้องการให้มีการรออย่างชัดเจน ในกรณีนี้ เราจะใช้การรออย่างชัดเจนใน “ชื่อผู้ใช้” (Mercury Tours HomePage) ก่อนที่เราจะพิมพ์ข้อความ "บทช่วยสอน" ลงไป
เงื่อนไข
วิธีการต่อไปนี้ใช้ในเงื่อนไขและการดำเนินการแบบวนซ้ำ
- เปิดใช้งาน() ใช้เมื่อคุณต้องการตรวจสอบว่ามีการเปิดใช้งานองค์ประกอบบางอย่างหรือไม่ก่อนที่จะดำเนินการคำสั่ง
- แสดงอยู่() ใช้เมื่อคุณต้องการตรวจสอบว่ามีการแสดงองค์ประกอบบางอย่างหรือไม่ ก่อนที่จะดำเนินการคำสั่ง
- ถูกเลือก() ใช้เมื่อคุณต้องการตรวจสอบว่ามีบางอย่างหรือไม่ ช่องกาเครื่องหมาย ปุ่มตัวเลือก หรือตัวเลือกในกล่องแบบดรอปดาวน์ ถูกเลือก มันใช้ไม่ได้กับองค์ประกอบอื่น
การใช้เงื่อนไขที่คาดหวัง
คลาส ExpectedConditions เสนอชุดเงื่อนไขที่กว้างขึ้นซึ่งคุณสามารถใช้ร่วมกับเมธอดของ WebDriverWait จนถึง()
ด้านล่างนี้คือวิธี ExpectedConditions ที่พบบ่อยที่สุดบางส่วน
- alertIsPresent () – รอจนกว่าจะมีกล่องแจ้งเตือนปรากฏขึ้น
- องค์ประกอบToBeClickable() – รอจนกระทั่งองค์ประกอบปรากฏให้เห็นและเปิดใช้งานในเวลาเดียวกัน ตัวอย่าง Selenium โค้ดด้านล่างจะรอจนกว่าองค์ประกอบที่มี id=”ชื่อผู้ใช้” จะปรากฏให้เห็นและเปิดใช้งานก่อนจึงจะกำหนดองค์ประกอบนั้นเป็นตัวแปร WebElement ชื่อ “txtUserName”
- frameToBeAvailableAndSwitchToIt() – รอจนกระทั่งเฟรมที่กำหนดพร้อมใช้งานแล้วจึงสลับไปที่เฟรมนั้นโดยอัตโนมัติ
การจับข้อยกเว้น
เมื่อใช้ isEnabled(), isDisplayed() และ isSelected() WebDriver จะถือว่าองค์ประกอบนั้นมีอยู่ในหน้าอยู่แล้ว มิฉะนั้น จะแสดงข้อผิดพลาด NoSuchElementException- เพื่อหลีกเลี่ยงปัญหานี้ เราควรใช้บล็อก try-catch เพื่อว่าโปรแกรมจะไม่ถูกขัดจังหวะ
WebElement txtbox_username = driver.findElement(By.id("username")); try{ if(txtbox_username.isEnabled()){ txtbox_username.sendKeys("tutorial"); } } catch(NoSuchElementException nsee){ System.out.println(nsee.toString()); }
หากคุณใช้การรออย่างชัดเจน ประเภทของข้อยกเว้นที่คุณควรจับคือ "TimeoutException"
สรุป
- หากต้องการเริ่มใช้ WebDriver API คุณต้องนำเข้าแพ็กเกจอย่างน้อย 2 แพ็กเกจนี้
- org.openqa.selenium.*
- org.openqa.selenium.firefox.Firefoxคนขับรถ
- รางวัล
get()
วิธีการจะเทียบเท่ากับ Selenium คำสั่ง “open” ของ IDE - การค้นหาองค์ประกอบใน WebDriver ทำได้โดยใช้
findElement()
วิธี - ต่อไปนี้เป็นตัวเลือกที่มีสำหรับการค้นหาองค์ประกอบใน WebDriver:
- โดย.className
- By.cssSelector
- โดย.id
- โดย.linkText
- โดยชื่อ
- โดย.partialLinkText
- โดย.tagName
- By.xpath
- By.cssSelector() ไม่ สนับสนุน "ประกอบด้วย" ลักษณะ
- คุณสามารถสร้างอินสแตนซ์องค์ประกอบโดยใช้คลาส WebElement
- การคลิกที่องค์ประกอบทำได้โดยใช้
click()
วิธี - WebDriver จัดเตรียมคำสั่งรับที่มีประโยชน์เหล่านี้:
- รับ ()
- getTitle ()
- getPageSource()
- getCurrentUrl()
- getText ()
- WebDriver มีคำสั่งการนำทางที่มีประโยชน์เหล่านี้
- นำทาง().ไปข้างหน้า()
- นำทาง().กลับ()
- นำทางไปยัง()
- นำทาง().รีเฟรช()
- ใช้วิธี close() และ quit() เพื่อปิดหน้าต่างเบราว์เซอร์
Close()
ใช้เพื่อปิดหน้าต่างเดียว ในขณะที่quit()
ใช้เพื่อปิดหน้าต่างทั้งหมดที่เกี่ยวข้องกับหน้าต่างหลักที่วัตถุ WebDriver กำลังควบคุมอยู่ - รางวัล
switchTo().frame()
และswitchTo().alert()
วิธีการใช้เพื่อกำหนดทิศทางของ WebDriver ไปยังเฟรมหรือการแจ้งเตือนตามลำดับ Implicit waits
ใช้สำหรับตั้งเวลารอตลอดโปรแกรมในขณะที่explicit waits
ใช้เฉพาะบางส่วนเท่านั้น- คุณสามารถใช้ isEnabled(), isDisplayed(), isSelected() และการผสมผสานของ เว็บไดร์เวอร์รอสักครู่ และ เงื่อนไขที่คาดหวัง วิธีการตรวจสอบสถานะขององค์ประกอบ อย่างไรก็ตาม พวกเขาไม่ได้ตรวจสอบว่าไม่มีองค์ประกอบอยู่หรือไม่
- เมื่อ isEnabled(), isDisplayed() หรือ isSelected() ถูกเรียกในขณะที่องค์ประกอบไม่มีอยู่ WebDriver จะส่ง NoSuchElementException.
- เมื่อมีการเรียกเมธอด WebDriverWait และ ExpectedConditions ในขณะที่ไม่มีองค์ประกอบอยู่ WebDriver จะส่ง
TimeoutException
.
หมายเหตุ
driver.get()
:วิธีนี้ใช้เพื่อนำทางไปยังเว็บไซต์ใดเว็บไซต์หนึ่ง อย่างไรก็ตาม วิธีนี้จะไม่เก็บประวัติเบราว์เซอร์หรือคุกกี้ ดังนั้น ปุ่มไปข้างหน้าและข้างหลังจะไม่ทำงาน และการคลิกปุ่มเหล่านี้จะไม่กำหนดเวลาการนำทางหน้า
driver.navigate()
:วิธีนี้ยังใช้เพื่อนำทางไปยังเว็บไซต์ใดเว็บไซต์หนึ่งโดยเฉพาะ แต่ยังคงรักษาประวัติเบราว์เซอร์และคุกกี้เอาไว้ วิธีนี้ช่วยให้สามารถใช้ปุ่มไปข้างหน้าและข้างหลังเพื่อนำทางระหว่างหน้าต่างๆ ขณะเขียนโค้ดกรณีทดสอบได้