ในบทความนี้ ผมจะแสดงวิธีค้นหาและเลือกองค์ประกอบจากหน้าเว็บโดยใช้ข้อความใน Selenium ด้วยไลบรารี Selenium python มาเริ่มกันเลยดีกว่า
ข้อกำหนดเบื้องต้น:
หากต้องการลองใช้คำสั่งและตัวอย่างของบทความนี้ คุณต้องมี:
- การกระจาย Linux (ควรเป็น Ubuntu) ที่ติดตั้งบนคอมพิวเตอร์ของคุณ
- Python 3 ติดตั้งบนคอมพิวเตอร์ของคุณ
- PIP 3 ติดตั้งบนคอมพิวเตอร์ของคุณ
- Python virtualenv แพ็คเกจที่ติดตั้งบนคอมพิวเตอร์ของคุณ
- เว็บเบราว์เซอร์ Mozilla Firefox หรือ Google Chrome ที่ติดตั้งบนคอมพิวเตอร์ของคุณ
- ต้องทราบวิธีการติดตั้งไดรเวอร์ Firefox Gecko หรือ Chrome Web Driver
หากต้องการปฏิบัติตามข้อกำหนด 4, 5 และ 6 โปรดอ่านบทความของฉัน รู้เบื้องต้นเกี่ยวกับซีลีเนียมใน Python 3 .
คุณสามารถค้นหาบทความมากมายในหัวข้ออื่น ๆ ได้ที่ LinuxHint.com . อย่าลืมตรวจสอบหากคุณต้องการความช่วยเหลือ
การตั้งค่าไดเรกทอรีโครงการ:
เพื่อให้ทุกอย่างเป็นระเบียบ ให้สร้างไดเร็กทอรีโครงการใหม่ selenium-text-select/ ดังนี้
$mkdir -pvselenium-text-select/คนขับรถ
นำทางไปยัง selenium-text-select/ ไดเรกทอรีโครงการดังต่อไปนี้:
$ซีดีselenium-text-select/
สร้างสภาพแวดล้อมเสมือน Python ในไดเร็กทอรีโครงการดังนี้:
$virtualenv .venv
เปิดใช้งานสภาพแวดล้อมเสมือนดังต่อไปนี้:
$แหล่งที่มา.venv/เป็น/เปิดใช้งาน
ติดตั้งไลบรารี Selenium Python โดยใช้ PIP3 ดังนี้:
$ pip3 ติดตั้งซีลีเนียม
ดาวน์โหลดและติดตั้งไดรเวอร์เว็บที่จำเป็นทั้งหมดในไฟล์ คนขับรถ/ ไดเรกทอรีของโครงการ ฉันได้อธิบายขั้นตอนการดาวน์โหลดและติดตั้งไดรเวอร์เว็บในบทความของฉันแล้ว รู้เบื้องต้นเกี่ยวกับซีลีเนียมใน Python 3 .
การค้นหาองค์ประกอบด้วยข้อความ:
ในส่วนนี้ ฉันจะแสดงตัวอย่างการค้นหาและเลือกองค์ประกอบหน้าเว็บตามข้อความด้วยไลบรารี Selenium Python
ฉันจะเริ่มต้นด้วยตัวอย่างที่ง่ายที่สุดในการเลือกองค์ประกอบของหน้าเว็บตามข้อความ โดยเลือกลิงก์จากหน้าเว็บ
ในหน้าล็อกอินของ facebook.com เรามีลิงค์ ลืมบัญชี? ดังที่คุณเห็นในภาพหน้าจอด้านล่าง มาเลือกลิงค์นี้กับ Selenium
สร้างสคริปต์ Python ใหม่ ex01.py และพิมพ์รหัสบรรทัดต่อไปนี้ลงไป
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
จากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.โดย นำเข้าโดย
จาก เวลา นำเข้านอน
เบราว์เซอร์=ไดรเวอร์เว็บโครเมียม(executable_path='./drivers/chromedriver')
เบราว์เซอร์รับ('https://www.facebook.com/')
ลืมบัญชีลิงค์=เบราว์เซอร์find_element(โดย.XPATH, '
//*[text()='ลืมบัญชี?']')
ลืมลิงก์บัญชีsend_keys(กุญแจเข้าสู่)
เมื่อเสร็จแล้วให้บันทึก ex01.py สคริปต์ไพทอน
บรรทัดที่ 1-4 นำเข้าส่วนประกอบที่จำเป็นทั้งหมดลงในโปรแกรม Python
บรรทัดที่ 6 สร้าง Chrome เบราว์เซอร์ วัตถุโดยใช้ chromedriver เลขฐานสองจาก คนขับรถ/ ไดเรกทอรีของโครงการ
บรรทัดที่ 8 บอกให้เบราว์เซอร์โหลดเว็บไซต์ facebook.com
บรรทัดที่ 10 พบลิงค์ที่มีข้อความ ลืมบัญชี? การใช้ตัวเลือก XPath เพื่อการนั้น ฉันจึงใช้ตัวเลือก XPath //*[text()='ลืมบัญชี?'] .
ตัวเลือก XPath เริ่มต้นด้วย //, ซึ่งหมายความว่าองค์ประกอบสามารถอยู่ที่ใดก็ได้บนหน้า NS * สัญลักษณ์บอกให้ซีลีเนียมเลือกแท็กใด ๆ ( ถึง หรือ NS หรือ ช่วง เป็นต้น) ที่ตรงกับเงื่อนไขภายในวงเล็บเหลี่ยม [] . ในที่นี้เงื่อนไขคือข้อความองค์ประกอบเท่ากับ ลืมบัญชี?
NS ข้อความ() ฟังก์ชัน XPath ใช้เพื่อรับข้อความขององค์ประกอบ
ตัวอย่างเช่น, ข้อความ() ผลตอบแทน สวัสดีชาวโลก หากเลือกองค์ประกอบ HTML ต่อไปนี้
< ถึง href='http://dummysite.com'>สวัสดีชาวโลก</ ถึง >สาย 11 ส่ง กดปุ่มเพื่อ ลืมบัญชี? ลิงค์.
เรียกใช้สคริปต์ Python ex01.py ด้วยคำสั่งดังนี้
$ หลาม ex01.พาย
ดังที่คุณเห็น เว็บเบราว์เซอร์จะค้นหา เลือก และกด กุญแจบน ลืมบัญชี? ลิงค์.
NS ลืมบัญชี? ลิงก์จะนำเบราว์เซอร์ไปยังหน้าต่อไปนี้
ในทำนองเดียวกัน คุณสามารถค้นหาองค์ประกอบที่มีค่าแอตทริบิวต์ที่คุณต้องการได้อย่างง่ายดาย
ที่นี่ เข้าสู่ระบบ ปุ่มคือ ป้อนข้อมูล องค์ประกอบที่มี ค่า คุณลักษณะ เข้าสู่ระบบ . มาดูวิธีการเลือกองค์ประกอบนี้ด้วยข้อความ
สร้างสคริปต์ Python ใหม่ ex02.py และพิมพ์รหัสบรรทัดต่อไปนี้ลงไป
จากซีลีเนียมนำเข้าไดรเวอร์เว็บจากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.กุญแจ นำเข้ากุญแจ
จากซีลีเนียม.ไดรเวอร์เว็บ.ทั่วไป.โดย นำเข้าโดย
จาก เวลา นำเข้านอน
เบราว์เซอร์=ไดรเวอร์เว็บโครเมียม(executable_path='./drivers/chromedriver')
เบราว์เซอร์รับ('https://www.facebook.com/')
นอน(5)
emailInput=เบราว์เซอร์find_element(โดย.XPATH, '//input[@id='email']')
รหัสผ่านอินพุต=เบราว์เซอร์find_element(โดย.XPATH, '//input[@id='pass']')
เข้าสู่ระบบปุ่ม=เบราว์เซอร์find_element(โดย.XPATH, '//*[@value='Log In']')
อีเมลอินพุตsend_keys(' [ป้องกันอีเมล] ')
นอน(5)
รหัสผ่านอินพุตsend_keys('ความลับผ่าน')
นอน(5)
ปุ่มเข้าสู่ระบบsend_keys(กุญแจเข้าสู่)
เมื่อเสร็จแล้วให้บันทึก ex02.py สคริปต์ไพทอน
บรรทัดที่ 1-4 นำเข้าส่วนประกอบที่จำเป็นทั้งหมด
บรรทัดที่ 6 สร้าง Chrome เบราว์เซอร์ วัตถุโดยใช้ chromedriver เลขฐานสองจาก คนขับรถ/ ไดเรกทอรีของโครงการ
บรรทัดที่ 8 บอกให้เบราว์เซอร์โหลดเว็บไซต์ facebook.com
ทุกอย่างเกิดขึ้นเร็วมากเมื่อคุณเรียกใช้สคริปต์ ดังนั้นฉันจึงใช้ นอน() ทำงานหลายครั้งใน ex02.py สำหรับการหน่วงเวลาคำสั่งเบราว์เซอร์ ด้วยวิธีนี้ คุณจะสังเกตได้ว่าทุกอย่างทำงานอย่างไร
บรรทัดที่ 11 ค้นหากล่องข้อความป้อนอีเมลและจัดเก็บการอ้างอิงขององค์ประกอบใน emailInput ตัวแปร.
บรรทัดที่ 12 ค้นหากล่องข้อความป้อนอีเมลและจัดเก็บการอ้างอิงขององค์ประกอบใน emailInput ตัวแปร.
บรรทัดที่ 13 ค้นหาองค์ประกอบอินพุตที่มีแอตทริบิวต์ ค่า ของ เข้าสู่ระบบ โดยใช้ตัวเลือก XPath เพื่อการนั้น ฉันจึงใช้ตัวเลือก XPath //*[@value='เข้าสู่ระบบ'] .
ตัวเลือก XPath เริ่มต้นด้วย // . หมายความว่าองค์ประกอบสามารถอยู่ที่ใดก็ได้บนหน้า NS * สัญลักษณ์บอกให้ซีลีเนียมเลือกแท็กใด ๆ ( ป้อนข้อมูล หรือ NS หรือ ช่วง เป็นต้น) ที่ตรงกับเงื่อนไขภายในวงเล็บเหลี่ยม [] . ในที่นี้เงื่อนไขคือแอตทริบิวต์ขององค์ประกอบ ค่า เท่ากับ เข้าสู่ระบบ .
บรรทัดที่ 15 ส่งข้อมูลเข้า[ป้องกันอีเมล]ไปที่กล่องข้อความป้อนอีเมล และบรรทัดที่ 16 จะทำให้การดำเนินการถัดไปล่าช้า
บรรทัดที่ 18 ส่งรหัสลับการป้อนข้อมูลไปยังกล่องข้อความป้อนรหัสผ่าน และบรรทัดที่ 19 จะชะลอการดำเนินการต่อไป
สาย 21 ส่ง กดปุ่มเพื่อเข้าสู่ระบบปุ่ม
เรียกใช้ ex02.py สคริปต์ Python ด้วยคำสั่งต่อไปนี้:
$ python3 ex02.พาย
อย่างที่คุณเห็น กล่องข้อความอีเมลและรหัสผ่านเต็มไปด้วยค่าจำลองของเรา และ เข้าสู่ระบบ กดปุ่ม
จากนั้นหน้าจะนำทางไปยังหน้าต่อไปนี้
การค้นหาองค์ประกอบตามข้อความบางส่วน:
ในส่วนก่อนหน้านี้ ฉันได้แสดงวิธีค้นหาองค์ประกอบด้วยข้อความเฉพาะ ในส่วนนี้ ฉันจะแสดงวิธีค้นหาองค์ประกอบจากหน้าเว็บโดยใช้ข้อความบางส่วน
ในตัวอย่าง ex01.py ฉันได้ค้นหาองค์ประกอบลิงก์ที่มีข้อความ ลืมบัญชี? . คุณสามารถค้นหาองค์ประกอบลิงก์เดียวกันได้โดยใช้ข้อความบางส่วน เช่น ลืม acc . ในการทำเช่นนั้น คุณสามารถใช้ ประกอบด้วย() ฟังก์ชัน XPath ดังแสดงในบรรทัดที่ 10 ของ ex03.py . รหัสที่เหลือเหมือนกับใน ex01.py . ผลลัพธ์จะเหมือนกัน
ในบรรทัดที่ 10 ของ ex03.py , เงื่อนไขการเลือกใช้ the ประกอบด้วย (ที่มา, ข้อความ) ฟังก์ชัน XPath ฟังก์ชันนี้รับ 2 อาร์กิวเมนต์ แหล่งที่มา, และ ข้อความ .
NS ประกอบด้วย() ฟังก์ชั่นตรวจสอบว่า ข้อความ ระบุในอาร์กิวเมนต์ที่สองบางส่วนตรงกับ แหล่งที่มา ค่าในอาร์กิวเมนต์แรก
แหล่งที่มาสามารถเป็นข้อความขององค์ประกอบ ( ข้อความ() ) หรือค่าแอตทริบิวต์ขององค์ประกอบ ( @attr_name ).
ใน ex03.py , ข้อความขององค์ประกอบจะถูกตรวจสอบ
ฟังก์ชัน XPath ที่มีประโยชน์อีกอย่างหนึ่งในการค้นหาองค์ประกอบจากหน้าเว็บโดยใช้ข้อความบางส่วนคือ เริ่มต้นด้วย (ที่มา, ข้อความ) . ฟังก์ชันนี้มีอาร์กิวเมนต์เหมือนกับ the ประกอบด้วย() และใช้งานในลักษณะเดียวกัน ข้อแตกต่างเพียงอย่างเดียวคือ เริ่มต้นด้วย() ฟังก์ชั่นตรวจสอบว่าอาร์กิวเมนต์ที่สอง ข้อความ เป็นสตริงเริ่มต้นของอาร์กิวเมนต์แรก แหล่งที่มา .
ฉันได้เขียนตัวอย่างใหม่ ex03.py เพื่อค้นหาองค์ประกอบที่ข้อความเริ่มต้นด้วย ลืม ดังที่คุณเห็นในบรรทัดที่ 10 ของ ex04.py . ผลลัพธ์จะเหมือนกับใน ex02 และ ex03.py .
ฉันยังเขียนใหม่ ex02.py เพื่อที่จะค้นหาองค์ประกอบอินพุตที่ ค่า แอตทริบิวต์เริ่มต้นด้วย บันทึก, ดังที่คุณเห็นในบรรทัดที่ 13 ของ ex05.py . ผลลัพธ์จะเหมือนกับใน ex02.py .
บทสรุป:
ในบทความนี้ ฉันได้แสดงวิธีค้นหาและเลือกองค์ประกอบจากหน้าเว็บด้วยข้อความด้วยไลบรารี Selenium Python ตอนนี้ คุณควรจะสามารถค้นหาองค์ประกอบจากหน้าเว็บด้วยข้อความเฉพาะหรือข้อความบางส่วนด้วยไลบรารี Selenium Python