รู้เบื้องต้นเกี่ยวกับซีลีเนียมใน Python 3

Introduction Selenium Python 3



ซีลีเนียมเป็นเฟรมเวิร์กที่ใช้สำหรับทดสอบเว็บแอปพลิเคชัน ซีลีเนียมทำให้เบราว์เซอร์อัตโนมัติ เช่น Chrome หรือ Firefox ทำการทดสอบบนเว็บไซต์ที่คุณต้องการ ซีลีเนียมเป็นเครื่องมือขูดเว็บที่ทรงพลังมาก ซีลีเนียมรองรับ JavaScript และคุณสมบัติเบราว์เซอร์ที่ทันสมัยทั้งหมด เครื่องมือนี้มีประสิทธิภาพมากในการดึงข้อมูลจากเว็บไซต์

บทความนี้จะแสดงวิธีตั้งค่า 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 ติดตั้ง virtualenv

PIP3 จะดาวน์โหลดและติดตั้งโมดูลที่จำเป็นทั้งหมดทั่วโลก

ณ จุดนี้ 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 อย่างเป็นทางการ .