2011-12-12 21 views
7

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?

+1

Đâ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

Trả lời

5

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

+4

Liên kết đã thay đổi thành https://code.google.com/p/selenium/source/browse/py/test/selenium/webdriver/common/google_one_box.py – abhi

+0

Liên kết này đã được cập nhật lại thành https://github.com/ SeleniumHQ/selenium/blob/chủ/py/test/selenium/webdriver/common/google_one_box.py – Deep

4

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.

1

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/

Các vấn đề liên quan