selenium

                Selenium (ซิลิเนี่ยม) เป็น Software Testing Framework (ซอฟแวร์ เทสติ้ง เฟรมเวิร์ค) ที่มีประสิทธิภาพดีตัวหนึ่งในปัจจุบัน ซึ่งเอาไว้ใช้สำหรับทำ Automated Testing (ออโต้เมท เทสติ้ง) หรือพูดง่ายๆคือเราสามารถควบคุมหน้าเว็บได้โดยการเขียนโปรแกรม ซึ่งในPython คืออะไร ไพธอนได้มีโมดูล Selenium (ซิลิเนียม) รองรับแล้ว ซึ่งเป็น Open source (โอเพ่น ซอส) หรือ ฟรีนั่นเอง อีกทั้งยังสามารถรันได้ในหลายๆระบบปฏิบัติการเช่น วินโดวส์ ลินุกซ์ 

 

ตัวแปรประเภทดิคชันนารี่ในภาษาไพธอนคืออะไร?

                  Dictionary (ดิคชันนารี) คือประเภทข้อมูลที่เก็บข้อมูลในรูปแบบคู่ของ Key (คีย์) และ Value (แวลู) โดยที่ Key (คีย์) ใช้สำหรับเป็น Index (อินเดกซ์) ในการเข้าถึงข้อมูลและ Value เป็นค่าข้อมูลที่สอดคล้องกับ Key ของมัน  หรือจะพูดง่ายๆมันก็คือการที่เราสามารถใส่ข้อมูล 2 ตัวในแหน่งเดียวกันได้ ซึ่งการเข้าถึงข้อมูลในตัวแปรประเภท Dictionary นั้นรวดเร็วเพราะว่าข้อมูลได้ถูกทำ Index  (อินเดกซ์) ไว้อัตโนมัติโดยใช้ Key (คีย์) นอกจากนี้ตัวแปรประเภท Dictionary (ดิคชันนารี) ยังมีเมธอดและฟังก์ชัน built in (บิ๊วอิน) อำนวยความสะดวกสำหรับการทำงานทั่วไปอีกด้วย

 

ตัวอย่างการใช้ตัวแปรดิคชันนารีเพื่อเก็บลิงค์และไตเติ้ลที่ได้จากการใช้งานโมดูลซิลิเนียม

                1.เปิดหน้าเว็บที่เราต้องการเก็บไตเติ้ลและลิงค์ขึ้นมาและทำการใช้เช็คโครงสร้างในที่นี้ใช้ XPath ในการเข้าถึงโครงสร้างของไตเติ้ล

 

             2.เขียนโปรแกรมดังนี้

from selenium import webdriver
import time
driver = webdriver.Firefox(executable_path=r'C:\Users\BDC-CLUB\PycharmProjects\mdsoft\geckodriver.exe')
driver.get('http://www.mindphp.com/forums/viewforum.php?f=6') #เปิดหน้าเว้บที่ต้องการเก็บลิงค์และไตเติ้ล
xpath_topic= "//a[@class='topictitle']" #x path ของไตเติ้ล
time.sleep(3)
all_ids_topic = driver.find_elements_by_xpath(xpath_topic) #เก็บ sessionและelementไว้ในตัวแปร
print(all_ids_topic)
save_link = {} #กำหนดตัวแปรประเภาดิคชันนารี่
for i in all_ids_topic: #ลูปการเก็บลิงค์และไตเเติ้ล
    save_link[i.get_attribute('href')] = i.text
print(save_link) #ปริ้นไตเติ้ลและลิงค์

            ผลการรัน: บรรทัดด้านล่าง ซ้ายมือเป็นลิงคืของไตเติ้ล ด้านขวาเป็นไตเติ้ล

[<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="ccb27e92-0426-4353-9aba-7d808b06c29e")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="84c7742a-f578-40c5-b58d-1654fe5c2741")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="fd21c61c-589b-4f3f-a14e-ee0220e975d1")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="78022d09-8905-4773-8cf4-f86e3cc2ad1f")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="579c7e24-29a4-4a1c-987e-f8749e9a54e3")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="64a63691-1b37-4f20-b744-1bfec7afd474")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="30b2a810-62cb-43d0-bf6d-bf4ee2cf1f1f")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="0c14d1ac-d5a8-47f3-ba98-a7cb919b5d01")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="c512751e-27d0-4621-87f2-ec4c462c582d")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="689fe5fa-9426-4b04-9f74-6726cba475ce")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="3cb26a0a-4896-4715-bf17-7d366701084b")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="217eb422-7bc6-439d-a05f-afed9766f484")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="e71e36bf-389a-4d41-9683-82b117738852")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="39313e11-6379-43c5-9f66-b8d69f47e758")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="d0937951-c6af-4015-8069-67652d01c7f9")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="d8555745-45c9-4437-b8b0-324155141a01")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="7684a942-2c39-4ce1-9b74-d85a5c51ce42")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="a1643573-d65e-46d8-9826-96bf55960aea")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="8cacd564-953e-4885-af5a-7c275c0cdd2c")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="de691ac7-694d-4f09-b324-a960daf2a75c")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="0b17442f-6cba-48f4-8131-7ba2e704cf39")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="c35ba66e-4524-4bb1-b76b-9e0ac9433581")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="399630ee-311d-40aa-b4b5-1e99af7c78a3")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="7025a27d-86cf-4504-8e49-318113c44aaf")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="2cd3512e-3729-462d-98a5-ac454369e742")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b895d3a-71b5-485e-853d-77d6a443adbe", element="a04281f3-0c69-4c13-86f2-2738d032e444")>]
{'http://www.mindphp.com/forums/viewtopic.php?f=6&t=2518&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'รับเขียน module, component รับทำ สอน ทำธีม tempalte Joomla พัฒนาโปรแกรม CRM HR', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=2042&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'รับสอน ที่ปรึกษา php สอนเขียนเว็บ เขียนโปรแกรม รับจ้างทำเว็บ On-site training', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49549&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'เปรียบเทียบ isset() vs empty() vs is_null()', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49548&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'ตัวอย่างฟังก์ชัน array ภาษา php', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49547&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'เว็บเซอร์วิส คือ อะไร', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49517&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'Input textboxเป็นโค้ด Shift-JIS', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49514&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'input type=date จัดเก็บเป็นสตริง', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49513&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'เลือกค่าSelectจากฟิลด์ID ให้Auto แสดงผลลัพธ์Name ที่สอดคล้องกัน', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49512&sid=25e95c385c39ded9cdb96e3e8bc8209c': '[PHP] รวมค่าinputจากหน้าฟอร์ม ตามDigit ที่กำหนด', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49453&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถามการหาค่า เดือนกับปีครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49134&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถามเรื่องการแสดงค่าหน่อย', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49399&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถามวิธีการรับค่าตัวแปรจากหน้าอื่นค่ะ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49366&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถามวิธีการเก็บค่า ip address ค่ะ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49358&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถามวิธีใส่ recaptcha ค่ะ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49338&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'ผมจะใช้ ele IF ยังไงดีครับ กรณีแบบนี้ยังไงครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49230&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถาม error แบบนี้ครับ You have an error in your SQL syntax', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49218&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถามคำสั่ง insert + update ลง sql ครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=2669&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'ถามเรื่องคำสั่งในการนับคนคลิกครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49201&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถาม วิธีลบข้อมูลเดิมออกจาก Git หน่อยครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49190&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'error แบบนี้ครับ Notice: Undefined index: member_id', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49178&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'เราจะส่งค่าไปบันทึกยังไงครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49136&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'ช่วยแนะนำ mysqli หน่อยครับ จะเปลี่ยนยังไงครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49112&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'Q - ไม่สามารถอัพไฟล์ขึ้น git lab ได้', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49110&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'สอบถามการเขียน batch file หน่อยครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49084&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'ทำการกด edit ภาพแล้ว ทำยังไงให้ไปทับภาพเดิมหรือลบภาพเดิมครับ', 'http://www.mindphp.com/forums/viewtopic.php?f=6&t=49076&sid=25e95c385c39ded9cdb96e3e8bc8209c': 'มี Error mysqli_query() expects at least 2 parameters, 1 given แก้ตรงไหนครับ'}

 

             

 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
บอร์ด UNO R3 แบบ SMD ราคาต่ำกว่าสองร้อย
โดย mindphp อ 31 ธ.ค. 2023 8:04 pm บอร์ด IOT - Internet of things
1
1462
อ 31 ธ.ค. 2023 8:06 pm โดย mindphp View Topic บอร์ด UNO R3 แบบ SMD  ราคาต่ำกว่าสองร้อย
แนะนำ ISD1820 โมดูลบันทึกเสียง Arduino ใช้ได้กับ ESP8266 ESP32
โดย mindphp อ 31 ธ.ค. 2023 8:02 pm บอร์ด IOT - Internet of things
0
1437
อ 31 ธ.ค. 2023 8:02 pm โดย mindphp View Topic แนะนำ ISD1820 โมดูลบันทึกเสียง Arduino ใช้ได้กับ ESP8266 ESP32
ทำไมทำ Wordpress บน localwp มันช้าครับ ช้ากว่าทำบนโฮสต์จริง
โดย Anonymous อ 31 ธ.ค. 2023 4:20 pm บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
0
429
อ 31 ธ.ค. 2023 4:20 pm โดย บุคคลทั่วไป View Topic ทำไมทำ Wordpress บน localwp มันช้าครับ ช้ากว่าทำบนโฮสต์จริง
ลดหย่อนภาษีได้ปี 67 สูงสุด 50,000 มีเงือนไขอย่างไรมาดุ
โดย Anonymous อ 31 ธ.ค. 2023 10:37 am บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
434
อ 31 ธ.ค. 2023 10:37 am โดย บุคคลทั่วไป View Topic ลดหย่อนภาษีได้ปี 67 สูงสุด 50,000 มีเงือนไขอย่างไรมาดุ
เซ็นเซอร์ตรวจจับเสียง เอาไปใช้ทำอะไรได้บ้าง ทำโปรเจ็ค IOT
โดย Anonymous ส 30 ธ.ค. 2023 4:28 am บอร์ด IOT - Internet of things
2
833
ส 30 ธ.ค. 2023 10:48 pm โดย mindphp View Topic เซ็นเซอร์ตรวจจับเสียง เอาไปใช้ทำอะไรได้บ้าง ทำโปรเจ็ค IOT
มีเว็บที่เปิดเป็น localhost ใช้งานได้อยู่ มีวิธีไหนบ้างครับ ที่จะทำให้คนเข้าถึงออนไลน์ได้
โดย Anonymous ส 30 ธ.ค. 2023 4:18 am บอร์ด Programming - PHP
1
402
ส 30 ธ.ค. 2023 10:47 pm โดย mindphp View Topic มีเว็บที่เปิดเป็น localhost ใช้งานได้อยู่ มีวิธีไหนบ้างครับ ที่จะทำให้คนเข้าถึงออนไลน์ได้
ในฐานะผู้ดูแลระบบ (System Administrator) ก่อนเข้าช่วงหยุดยาว เตรียมตัวแบบนี้เพื่อให้หยุดได้อย่างไร้กังวน
โดย mindphp พฤ 28 ธ.ค. 2023 12:20 pm บอร์ด Linux - Web Server
0
619
พฤ 28 ธ.ค. 2023 12:20 pm โดย mindphp View Topic ในฐานะผู้ดูแลระบบ (System Administrator) ก่อนเข้าช่วงหยุดยาว เตรียมตัวแบบนี้เพื่อให้หยุดได้อย่างไร้กังวน
แก้ปัญหา Google Chrome เข้าหน้าเว็บไม่ได้ขึ้น ERROR SSL Key แต่ใช้ browser ตัวอื่นเข้าได้หมด
โดย mindphp พฤ 28 ธ.ค. 2023 7:11 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
362
พฤ 28 ธ.ค. 2023 7:11 am โดย mindphp View Topic แก้ปัญหา Google Chrome เข้าหน้าเว็บไม่ได้ขึ้น ERROR SSL Key แต่ใช้ browser ตัวอื่นเข้าได้หมด