Selenium4 Python实现Page Factory设计模式,python新的定位方法
admin
2024-03-29 14:40:31
0


1.安装 
pip install pythium

1.基础层

用来存放driver以及初始化

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from .login_page import LoginPage
# pip install webdriver_manager

class BasePage(object):

    def __init__(self):
        # self.driver = webdriver.chrome(ChromeDriverManager().install())
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()

    def open_url(self, url: str) -> None:
        self.driver.get(url)

    def quit_browser(self) -> None:
        self.driver.quit()

    def get_loginpage(self) :
        return LoginPage(self.driver)


3.对象层
用于存放界面元素定位和控件操作

import time
from pythium import find_by, Page
from selenium.webdriver.remote.webelement import WebElement

class LoginPage(Page):

    @find_by(xpath='//*[@id="search"]/form/div[2]/input')
    def input_ele(self) -> WebElement: ...

    @find_by(xpath='//*[@id="search"]/form/div[3]/input')
    def search_ele(self) -> WebElement: ...

    def run(self):
        time.sleep(1)
        self.input_ele().send_keys("selenium")
        time.sleep(2)
        self.search_ele().click()
        time.sleep(5)

4.操作层
封装好的功能用例模块,即测试用例的步骤

import time
from .base_page import BasePage


class LoginAction(object):

    def login(self):
        base_page = BasePage()
        base_page.open_url("https://www.hao123.com/")
        time.sleep(5)
        base_page.get_loginpage().run()

5.业务层
测试类,添加测试用例

import unittest
from .login_action import LoginAction


class TestLogin(unittest.TestCase):

    def test_search(self):
        LoginAction().login()

if __name__ == '__main__':
    unittest.main()
 

相关内容

热门资讯

想要“格林兰岛”?给美国算一笔... 美国总统特朗普曾多次公开表示,希望将格陵兰岛纳入美国版图,并将其形容为“一生中最重要的不动产交易”。...
淳厚基金大结局:国资入主,高管... 公募淳厚基金的股权纠纷终于迎来实质性突破。近日,淳厚基金发布股权变更公告称,根据公司股东会决议,并经...
深交所向天际股份下发监管函 新京报贝壳财经讯 1月15日,深交所公告,因多项违规行为向天际股份下发监管函,指出公司及高管存在多项...
Manus数十亿美金交易接受审... 2025年底,Manus数十亿美元出售给Meta的事迹,引发热议。一方面确实证明了有人看好并愿意支付...
上市公司密集降温、蹭概念被罚,... 一批批热门概念股集体揭示风险、部分投资者账户被暂停交易、一些公司因为信披违规吃“罚单”……在这些“降...
交银人寿更换新“舵手”:交行老... 专为保险业 打造的垂直新媒体平台又一“银行系”险企迎来“舵手”更迭。作者|蓝鲸新闻 陈晓娟日前,交银...
日流水暴增900%,AI漫剧狂... 本文来源:时代周报 作者:王营 实习生陈子羽然晚上八点,广东省佛山市保利维塔写字楼的灯光依然成片亮着...
振芯科技内斗追踪:违规披露董事... 本报(chinatimes.net.cn)记者帅可聪 北京报道振芯科技(300101.SZ)现任管理...
未拿“准行证”先闯资本市场,小... 当低空经济开始盛行,政策、技术也逐一落地,小鹏汽车(下称“小鹏”)的“飞行器”开始加速驶向资本市场。...
金晟新能两年半亏损超9亿元,关... 本文来源:时代商业研究院 作者:雷小艳 来源|时代商业研究院作者|雷小艳编辑|郑琳继递表未果、亏损经...