บทความนี้จะแสดงวิธีตั้งค่า Selenium บน Linux distribution ของคุณ (เช่น Ubuntu) รวมถึงวิธีดำเนินการเว็บอัตโนมัติขั้นพื้นฐานและการแยกเว็บด้วยไลบรารี Selenium Python 3
ข้อกำหนดเบื้องต้น
หากต้องการลองใช้คำสั่งและตัวอย่างที่ใช้ในบทความนี้ คุณต้องมีสิ่งต่อไปนี้:
1) การแจกจ่าย Linux (ควรเป็น Ubuntu) ที่ติดตั้งบนคอมพิวเตอร์ของคุณ
2) Python 3 ติดตั้งบนคอมพิวเตอร์ของคุณ
3) PIP 3 ติดตั้งบนคอมพิวเตอร์ของคุณ
4) เว็บเบราว์เซอร์ Google Chrome หรือ Firefox ที่ติดตั้งบนคอมพิวเตอร์ของคุณ
คุณสามารถค้นหาบทความมากมายเกี่ยวกับหัวข้อเหล่านี้ได้ที่ LinuxHint.com . อย่าลืมตรวจสอบบทความเหล่านี้หากต้องการความช่วยเหลือเพิ่มเติม
การเตรียม Python 3 Virtual Environment สำหรับโครงการ
Python Virtual Environment ใช้เพื่อสร้างไดเร็กทอรีโครงการ Python ที่แยกออกมา โมดูล Python ที่คุณติดตั้งโดยใช้ PIP จะถูกติดตั้งในไดเร็กทอรีโครงการเท่านั้น แทนที่จะติดตั้งทั่วโลก
งูหลาม virtualenv โมดูลใช้เพื่อจัดการสภาพแวดล้อมเสมือนของ Python
คุณสามารถติดตั้ง Python virtualenv โมดูลทั่วโลกโดยใช้ PIP 3 ดังนี้:
$ sudo pip3 ติดตั้ง virtualenvPIP3 จะดาวน์โหลดและติดตั้งโมดูลที่จำเป็นทั้งหมดทั่วโลก
ณ จุดนี้ Python virtualenv ควรติดตั้งโมดูลทั่วโลก
สร้างไดเร็กทอรีโครงการ หลาม-ซีลีเนียมพื้นฐาน/ ในไดเร็กทอรีการทำงานปัจจุบันของคุณดังนี้:
$ mkdir -pv python-selenium-basic/driversไปที่ไดเร็กทอรีโครงการที่สร้างขึ้นใหม่ของคุณ หลาม-ซีลีเนียมพื้นฐาน/ ดังต่อไปนี้
$ซีดีหลาม-ซีลีเนียมพื้นฐาน/สร้างสภาพแวดล้อมเสมือน Python ในไดเร็กทอรีโครงการของคุณด้วยคำสั่งต่อไปนี้:
$ virtualenv.สิ่งแวดล้อมตอนนี้ควรสร้างสภาพแวดล้อมเสมือน Python ในไดเรกทอรีโครงการของคุณ
เปิดใช้งานสภาพแวดล้อมเสมือน Python ในไดเร็กทอรีโครงการของคุณโดยใช้คำสั่งต่อไปนี้:
$ ที่มาสิ่งแวดล้อม/bin/เปิดใช้งานอย่างที่คุณเห็น สภาพแวดล้อมเสมือนของ Python ถูกเปิดใช้งานสำหรับไดเร็กทอรีโครงการนี้
การติดตั้ง Selenium Python Library
ไลบรารี Selenium Python มีอยู่ในที่เก็บ Python PyPI อย่างเป็นทางการ
คุณสามารถติดตั้งไลบรารีนี้โดยใช้ PIP 3 ได้ดังนี้:
$ pip3 ติดตั้งซีลีเนียมตอนนี้ควรติดตั้งไลบรารี Selenium Python
เมื่อติดตั้งไลบรารี Selenium Python แล้ว สิ่งต่อไปที่คุณต้องทำคือติดตั้งไดรเวอร์เว็บสำหรับเว็บเบราว์เซอร์ที่คุณชื่นชอบ ในบทความนี้ ฉันจะแสดงวิธีการติดตั้งไดรเวอร์เว็บ Firefox และ Chrome สำหรับ Selenium
การติดตั้งไดรเวอร์ Firefox Gecko
ไดรเวอร์ Firefox Gecko ช่วยให้คุณควบคุมหรือทำให้เว็บเบราว์เซอร์ Firefox เป็นอัตโนมัติโดยใช้ Selenium
หากต้องการดาวน์โหลดไดรเวอร์ Firefox Gecko ให้ไปที่ GitHub ออกหน้า mozilla/geckodriver จากเว็บเบราว์เซอร์
อย่างที่คุณเห็น v0.26.0 เป็นเวอร์ชันล่าสุดของไดรเวอร์ Firefox Gecko ในขณะที่เขียนบทความนี้
ในการดาวน์โหลดไดรเวอร์ Firefox Gecko ให้เลื่อนลงมาเล็กน้อยแล้วคลิกที่ไฟล์เก็บถาวร Linux geckodriver tar.gz ขึ้นอยู่กับสถาปัตยกรรมระบบปฏิบัติการของคุณ
หากคุณกำลังใช้ระบบปฏิบัติการ 32 บิต ให้คลิกที่ geckodriver-v0.26.0-linux32.tar.gz ลิงค์
หากคุณกำลังใช้ระบบปฏิบัติการ 64 บิต ให้คลิกที่ geckodriver-v0.26.0-linuxx64.tar.gz ลิงค์
ในกรณีของฉัน ฉันจะดาวน์โหลดไดรเวอร์ Firefox Gecko รุ่น 64 บิต
เบราว์เซอร์ของคุณควรแจ้งให้คุณบันทึกไฟล์เก็บถาวร เลือก บันทึกไฟล์ แล้วคลิก ตกลง .
ควรดาวน์โหลดไฟล์เก็บถาวรไดรเวอร์ Firefox Gecko ในไฟล์ ~/ดาวน์โหลด ไดเรกทอรี
สกัด geckodriver-v0.26.0-linux64.tar.gz เก็บถาวรจาก ~/ดาวน์โหลด ไดเรกทอรีไปยัง คนขับรถ/ ไดเร็กทอรีของโครงการของคุณโดยป้อนคำสั่งต่อไปนี้:
$ทาร์ -xzf~/ดาวน์โหลด/geckodriver-v0.26.0-linux64.tar.gz-คคนขับรถ/
เมื่อแตกไฟล์เก็บถาวรของไดรเวอร์ Firefox Gecko แล้ว ไฟล์ใหม่ คนขับตุ๊กแก ควรสร้างไฟล์ไบนารีใน คนขับรถ/ ไดเร็กทอรีของโครงการของคุณ ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
การทดสอบไดรเวอร์ Selenium Firefox Gecko
ในส่วนนี้ ฉันจะแสดงวิธีตั้งค่าสคริปต์ Selenium Python ตัวแรกของคุณเพื่อทดสอบว่าไดรเวอร์ Firefox Gecko ทำงานหรือไม่
ขั้นแรก เปิดไดเร็กทอรีโครงการ หลาม-ซีลีเนียมพื้นฐาน/ ด้วย IDE หรือตัวแก้ไขที่คุณชื่นชอบ ในบทความนี้ ฉันจะใช้ Visual Studio Code
สร้างสคริปต์ Python ใหม่ ex01.py และพิมพ์บรรทัดต่อไปนี้ในสคริปต์
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
จาก เวลา นำเข้านอน
เบราว์เซอร์=ไดรเวอร์เว็บFirefox(executable_path='./drivers/geckodriver')
เบราว์เซอร์รับ('http://www.google.com')
นอน(5)
เบราว์เซอร์ล้มเลิก()
เมื่อเสร็จแล้วให้บันทึก ex01.py สคริปต์ไพทอน
ฉันจะอธิบายรหัสในส่วนหลังของบทความนี้
บรรทัดต่อไปนี้กำหนดค่าซีลีเนียมให้ใช้ไดรเวอร์ Firefox Gecko จาก คนขับรถ/ ไดเรกทอรีของโครงการของคุณ
หากต้องการทดสอบว่าไดรเวอร์ Firefox Gecko ทำงานร่วมกับ Selenium ได้หรือไม่ ให้รันคำสั่งต่อไปนี้ ex01.py สคริปต์หลาม:
$ python3 ex01.พายเว็บเบราว์เซอร์ Firefox ควรไปที่ Google.com โดยอัตโนมัติและปิดตัวเองหลังจาก 5 วินาที หากสิ่งนี้เกิดขึ้น แสดงว่าไดรเวอร์ Selenium Firefox Gecko ทำงานอย่างถูกต้อง
การติดตั้งไดรเวอร์เว็บ Chrome
ไดรเวอร์เว็บ Chrome ช่วยให้คุณควบคุมหรือทำให้เว็บเบราว์เซอร์ Google Chrome เป็นอัตโนมัติโดยใช้ซีลีเนียม
คุณต้องดาวน์โหลด Chrome Web Driver เวอร์ชันเดียวกับเว็บเบราว์เซอร์ Google Chrome ของคุณ
หากต้องการค้นหาหมายเลขเวอร์ชันของเว็บเบราว์เซอร์ Google Chrome ของคุณ โปรดไปที่ chrome://settings/help ใน Google Chrome หมายเลขเวอร์ชันควรอยู่ใน เกี่ยวกับ Chrome ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
ในกรณีของฉัน หมายเลขเวอร์ชันคือ 83.0.4103.116 . สามส่วนแรกของหมายเลขเวอร์ชัน ( 83.0.4103 ในกรณีของฉัน) ต้องตรงกับสามส่วนแรกของหมายเลขเวอร์ชันของไดรเวอร์เว็บ Chrome
หากต้องการดาวน์โหลด Chrome Web Driver ให้ไปที่ หน้าดาวน์โหลดไดรเวอร์ Chrome อย่างเป็นทางการ .
ใน ผลงานปัจจุบัน ส่วน Chrome Web Driver สำหรับรุ่นล่าสุดของเว็บเบราว์เซอร์ Google Chrome จะพร้อมใช้งาน ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
หากเวอร์ชันของ Google Chrome ที่คุณใช้ไม่อยู่ใน ผลงานปัจจุบัน เลื่อนลงมาเล็กน้อยแล้วคุณจะพบเวอร์ชันที่คุณต้องการ
เมื่อคุณคลิกเวอร์ชัน Chrome Web Driver ที่ถูกต้อง ระบบควรนำคุณไปยังหน้าต่อไปนี้ คลิกที่ chromedriver_linux64.zip ตามที่ระบุไว้ในภาพหน้าจอด้านล่าง
ควรดาวน์โหลดไฟล์เก็บถาวรของ Chrome Web Driver แล้ว
ตอนนี้ควรดาวน์โหลดไฟล์เก็บถาวรของ Chrome Web Driver ใน ~/ดาวน์โหลด ไดเรกทอรี
คุณสามารถแยก chromedriver-linux64.zip เก็บถาวรจาก ~/ดาวน์โหลด ไดเรกทอรีไปยัง คนขับรถ/ ไดเร็กทอรีของโครงการของคุณด้วยคำสั่งต่อไปนี้:
$ เปิดเครื่องรูด~/ดาวน์โหลด/chromedriver_linux64.zip-d ไดรเวอร์/
เมื่อแตกไฟล์เก็บถาวรของ Chrome Web Driver แล้ว ไฟล์ใหม่ chromedriver ควรสร้างไฟล์ไบนารีใน คนขับรถ/ ไดเร็กทอรีของโครงการของคุณ ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
การทดสอบ Selenium Chrome Web Driver
ในส่วนนี้ ฉันจะแสดงวิธีตั้งค่าสคริปต์ Selenium Python ตัวแรกของคุณเพื่อทดสอบว่า Chrome Web Driver ทำงานหรือไม่
ขั้นแรก สร้างสคริปต์ Python ใหม่ ex02.py และพิมพ์รหัสบรรทัดต่อไปนี้ในสคริปต์
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
จาก เวลา นำเข้านอน
เบราว์เซอร์=ไดรเวอร์เว็บโครเมียม(executable_path='./drivers/chromedriver')
เบราว์เซอร์รับ('http://www.google.com')
นอน(5)
เบราว์เซอร์ล้มเลิก()
เมื่อเสร็จแล้วให้บันทึก ex02.py สคริปต์ไพทอน
ฉันจะอธิบายรหัสในส่วนหลังของบทความนี้
บรรทัดต่อไปนี้กำหนดค่าซีลีเนียมให้ใช้ Chrome Web Driver จาก คนขับรถ/ ไดเรกทอรีของโครงการของคุณ
หากต้องการทดสอบว่า Chrome Web Driver ทำงานร่วมกับ Selenium ได้หรือไม่ ให้เรียกใช้ ex02.py สคริปต์ Python ดังต่อไปนี้:
$ python3 ex01.พายเว็บเบราว์เซอร์ Google Chrome ควรไปที่ Google.com โดยอัตโนมัติและปิดตัวเองหลังจาก 5 วินาที หากสิ่งนี้เกิดขึ้น แสดงว่าไดรเวอร์ Selenium Firefox Gecko ทำงานอย่างถูกต้อง
พื้นฐานของการขูดเว็บด้วยซีลีเนียม
ฉันจะใช้เว็บเบราว์เซอร์ Firefox ต่อจากนี้ไป คุณยังสามารถใช้ Chrome ได้หากต้องการ
สคริปต์ Selenium Python พื้นฐานควรมีลักษณะเหมือนสคริปต์ที่แสดงในภาพหน้าจอด้านล่าง
ขั้นแรกให้นำเข้าซีลีเนียม ไดรเวอร์เว็บ จาก ซีลีเนียม โมดูล.
ถัดไป นำเข้า กุญแจ จาก selenium.webdriver.common.keys . ซึ่งจะช่วยให้คุณส่งการกดแป้นบนแป้นพิมพ์ไปยังเบราว์เซอร์ที่คุณทำให้อัตโนมัติจากซีลีเนียม
บรรทัดต่อไปนี้สร้าง a เบราว์เซอร์ วัตถุสำหรับเว็บเบราว์เซอร์ Firefox โดยใช้ไดรเวอร์ Firefox Gecko (Webdriver) คุณสามารถควบคุมการทำงานของเบราว์เซอร์ Firefox โดยใช้วัตถุนี้
ในการโหลดเว็บไซต์หรือ URL (ฉันจะโหลดเว็บไซต์ https://www.duckduckgo.com ) เรียก รับ() วิธีการของ เบราว์เซอร์ วัตถุบนเบราว์เซอร์ Firefox ของคุณ
เมื่อใช้ซีลีเนียม คุณสามารถเขียนการทดสอบ ทำการสแครปเว็บ และสุดท้าย ปิดเบราว์เซอร์โดยใช้ ล้มเลิก() วิธีการของ เบราว์เซอร์ วัตถุ.
ด้านบนคือเลย์เอาต์พื้นฐานของสคริปต์ Selenium Python คุณจะเขียนบรรทัดเหล่านี้ในสคริปต์ Selenium Python ทั้งหมดของคุณ
ตัวอย่างที่ 1: การพิมพ์ชื่อเว็บเพจ
นี่จะเป็นตัวอย่างที่ง่ายที่สุดที่กล่าวถึงโดยใช้ซีลีเนียม ในตัวอย่างนี้ เราจะพิมพ์ชื่อหน้าเว็บที่เราจะไปเยี่ยมชม
สร้างไฟล์ใหม่ ex04.py และพิมพ์รหัสบรรทัดต่อไปนี้ลงไป
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
เบราว์เซอร์=ไดรเวอร์เว็บFirefox(executable_path='./drivers/geckodriver')
เบราว์เซอร์รับ('https://www.duckduckgo.com')
พิมพ์('ชื่อ: %s'% เบราว์เซอร์ชื่อ)
เบราว์เซอร์ล้มเลิก()
เมื่อเสร็จแล้วให้บันทึกไฟล์
ที่นี่ browser.title ใช้เพื่อเข้าถึงชื่อของหน้าเว็บที่เข้าชมและ พิมพ์() ฟังก์ชันจะใช้พิมพ์ชื่อเรื่องในคอนโซล
หลังจากวิ่ง ex04.py สคริปต์ควร:
1) เปิด Firefox
2) โหลดหน้าเว็บที่คุณต้องการ
3) ดึงชื่อหน้า
4) พิมพ์ชื่อบนคอนโซล
5) และสุดท้าย ปิดเบราว์เซอร์
อย่างที่คุณเห็น ex04.py สคริปต์ได้พิมพ์ชื่อหน้าเว็บไว้อย่างสวยงามในคอนโซล
$ python3 ex04.พายตัวอย่างที่ 2: การพิมพ์ชื่อเรื่องของหน้าเว็บหลายหน้า
ในตัวอย่างก่อนหน้านี้ คุณสามารถใช้วิธีเดียวกันในการพิมพ์ชื่อหน้าเว็บหลายหน้าโดยใช้ Python loop
เพื่อให้เข้าใจวิธีการทำงาน ให้สร้างสคริปต์ Python ใหม่ ex05.py และพิมพ์รหัสบรรทัดต่อไปนี้ในสคริปต์:
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
เบราว์เซอร์=ไดรเวอร์เว็บFirefox(executable_path='./drivers/geckodriver')
urls= ['https://www.duckduckgo.com', 'https://linuxhint.com', 'https://yahoo.com']
สำหรับurlในURL:
เบราว์เซอร์รับ(url)
พิมพ์('ชื่อ: %s'% เบราว์เซอร์ชื่อ)
เบราว์เซอร์ล้มเลิก()
เมื่อเสร็จแล้ว ให้บันทึกสคริปต์ Python ex05.py .
ที่นี่ urls รายการเก็บ URL ของแต่ละหน้าเว็บ
ถึง สำหรับ วนซ้ำใช้เพื่อวนซ้ำผ่าน urls รายการ
ในการทำซ้ำแต่ละครั้ง Selenium จะบอกเบราว์เซอร์ให้ไปที่ url และรับชื่อหน้าเว็บ เมื่อซีลีเนียมแยกชื่อหน้าเว็บแล้ว ชื่อนั้นจะถูกพิมพ์ในคอนโซล
เรียกใช้สคริปต์ Python ex05.py และคุณควรเห็นชื่อของแต่ละหน้าเว็บใน urls รายการ.
$ python3 ex05.พายนี่คือตัวอย่างวิธีที่ซีลีเนียมสามารถทำงานเดียวกันกับหน้าเว็บหรือเว็บไซต์หลายหน้าได้
ตัวอย่างที่ 3: การดึงข้อมูลจากเว็บเพจ
ในตัวอย่างนี้ ฉันจะแสดงให้คุณเห็นถึงพื้นฐานของการดึงข้อมูลจากหน้าเว็บโดยใช้ Selenium สิ่งนี้เรียกอีกอย่างว่าการขูดเว็บ
ขั้นแรก ให้ไปที่ Random.org ลิงค์จากไฟร์ฟอกซ์ หน้าควรสร้างสตริงแบบสุ่ม ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
ในการดึงข้อมูลสตริงแบบสุ่มโดยใช้ซีลีเนียม คุณต้องทราบการแสดง HTML ของข้อมูลด้วย
หากต้องการดูว่าข้อมูลสตริงสุ่มแสดงในรูปแบบ HTML อย่างไร ให้เลือกข้อมูลสตริงแบบสุ่มแล้วกดปุ่มเมาส์ขวา (RMB) แล้วคลิก ตรวจสอบองค์ประกอบ (Q) ตามที่ระบุไว้ในภาพหน้าจอด้านล่าง
การแสดง HTML ของข้อมูลควรแสดงใน สารวัตร อย่างที่คุณเห็นในภาพหน้าจอด้านล่าง
นอกจากนี้คุณยังสามารถคลิกที่ ตรวจสอบไอคอน ( ) เพื่อตรวจสอบข้อมูลจากเพจ
คลิกไอคอนตรวจสอบ ( ) แล้ววางเมาส์เหนือข้อมูลสตริงแบบสุ่มที่คุณต้องการแยก การแสดงข้อมูล HTML ควรจะแสดงเหมือนเดิม
อย่างที่คุณเห็น ข้อมูลสตริงแบบสุ่มถูกห่อด้วย HTML สำหรับ แท็กและมีคลาส ข้อมูล .
ตอนนี้เราทราบการแสดง HTML ของข้อมูลที่เราต้องการแยกแล้ว เราจะสร้างสคริปต์ Python เพื่อดึงข้อมูลโดยใช้ Selenium
สร้างสคริปต์ Python ใหม่ ex06.py และพิมพ์รหัสบรรทัดต่อไปนี้ในสคริปต์
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
เบราว์เซอร์=ไดรเวอร์เว็บFirefox(executable_path='./drivers/geckodriver')
เบราว์เซอร์รับ('https://www.random.org/strings/?num=1&len=20&digits
=on&upperalpha=on&loweralpha=on&unique=on&format=html&rnd=new')
dataElement=เบราว์เซอร์find_element_by_css_selector('ข้อมูลล่วงหน้า')
พิมพ์(ข้อมูลองค์ประกอบข้อความ)
เบราว์เซอร์ล้มเลิก()
เมื่อเสร็จแล้วให้บันทึก ex06.py สคริปต์ไพทอน
ที่นี่ browser.get() วิธีการโหลดหน้าเว็บในเบราว์เซอร์ Firefox
NS browser.find_element_by_css_selector() วิธีค้นหารหัส HTML ของหน้าสำหรับองค์ประกอบที่ระบุและส่งคืน
ในกรณีนี้องค์ประกอบจะเป็น pre.data , NS สำหรับ แท็กที่มีชื่อคลาส ข้อมูล .
ใต้ pre.data องค์ประกอบถูกเก็บไว้ใน dataElement ตัวแปร.
สคริปต์จะพิมพ์เนื้อหาข้อความที่เลือก pre.data ธาตุ.
หากคุณเรียกใช้ ex06.py สคริปต์ Python ควรดึงข้อมูลสตริงแบบสุ่มจากหน้าเว็บดังที่คุณเห็นในภาพหน้าจอด้านล่าง
$ python3 ex06.พายอย่างที่คุณเห็น ทุกครั้งที่ฉันเรียกใช้ ex06.py สคริปต์ Python จะดึงข้อมูลสตริงสุ่มที่แตกต่างจากหน้าเว็บ
ตัวอย่างที่ 4: การแยกรายการข้อมูลจากหน้าเว็บ
ตัวอย่างก่อนหน้านี้แสดงวิธีการแยกองค์ประกอบข้อมูลเดียวจากหน้าเว็บโดยใช้ซีลีเนียม ในตัวอย่างนี้ ฉันจะแสดงวิธีใช้ Selenium เพื่อดึงรายการข้อมูลจากหน้าเว็บ
ขั้นแรก ให้ไปที่ random-name-generator.info จากเว็บเบราว์เซอร์ Firefox ของคุณ เว็บไซต์นี้จะสร้างชื่อสุ่มสิบชื่อทุกครั้งที่คุณโหลดหน้าซ้ำ ดังที่คุณเห็นในภาพหน้าจอด้านล่าง เป้าหมายของเราคือดึงชื่อแบบสุ่มเหล่านี้โดยใช้ซีลีเนียม
หากตรวจสอบรายชื่อให้ละเอียดยิ่งขึ้นจะเห็นว่าเป็นรายการที่เรียงลำดับ ( ตาย แท็ก) NS ตาย แท็กยังรวมถึงชื่อคลาส ชื่อรายการ . แต่ละชื่อสุ่มจะแสดงเป็นรายการ ( ที่ แท็ก) ภายใน ตาย แท็ก
หากต้องการแยกชื่อสุ่มเหล่านี้ ให้สร้างสคริปต์ Python ใหม่ ex07.py และพิมพ์รหัสบรรทัดต่อไปนี้ในสคริปต์
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
เบราว์เซอร์=ไดรเวอร์เว็บFirefox(executable_path='./drivers/geckodriver')
เบราว์เซอร์รับ('http://random-name-generator.info/')
ชื่อรายการ=เบราว์เซอร์find_elements_by_css_selector('ol.nameList ลี')
สำหรับชื่อในรายชื่อ:
พิมพ์(ชื่อ.ข้อความ)
เบราว์เซอร์ล้มเลิก()
เมื่อเสร็จแล้วให้บันทึก ex07.py สคริปต์ไพทอน
ที่นี่ browser.get() วิธีโหลดหน้าเว็บตัวสร้างชื่อแบบสุ่มในเบราว์เซอร์ Firefox
NS browser.find_elements_by_css_selector() เมธอดใช้ตัวเลือก CSS ol.nameList li เพื่อค้นหาทั้งหมด ที่ องค์ประกอบภายใน ตาย แท็กที่มีชื่อคลาส ชื่อรายการ . ฉันเก็บรายการที่เลือกไว้ทั้งหมดแล้ว ที่ องค์ประกอบใน ชื่อรายการ ตัวแปร.
ถึง สำหรับ วนซ้ำใช้เพื่อวนซ้ำผ่าน ชื่อรายการ รายการของ ที่ องค์ประกอบ ในการทำซ้ำแต่ละครั้งเนื้อหาของ ที่ องค์ประกอบถูกพิมพ์บนคอนโซล
หากคุณเรียกใช้ ex07.py สคริปต์ Python จะดึงชื่อแบบสุ่มทั้งหมดจากหน้าเว็บและพิมพ์บนหน้าจอ ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
$ python3 ex07.พายหากคุณเรียกใช้สคริปต์เป็นครั้งที่สอง สคริปต์ควรส่งคืนรายชื่อผู้ใช้แบบสุ่มใหม่ ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
ตัวอย่างที่ 5: การส่งแบบฟอร์ม – ค้นหา DuckDuckGo
ตัวอย่างนี้ง่ายพอๆ กับตัวอย่างแรก ในตัวอย่างนี้ ฉันจะไปที่เสิร์ชเอ็นจิ้น DuckDuckGo และค้นหาคำว่า ซีลีเนียม hq โดยใช้ซีลีเนียม
ก่อนอื่น แวะ เครื่องมือค้นหา DuckDuckGo จากเว็บเบราว์เซอร์ Firefox
หากคุณตรวจสอบช่องป้อนข้อมูลการค้นหา ควรมี id search_form_input_homepage ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
ตอนนี้สร้างสคริปต์ Python ใหม่ ex08.py และพิมพ์รหัสบรรทัดต่อไปนี้ในสคริปต์
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
เบราว์เซอร์=ไดรเวอร์เว็บFirefox(executable_path='./drivers/geckodriver')
เบราว์เซอร์รับ('https://duckduckgo.com/')
ค้นหาอินพุต=เบราว์เซอร์find_element_by_id('search_form_input_homepage')
ค้นหาอินพุตsend_keys('ซีลีเนียม HQ'+ กุญแจเข้าสู่)
เมื่อเสร็จแล้วให้บันทึก ex08.py สคริปต์ไพทอน
ที่นี่ browser.get() วิธีโหลดหน้าแรกของเครื่องมือค้นหา DuckDuckGo ในเว็บเบราว์เซอร์ Firefox
NS browser.find_element_by_id() method เลือกองค์ประกอบอินพุตด้วย id search_form_input_homepage และเก็บไว้ใน ค้นหาอินพุต ตัวแปร.
NS searchInput.send_keys() วิธีการใช้เพื่อส่งข้อมูลการกดปุ่มไปยังช่องใส่ข้อมูล ในตัวอย่างนี้ มันส่งสตริง ซีลีเนียม hq และกดปุ่ม Enter โดยใช้ปุ่ม Keys.ENTER คงที่.
ทันทีที่เสิร์ชเอ็นจิ้น DuckDuckGo ได้รับปุ่ม Enter ให้กด ( Keys.ENTER ) จะค้นหาและแสดงผล
เรียกใช้ ex08.py สคริปต์ Python ดังต่อไปนี้:
$ python3 ex08.พายอย่างที่คุณเห็น เว็บเบราว์เซอร์ Firefox ไปที่เครื่องมือค้นหา DuckDuckGo
มันพิมพ์โดยอัตโนมัติ ซีลีเนียม hq ในกล่องข้อความค้นหา
ทันทีที่เบราว์เซอร์ได้รับปุ่ม Enter ให้กด ( Keys.ENTER ) แสดงผลการค้นหา
ตัวอย่างที่ 6: การส่งแบบฟอร์มบน W3Schools.com
ในตัวอย่างที่ 5 การส่งแบบฟอร์มเสิร์ชเอ็นจิ้น DuckDuckGo เป็นเรื่องง่าย สิ่งที่คุณต้องทำคือกดปุ่ม Enter แต่นี่ไม่ใช่กรณีสำหรับการส่งแบบฟอร์มทั้งหมด ในตัวอย่างนี้ ฉันจะแสดงให้คุณเห็นถึงการจัดการแบบฟอร์มที่ซับซ้อนยิ่งขึ้น
ขั้นแรก ให้ไปที่ หน้าแบบฟอร์ม HTML ของ W3Schools.com จากเว็บเบราว์เซอร์ Firefox เมื่อโหลดหน้าแล้ว คุณควรเห็นแบบฟอร์มตัวอย่าง นี่คือแบบฟอร์มที่เราจะส่งในตัวอย่างนี้
หากคุณตรวจสอบแบบฟอร์ม ชื่อจริง ช่องใส่ควรมี id fname , NS นามสกุล ช่องใส่ควรมี id lname , และ ปุ่มส่ง ควรมี พิมพ์ ส่ง ดังที่คุณเห็นในภาพหน้าจอด้านล่าง
หากต้องการส่งแบบฟอร์มนี้โดยใช้ Selenium ให้สร้างสคริปต์ Python ใหม่ ex09.py และพิมพ์รหัสบรรทัดต่อไปนี้ในสคริปต์
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
เบราว์เซอร์=ไดรเวอร์เว็บFirefox(executable_path='./drivers/geckodriver')
เบราว์เซอร์รับ('https://www.w3schools.com/html/html_forms.asp')
fname=เบราว์เซอร์find_element_by_id('ชื่อ')
ชื่อเล่นแจ่มใส()
ชื่อเล่นsend_keys('ชาห์รีอาร์')
lname=เบราว์เซอร์find_element_by_id('ชื่อ')
ชื่อแจ่มใส()
ชื่อsend_keys('โชวอน')
ส่งปุ่ม=เบราว์เซอร์find_element_by_css_selector('input[type='submit']')
ส่งปุ่มsend_keys(กุญแจเข้าสู่)
เมื่อเสร็จแล้วให้บันทึก ex09.py สคริปต์ไพทอน
ที่นี่ browser.get() วิธีเปิดหน้าแบบฟอร์ม HTML ของ W3schools ในเว็บเบราว์เซอร์ Firefox
NS browser.find_element_by_id() วิธีค้นหาช่องป้อนข้อมูลโดย id fname และ lname และเก็บไว้ใน fname และ lname ตัวแปรตามลำดับ
NS fname.clear() และ lname.clear() วิธีการล้างชื่อเริ่มต้น (John) fname ค่าและนามสกุล (โด) lname ค่าจากช่องป้อนข้อมูล
NS fname.send_keys() และ lname.send_keys() วิธีการประเภท Shahriar และ โชวอน ใน ชื่อจริง และ นามสกุล ช่องป้อนข้อมูลตามลำดับ
NS browser.find_element_by_css_selector() วิธีการเลือก ปุ่มส่ง ของแบบฟอร์มและเก็บไว้ใน ส่งปุ่ม ตัวแปร.
NS sendButton.send_keys() วิธีการส่งการกดปุ่ม Enter ( Keys.ENTER ) ถึง ปุ่มส่ง ของแบบฟอร์ม การดำเนินการนี้ส่งแบบฟอร์ม
เรียกใช้ ex09.py สคริปต์ Python ดังต่อไปนี้:
$ python3 ex09.พายอย่างที่คุณเห็น แบบฟอร์มถูกส่งโดยอัตโนมัติพร้อมอินพุตที่ถูกต้อง
บทสรุป
บทความนี้จะช่วยคุณเริ่มต้นใช้งานการทดสอบเบราว์เซอร์ Selenium การทำงานอัตโนมัติของเว็บ และไลบรารีการคัดลอกเว็บใน Python 3 สำหรับข้อมูลเพิ่มเติม โปรดดูที่ เอกสาร Selenium Python อย่างเป็นทางการ .