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

 

             

 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Q - Camtasia ไม่สามารถนำไฟล์เข้ามาตัดต่อได้
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 10:22 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
3
อ 18 ธ.ค. 2018 10:22 am โดย จันนุสรณ์ ดีแก่
Q - รัน localhost แล้วขึ้นแบบนี้ สามารถแก้ด้วยวิธีใดคะ
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 9:35 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
6
อ 18 ธ.ค. 2018 9:35 am โดย จันนุสรณ์ ดีแก่
กดส่งอีเมลในแบบฟอร์มการติดต่อแล้วขึ้น Error 404 Object not found ต้องแก้ไขยังไงครับ
โดย Tewlie Pinsakorn จ 17 ธ.ค. 2018 11:36 pm บอร์ด Joomla Development
0
6
จ 17 ธ.ค. 2018 11:36 pm โดย Tewlie Pinsakorn
วิธีการเพิ่ม BBcode ในเว็บ ปุ่มจัดกลาง
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 6:04 pm บอร์ด phpBB user Guide Knowledge
0
6
จ 17 ธ.ค. 2018 6:04 pm โดย จันนุสรณ์ ดีแก่
BBcode การจัดกึ่งกลาง
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 6:03 pm บอร์ด phpBB user Guide Knowledge
0
9
จ 17 ธ.ค. 2018 6:03 pm โดย จันนุสรณ์ ดีแก่
การค้นหาขั้นสูง
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 4:54 pm บอร์ด phpBB user Guide Knowledge
0
11
จ 17 ธ.ค. 2018 4:54 pm โดย จันนุสรณ์ ดีแก่
อยากได้แอคเซสเข้าสู่หัวใจเธอ
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 2:13 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
12
จ 17 ธ.ค. 2018 2:13 pm โดย จันนุสรณ์ ดีแก่
วิธีการใช้งาน Function preg_match()
โดย Ittichai_chupol จ 17 ธ.ค. 2018 11:29 am บอร์ด PHP Knowledge
0
8
จ 17 ธ.ค. 2018 11:29 am โดย Ittichai_chupol
Joomshopping ไม่สามารถใช้ฟังชั่นก์ส่งเมลได้
โดย Kritsana Leesakul อ 16 ธ.ค. 2018 8:37 pm บอร์ด Joomla Development
8
50
อ 18 ธ.ค. 2018 1:25 am โดย fernn25
วิธีแก้ปัญหาลืมรหัสผ่าน admin ของ Worlpress โดยการเปลี่ยนรหัสด้วย phpMyadmin
โดย mindphp อ 16 ธ.ค. 2018 6:44 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
9
อ 16 ธ.ค. 2018 6:44 pm โดย mindphp
วิธีการใช้งาน Function preg_match_all()
โดย Ittichai_chupol ส 15 ธ.ค. 2018 6:19 pm บอร์ด PHP Knowledge
0
15
ส 15 ธ.ค. 2018 6:19 pm โดย Ittichai_chupol
การสร้างกระดานข่าวในส่วนของผู้ดูแลระบบ
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 4:38 pm บอร์ด phpBB user Guide Knowledge
0
27
ศ 14 ธ.ค. 2018 4:38 pm โดย จันนุสรณ์ ดีแก่
วิธีแก้เมื่อ Phpbb ขึ้นว่า กรุณาลบไดเรกเทอรี หากไดเรกเทอรียังอยู่ใช้ได้แต่ แผงควบคุมเท่านั้น
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 3:39 pm บอร์ด phpBB user Guide Knowledge
0
29
ศ 14 ธ.ค. 2018 3:39 pm โดย จันนุสรณ์ ดีแก่
การค้นหาภายในกระทู้
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 1:54 pm บอร์ด phpBB user Guide Knowledge
0
26
ศ 14 ธ.ค. 2018 1:54 pm โดย จันนุสรณ์ ดีแก่
การค้นหาภายในบอร์ด
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 12:10 pm บอร์ด phpBB user Guide Knowledge
0
32
ศ 14 ธ.ค. 2018 12:10 pm โดย จันนุสรณ์ ดีแก่
การค้นหาจากทั้งหมด
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 11:31 am บอร์ด phpBB user Guide Knowledge
0
28
ศ 14 ธ.ค. 2018 11:31 am โดย จันนุสรณ์ ดีแก่
เมื่อกราฟฟิกดีไซเนอร์อยากจีบสาว
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 10:45 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
36
ศ 14 ธ.ค. 2018 10:45 am โดย จันนุสรณ์ ดีแก่
การตั้งค่าบอร์ด
โดย จันนุสรณ์ ดีแก่ พฤ 13 ธ.ค. 2018 5:07 pm บอร์ด phpBB user Guide Knowledge
0
19
พฤ 13 ธ.ค. 2018 5:07 pm โดย จันนุสรณ์ ดีแก่
ส่งค่า ตัวแปร เปลี่ยนภาษา ไปยัง javascript บน phpbb
โดย Ittichai_chupol พฤ 13 ธ.ค. 2018 4:28 pm บอร์ด PHP Knowledge
0
19
พฤ 13 ธ.ค. 2018 4:28 pm โดย Ittichai_chupol
Styles Orange BBEs
โดย จันนุสรณ์ ดีแก่ พฤ 13 ธ.ค. 2018 3:58 pm บอร์ด phpBB 3.1 Extension Review
0
39
พฤ 13 ธ.ค. 2018 3:58 pm โดย จันนุสรณ์ ดีแก่