จากในบทความเรื่อง Explicit waiting การรอแบบเงื่อนไขตามที่กำหนด เราก็ได้พูดอธิบายกันไปแล้วว่ามันคืออะไร ทำไมถึงต้องใช้ และได้ทำการยกตัวอย่างการใช้งานกันไปแล้วเล็กน้อย ซึ่งจริง ๆ แล้วนอกจากในตัวอย่าง ยังมีเงื่อนไขอีกมากมาย ที่เราสามารถทำการกำหนดได้ เงื่อนไขเหล่านี้จะใช้ควบคู่ไปกับ Explicit waiting เท่านั้น ไม่สามารถใช้กับ Implicit waiting ได้ และในบทความนี้เราจะมาพูดถึงเงื่อนไขต่าง ๆ ที่สามารถใช้ได้กับ explicit wait และยกตัวอย่างการใช้งานเล็กน้อย บน selenium ภาษาไพทอนกัน
เงื่อนไขต่าง ๆ
title_is | เป็นการรอเพื่อตรวจสอบชื่อของเว็บเพจนั้น จะค่าส่งกลับมาเป็น True, False |
title_contain | เป็นการรอเพื่อตรวจสอบชื่อของเว็บเพจนั้น ว่ามีสตริงที่กำหนดหรือไม่ |
presence_of_element_located | ตรวจสอบว่ามี element ที่กำหนดหรือไม่ ไม่จำเป็นจะต้องมองเห็นก็ได้ |
visibility_of_element_located | ตรวจสอบว่ามี element ที่กำหนดหรือไม่ จำเป็นที่จะต้องมองเห็น |
visibility_of | ตรวจสอบว่า element ที่กำหนด แสดงอยู่หรือไม่ |
precense_of_all_element_located | ตรวจสอบว่ามี element ที่กำหนดหรือไม่ ไม่จำเป็นจะต้องมองเห็นก็ได้ |
element_located_to_be_selected | ตรวจสอบว่ามี element ที่กำหนด สามารถใช้คำสั่ง select ได้หรือไม่ |
element_located_selection_state_to_be | ตรวจสอบว่า element ดังกล่าว ถูกใช้คำสั่ง select หรือไม่ |
alert_is_present | ทำการรอจนกว่าจะมีกล่องข้อความแจ้งเตือนแสดง |
element_to_be_clickable | ตรวจสอบว่า element มองเห็นได้และสามารถคลิกได้ |
Syntax
WebDriverWait(driver, 10).until('คำสั่ง'('element'))
ตัวอย่างการใช้งาน
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://google.com")
wait = WebDriverWait(driver, 10)
element = wait.until(EC.title_is('Google'))
print(element)
ผลลัพธ์
ผลลัพธ์คำสั่ง title_is
ผลลัพธ์ที่ออกมาก็จะส่งกลับเป็นค่า True หรือ False ค่า True หมายความว่าชื่อ Title ของเว็บเพจเป็นไปตามที่เรากำหนด แต่ถ้าหากผลลัพธ์ที่ออกมาเป็น False หมายความว่าชื่อของเว็บเพจไม่ตรงกับที่เราทำการระบุ
ตัวอย่างการใช้งาน
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://google.com")
wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.NAME, 'q')))
print(element)
ผลลัพธ์
ผลลัพธ์คำสั่ง visibility_of_element_located
ผลลัพธ์ที่ออกมานั้น ก็จะเป็นการรอจนกว่า element ที่เรากำหนดแสดงบนหน้าเว็บเพจ ภายในเวลาที่ได้กำหนดเอาไว้นั่นเอง หรือถ้าหาก element มีอยู่ แต่ไม่แสดงโปรแกรมจะก็ทำการโยน TimeOutException ออกมา