Python selen Chromium

Tôi đã dành một ngày để tìm giải pháp để Selenium hoạt động trên Raspberry Pi. Hy vọng rằng, điều này cũng sẽ phù hợp với bạn và giúp bạn tiết kiệm hàng giờ tìm kiếm trên internet

Selenium yêu cầu phải cài đặt trình duyệt được điều khiển bởi trình điều khiển. Là trình duyệt, tôi sử dụng Chromium có thể tải xuống bằng lệnh này

sudo apt-get install chromium-browser

Bây giờ bạn đã cài đặt trình duyệt Chromium, bạn cần tìm phiên bản bạn đang chạy

chromium-browser --version

Nó sẽ trả lại một cái gì đó tương tự như thế này

Chromium 78.0.3904.108 Built on Raspbian, running on Raspbian 10

Sau khi bạn biết mình đã cài đặt phiên bản Chromium nào, bạn phải tìm chromedriver hỗ trợ cùng phiên bản với Chromium mà bạn có. Chuẩn bị cho một vài thử nghiệm và lỗi vì bây giờ bạn phải mở https. //github. com/electron/electron/tags và xem qua các bản phát hành khác nhau để tìm chromedriver trong nội dung. Họ sử dụng chromedriver cho dự án của họ, họ cập nhật thường xuyên và bạn có thể tìm thấy ở đó hầu hết mọi phiên bản của nó

Tải xuống phiên bản armv7l và kiểm tra xem phiên bản chromedriver có khớp với phiên bản Chromium không và nếu không hãy thử một phiên bản khác

chromedriver --version

Để tải trực tiếp xuống Raspberry Pi, hãy sử dụng lệnh này

sudo wget https://github.com/electron/electron/releases/download/v9.0.2/chromedriver-v9.0.2-linux-armv7l.zip

Để giải nén, bạn có thể sử dụng

sudo apt-get install unzipunzip chromedriver-v9.0.2-linux-armv7l.zip

Đừng quên di chuyển chromedriver sang /usr/lib/chromium-browser/. Sau đó, mọi thứ được thiết lập và nó sẽ hoạt động. Nếu không thì có lẽ bạn cần thiết lập tuyến đường đến chromedriver trong Selenium

driver = webdriver.Chrome(‘/usr/lib/chromium-browser/chromedriver’)

Nếu bạn đang sử dụng Raspberry Pi mà không có màn hình, vui lòng đọc thêm

Raspberry Pi không đầu?

Một vấn đề khác mà tôi gặp phải là Chromium yêu cầu màn hình chạy nếu không nó sẽ trả về lỗi. Đây là cách khắc phục

Tôi chọn XML vì định dạng phẳng này dễ lấy bằng Python và nó có thể được tạo từ tệp Excel bằng Access chẳng hạn. Ngoài ra, nếu tính năng tự động gửi gặp sự cố trong quá trình thực thi (có thể xảy ra ngay cả với mã tốt, tùy thuộc vào trang web cung cấp biểu mẫu), Chromium sẽ dừng ở bản ghi cuối cùng và bạn có thể xóa phần đầu của XML trước đó để thực hiện lại

Đối với những người đang vội (🧐) mã của tôi ở đây trên GitHub. Nhưng để hiểu đầy đủ, chỉ cần xem bên dưới

 

Trước tiên, bạn nên tải xuống và giải nén trình điều khiển Chrome theo phiên bản trình duyệt của bạn

OK, bây giờ hãy thử điền vào một bản ghi được mã hóa cứng

  1. from selenium import webdriver

  2.  

  3. chrome_path = 'C:/Path/To/chromedriver.exe'

  4. browser = webdriver.Chrome(chrome_path)

  5.  

  6. browser.get('https://www.example.com/path/to/the/form.html')

  7.  

  8. firstname = browser.find_element_by_id('input_id_firstName')

  9. lastname = browser.find_element_by_name('input_name_lastname')

  10. email = browser.find_elements_by_class_name('input_class_email')

  11.  

  12. firstname.send_keys('Edward')

  13. lastname.send_keys('Wilson')

  14. email.send_keys(Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.')

  15.  

  16. browser.find_element_by_id('submit_id').click()

ở dòng 6, 7 và 8, tôi cung cấp 3 ví dụ để lấy thông tin đầu vào từ id, tên hoặc lớp CSS (tìm các thẻ CSS của riêng bạn với F12)

Dòng 14 gửi biểu mẫu. Là nút, hãy sử dụng 

 xmlns:od="urn:schemas-microsoft-com:officedata" generated="2021-05-04T12:22:38">
>
>Mrs>
>Greta>
>Thunberg>
>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
>Superhero>
>Sweden>
>
...
2 để quản lý các hộp kiểm

OK, nó hoạt động. Bây giờ chúng ta hãy gửi loại dữ liệu này

________số 8_______

Chỉ cần kiểm tra xem bạn có thể lặp qua XML không

import requests
import xml.etree.ElementTree
 
r = requests.get('C:/Path/To/Your/XML/MyFile.xml')
root = xml.etree.ElementTree.fromstring(r.content)
 
for people in root.findall('poi'):
    my_firstname = people.find('FirstName').text
    my_lastname = people.find('LastName').text
    print(my_firstname, my_lastname)

Bây giờ, chỉ cần thêm mã Selenium của bạn vào vòng lặp, với hàm

 xmlns:od="urn:schemas-microsoft-com:officedata" generated="2021-05-04T12:22:38">
>
>Mrs>
>Greta>
>Thunberg>
>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
>Superhero>
>Sweden>
>
...
3 từ
 xmlns:od="urn:schemas-microsoft-com:officedata" generated="2021-05-04T12:22:38">
>
>Mrs>
>Greta>
>Thunberg>
>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
>Superhero>
>Sweden>
>
...
4

from selenium import webdriver
import xml.etree.ElementTree as ET
 
chrome_path = 'C:/Path/To/chromedriver.exe'
browser = webdriver.Chrome(chrome_path)
 
tree = ET.parse('C:/Path/To/Your/XML/MyFile.xml')
root = tree.getroot()
 
for people in root.findall('poi'):
    xml_FirstName =people.find('FirstName').text
    xml_LastName = people.find('LastName').text
    xml_Email =people.find('Email').text
 
    browser.get('https://www.example.com/path/to/the/form.html')
 
    firstname = browser.find_element_by_id('input_id_firstName')
    lastname = browser.find_element_by_name('input_name_lastname')
    email = browser.find_elements_by_class_name('input_class_email')
 
    firstname.send_keys(xml_FirstName)
    lastname.send_keys(xml_LastName)
    email.send_keys(xml_Email)
 
    browser.find_element_by_id('submit_id').click()

quản lý cookie

Đôi khi bạn nên quản lý cookie, đây là một ví dụ (dòng 17)

  1. from selenium import webdriver

  2. import xml.etree.ElementTree as ET

  3.  

  4. chrome_path = 'C:/Path/To/chromedriver.exe'

  5. browser = webdriver.Chrome(chrome_path)

  6.  

  7. tree = ET.parse('C:/Path/To/Your/XML/MyFile.xml')

  8. root = tree.getroot()

  9.  

  10. for people in root.findall('poi'):

  11. xml_FirstName =people.find('FirstName').text

  12. xml_LastName = people.find('LastName').text

  13. xml_Email =people.find('Email').text

  14.  

  15. browser.get('https://www.example.com/path/to/the/form.html')

  16.  

  17. try:

  18. browser.find_elements_by_class_name('cookieButton')[0].click()

  19. except Exception:

  20. pass

  21.  

  22. firstname = browser.find_element_by_id('input_id_firstName')

  23. lastname = browser.find_element_by_name('input_name_lastname')

  24. email = browser.find_elements_by_class_name('input_class_email')

  25.  

  26. firstname.send_keys(xml_FirstName)

  27. lastname.send_keys(xml_LastName)

  28. email.send_keys(xml_Email)

  29.  

  30. browser.find_element_by_id('submit_id').click()

quản lý thả xuống

Có nhiều bối cảnh khác nhau có thể. Ví dụ với quản lý bài viết từ Joomla. 4 trường phụ trợ, danh mục, cấp độ truy cập và thẻ

Bạn có thể sử dụng Selenium với crom không?

Thông qua WebDriver, Selenium hỗ trợ tất cả các trình duyệt chính trên thị trường như Chrome/Chromium , Firefox, Internet Explorer, Edge và Safari.

Làm cách nào để khởi chạy trình duyệt Chromium trong Selenium Python?

Truy cập liên kết. https. // chromedriver. crom. org/tải xuống . Sẽ có sẵn các liên kết để tải xuống cho các phiên bản chromedriver khác nhau. Chọn phiên bản tương thích với Chrome có sẵn trên hệ thống của chúng tôi.

Làm cách nào để cài đặt Chrome WebDriver cho Selenium Python?

Mở terminal của bạn và sử dụng pip , chúng ta có thể cài đặt thư viện Python của Selenium bằng lệnh sau. .
pip cài đặt selen # hoặc pip3 cài đặt selen
python -c "nhập selen; in(selenium. **phiên bản**)"
pip cài đặt trình quản lý web# hoặc pip3 cài đặt trình quản lý web