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()
 

相关内容

热门资讯

河南夫妇冒雨移开折断大树,“不... 评论员 陈柯旭 折断的大树能挡住马路,但挡不住普通人身上的微光。 近日,在河南驻马店突降暴雨,一棵大...
现货黄金跌破4300美元关口 8日,现货黄金盘中跳水,跌破4300美元/盎司,跌超0.6%。 消息面上,据新华社,当地时间7日晚,...
英法德联合出手! 文丨陆弃 当英国首相斯塔默、法国总统马克龙和德国总理默茨准备与乌克兰总统泽连斯基在伦敦举行会晤时,外...
两个月来伊以首次互袭,特朗普想... 当地时间6月7日,伊朗向以色列发射了四轮导弹袭击,以回应数小时前以色列对黎巴嫩首都贝鲁特进行的致命空...
德韩竞标谁能赢? 崔轶亮:难分... 加拿大正在推进“巡逻潜艇项目”,计划采购最多12艘柴电潜艇,以替换预计于2030年代中期退役的4艘“...
向以色列发射三波导弹后,伊朗威... 据参考消息6月8日报道,6月7日晚,伊朗向以色列发射三波导弹,以回应以色列不断升级对黎巴嫩的军事行动...
原创 恐... 6月8日,国际足坛再次出现球员在比赛中昏迷的情况。在丹麦同乌克兰的热身赛中,34岁的埃里克森忽然晕倒...
原创 歼... 这两天,咱们国产隐身机歼-35的外贸版(也就是歼-35AE)算是彻底曝光了,连带着那架编号0001的...
以色列遭多波导弹袭击!特朗普:... 据美国有线电视新闻网(CNN)报道,当地时间7日,伊朗伊斯兰革命卫队(IRGC)发布声明称,当日用弹...
原创 W... WB集团的Warmate“滞留弹药,配备气动弹射器,起飞前使用。(WB集团) 波兰军备局与WB集团签...