Tôi đã đọc khoảng page objects và các mẫu thiết kế trên trang web dự án Webdriver và đã xem qua pagefactory. Nó không giống như Webdriver cho Python API bao gồm pagefactory. Điều này có đúng không?Trình điều khiển Web có hỗ trợ pagefactory cho Python không?
Trả lời
Tôi không nghĩ có bất kỳ sự tương đương nào của chú thích Java (@Find (By.xxx) v.v.) bằng Python. Nhưng điều đó không có nghĩa là bạn không thể sử dụng mẫu PageObject.
Bạn có thể tìm thấy ví dụ điển hình về cách làm việc ở đây: https://github.com/SeleniumHQ/selenium/blob/master/py/test/selenium/webdriver/common/google_one_box.py
ngôn ngữ động, đánh máy như Python ít bị ám ảnh bởi các mẫu thiết kế để tạo các đối tượng - bởi vì nó là trivially dễ dàng chỉ cần tạo đối tượng của bất kỳ loại (với đúng và trả lại nó. Các mẫu là các giải pháp phổ biến cho các vấn đề chung. Nếu một cái gì đó không phải là một vấn đề, bạn không cần một mô hình để đối phó với nó :-) OOP là ban đầu một mẫu thiết kế trong C.
Chỉnh sửa, tháng 12 năm 2017:
Trong khuôn khổ cây nhà lá vườn của chúng tôi cho tự động hóa trang (để kiểm tra giao diện người dùng tự động và các mục đích khác), chúng tôi sử dụng mẫu thiết kế pageobject, nhưng không cần một nhà máy trang. Kế thừa trường học cũ từ BasePage tùy chỉnh của chúng tôi bao gồm tất cả các nhu cầu (khá đa dạng) của chúng tôi. Chúng tôi sử dụng vài thủ thuật để tạo ra các yếu tố trang và đảm bảo rằng trang phù hợp đã được khởi tạo và dựa trên trải nghiệm đó tôi thích rằng PageObject của chúng tôi rất đơn giản.
Ngoài ra, Python cho phép đa thừa kế, nếu nhu cầu của bạn phát triển phức tạp hơn.
Theo kinh nghiệm của tôi (sử dụng Python, Selenium và WebDriver trong hơn 5 năm), việc thiếu mẫu trang nhà là một dấu hiệu cho thấy bạn không cần nó, không phải là không thể triển khai.
Tôi đã tạo một mô-đun có tên là pageobject_support
thực hiện mô hình PageFactory theo cách nhiệt tình.
Với module này, trang tìm kiếm của Google có thể được mô hình hóa như sau:
from pageobject_support import cacheable, callable_find_by as find_by
from selenium.webdriver.common.by.By
class GoogleSearchPage(object):
_search_box = find_by(how=By.NAME, using='q', cacheable=True)
_search_button = find_by(name='btnK')
def __init__(self, driver):
self._driver = driver
def search(self, keywords):
self._search_box().click()
self._search_box().send_keys(keywords)
self._search_button().click()
Phản hồi của bạn được đánh giá cao. Để biết thêm chi tiết, vui lòng truy cập https://jeremykao.wordpress.com/2015/06/10/pagefactory-pattern-in-python/
- 1. Có trình điều khiển cho mysql trên nodejs hỗ trợ các thủ tục lưu sẵn không?
- 2. Hỗ trợ cần điều khiển trong Java
- 3. Facebook có giảm hỗ trợ cho Python không?
- 4. PySide có hỗ trợ Python 3 không?
- 5. Trình duyệt web nào hỗ trợ các trình duyệt web?
- 6. Trình điều khiển python cho postgresql
- 7. Trình duyệt web nào hỗ trợ Array.forEach()
- 8. Trình điều khiển jdbc mysql không hỗ trợ dấu phân tách trong trình kích hoạt có nhiều câu lệnh
- 9. Phụ đề có được hỗ trợ trong bất kỳ điều khiển video gốc nào không?
- 10. Có một trình bao bọc Oracle cho Python hỗ trợ các cột xmltype không?
- 11. Nhà điều hành + trình hỗ trợ lặp không?
- 12. Bộ điều khiển Api Web chung để hỗ trợ bất kỳ mô hình nào
- 13. Cách phát hiện xem có hỗ trợ điều khiển đầu vào HTML5 không?
- 14. Khung Web Python với hỗ trợ Mongo tốt nhất
- 15. Cassandra có hỗ trợ truy vấn có điều kiện không?
- 16. Mọi trình duyệt có hỗ trợ tất cả unicode không?
- 17. Có gì sai khi tạo một trang web được hỗ trợ bằng Python Pickle không?
- 18. Trình đăng nhập hỗ trợ log4j có hỗ trợ logback không?
- 19. Trình duyệt webview có hỗ trợ tính năng html5 không?
- 20. trình soạn thảo có hỗ trợ tốt cho fortran
- 21. Hỗ trợ Mã VS2010 có hỗ trợ nUnit không?
- 22. CMake có hỗ trợ Python3 không?
- 23. Điều gì đang hỗ trợ YouTube?
- 24. Không có trình điều khiển SVN dành cho Windows?
- 25. Có trình điều khiển ODBC Windows 7 cho Access không?
- 26. Thiết bị nhúng hỗ trợ web SSL
- 27. Có thể đăng ký người trợ giúp cho một mẫu bảng điều khiển duy nhất không?
- 28. Cửa sổ bảng điều khiển AJAX với hỗ trợ ANSI/VT100?
- 29. Trình điều khiển thiết bị Python
- 30. Dart có hỗ trợ lập trình chức năng không?
Đây là bài viết về cách sử dụng mẫu PageObject bằng Python với Selenium: http://pragprog.com/magazines/2010-08/page-objects-in-python – jononomo