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 แก้ตรงไหนครับ'}

 

             

 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
งานประจำวันที่ 20 ตุลาคม 2561
โดย nice_13 ส 20 ต.ค. 2018 10:00 am บอร์ด M071 - พิชญ์สินี คงจร
0
1
ส 20 ต.ค. 2018 10:00 am โดย nice_13
งานประจำวันที่ 20 ตุลาคม 2561
โดย Ittichai_chupol ส 20 ต.ค. 2018 9:39 am บอร์ด M070 - อิทธิชัย ชูผล
0
2
ส 20 ต.ค. 2018 9:39 am โดย Ittichai_chupol
เมื่อ User ถามหางานที่บันทึกไว้จาก IT
โดย tai14 ศ 19 ต.ค. 2018 3:25 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
13
ศ 19 ต.ค. 2018 3:25 pm โดย tai14
โปรเจคทั่วไป VS โปรจคที่มีผลกับโบนัส
โดย tai14 ศ 19 ต.ค. 2018 2:23 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
13
ศ 19 ต.ค. 2018 2:23 pm โดย tai14
งานประจำวันที่ 19 ตุลาคม 2561
โดย prakon ศ 19 ต.ค. 2018 10:03 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
11
ศ 19 ต.ค. 2018 7:05 pm โดย prakon
งานประจำวันที่ 19 ตุลาคม 2561
โดย pprn ศ 19 ต.ค. 2018 9:25 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
1
4
ศ 19 ต.ค. 2018 6:28 pm โดย pprn
งานประจำวันที่ 19 ตุลาคม 2561
โดย Ittichai_chupol ศ 19 ต.ค. 2018 9:09 am บอร์ด M070 - อิทธิชัย ชูผล
1
4
ศ 19 ต.ค. 2018 6:51 pm โดย Ittichai_chupol
งานประจำวันที่ 19 ตุลาคม 2561
โดย tai14 ศ 19 ต.ค. 2018 9:05 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
4
ศ 19 ต.ค. 2018 6:17 pm โดย tai14
งานประจำวันที่ 19 ตุลาคม 2561
โดย tatiya ศ 19 ต.ค. 2018 9:04 am บอร์ด M065 - ตติยะ นาชัย
1
5
ศ 19 ต.ค. 2018 7:01 pm โดย tatiya
งานประจำวันที่ 19 ตุลาคม 2561
โดย nice_13 ศ 19 ต.ค. 2018 8:58 am บอร์ด M071 - พิชญ์สินี คงจร
1
3
ศ 19 ต.ค. 2018 6:37 pm โดย nice_13
Q - วิธีแก้ไข้ error จากการสร้าง extension เพื่อให้แสดง module ที่แถบเมนู ใน PHPBB
โดย Ittichai_chupol พฤ 18 ต.ค. 2018 7:27 pm บอร์ด Programming - PHP
2
25
ศ 19 ต.ค. 2018 2:39 pm โดย Ittichai_chupol
มาดูปัญหาจอคอมที่แผนกไอทีต้องเจอ
โดย tai14 พฤ 18 ต.ค. 2018 6:15 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
26
พฤ 18 ต.ค. 2018 6:15 pm โดย tai14
กดลงทะเบียนสมาชิกหน้าเว็บไม่ได้
โดย Kritsana Leesakul พฤ 18 ต.ค. 2018 6:10 pm บอร์ด Joomla Development
6
31
ศ 19 ต.ค. 2018 2:37 pm โดย Kritsana Leesakul
อยากได้เทมเพลตทำเว็บe-commerce
โดย Kritsana Leesakul พฤ 18 ต.ค. 2018 6:02 pm บอร์ด Joomla Development
1
11
พฤ 18 ต.ค. 2018 11:13 pm โดย mindphp
VDO - รีวิว Module product labels (โมดูล โปรดักส์ เลเบลส์) สำหรับแสดงสินค้าที่ติดป้ายกำกับ
โดย pprn พฤ 18 ต.ค. 2018 5:59 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
4
พฤ 18 ต.ค. 2018 5:59 pm โดย pprn
งานประจำวันที่ 18 ตุลาคม 2561
โดย pprn พฤ 18 ต.ค. 2018 10:11 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
1
9
พฤ 18 ต.ค. 2018 7:12 pm โดย pprn
งานประจำวันที่ 18 ตุลาคม 2561
โดย Ittichai_chupol พฤ 18 ต.ค. 2018 10:08 am บอร์ด M070 - อิทธิชัย ชูผล
1
4
พฤ 18 ต.ค. 2018 7:33 pm โดย Ittichai_chupol
งานประจำวันที่ 18 ตุลาคม 2561
โดย tai14 พฤ 18 ต.ค. 2018 10:04 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
8
พฤ 18 ต.ค. 2018 7:27 pm โดย tai14
VDO - วิธีการแปลงไฟล์ไพธอนเป็นไฟล์ .exe
โดย prakon พฤ 18 ต.ค. 2018 10:04 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
9
ศ 19 ต.ค. 2018 10:43 am โดย prakon
งานประจำวันที่ 18 ตุลาคม 2561
โดย prakon พฤ 18 ต.ค. 2018 10:00 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
12
พฤ 18 ต.ค. 2018 7:18 pm โดย prakon