ให้เรตสมาชิก: 5 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งาน
 

     จากในบทความเรื่อง 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)

ผลลัพธ์

ผลลัพธ์การใช้คำสั่งในการรอ จนกว่า element จะแสดงบนหน้าเว็บ

ผลลัพธ์คำสั่ง visibility_of_element_located

     ผลลัพธ์ที่ออกมานั้น ก็จะเป็นการรอจนกว่า element ที่เรากำหนดแสดงบนหน้าเว็บเพจ ภายในเวลาที่ได้กำหนดเอาไว้นั่นเอง หรือถ้าหาก element มีอยู่ แต่ไม่แสดงโปรแกรมจะก็ทำการโยน TimeOutException ออกมา

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
เอาโฟล์เดอร์ออกยังไงครับ
โดย chakirin.bfds จ 18 ม.ค. 2021 3:26 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
4
จ 18 ม.ค. 2021 3:34 pm โดย mindphp
5 เหตุผลที่ควรจ้างบริษัทรับทำ SEO สำหรับธุรกิจของคุณ !
โดย totheworld จ 18 ม.ค. 2021 2:34 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
2
จ 18 ม.ค. 2021 2:34 pm โดย totheworld
ทางฝุ่น ขรุขระ ลุยไหนลุยกันกับ ยางรถยนต์ 4x4 คุณภาพสูงที่ออกแบบมาให้ถูกใจสายลุย
โดย unyana จ 18 ม.ค. 2021 11:38 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
4
จ 18 ม.ค. 2021 11:38 am โดย unyana
สอบถามคำสั่งดึง IPV6
โดย eange08 จ 18 ม.ค. 2021 11:09 am บอร์ด Programming - PHP
1
16
จ 18 ม.ค. 2021 1:37 pm โดย mindphp
G - สรุปปัญหาการใช้งาน php odbc และ sql server บน ubuntu
โดย tsukasaz ส 21 ก.พ. 2015 2:52 pm บอร์ด Programming - PHP
1
3
อ 22 ก.พ. 2015 2:09 am โดย mindphp
สอบถามคำศัพท์เทคนิค Droplet คืออะไร
โดย Kannaphat ศ 15 ม.ค. 2021 6:16 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
25
อ 17 ม.ค. 2021 4:51 pm โดย mindphp
ต่างกันแค่ไหน? เทียบหมัดต่อหมัด iPhone รุ่นใหม่ล่าสุด กับ iPhone 11
โดย unyana ส 16 ม.ค. 2021 11:47 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
14
ส 16 ม.ค. 2021 11:47 pm โดย unyana
โปรแกรม Kdenlive สามารถ add ไฟล์รูปเข้าไปในโปรแกรมได้ไหมคะ
โดย Kannaphat ส 16 ม.ค. 2021 3:46 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
20
ส 16 ม.ค. 2021 3:57 pm โดย Kannaphat