python + Poium 库操作

1、支持pip安装

pip install poium

2、基本用法

from poium import PageElement,Page,PageElements

# 1.poium支持的8种定位方法

class SomePage(Page):
elem_id = PageElement(id_='id')
elem_name = PageElement(name_='name')
elem_class = PageElement(class_name='class')
elem_tag = PageElement(tag='input')
elem_link_text = PageElement(link_text='this is link')
elem_partial_link_text = PageElement(partial_link_text='is link')
elem_xpath = PageElement(xpath='//*[@id="kw"]')
elem_css = PageElement(css='#id')

# 2.设置元素超时时间 默认为10s

class BaiduPage(Page):
search_input = PageElement(id_='kw',timeout=5)
search_button = PageElement(id_='su',timeout=30)

# 3.设置元素描述
#当一个Page类中定义的元素非常多时,必须通过注释来增加可读性,这时可以使用的describe参数
#强调:describe参数并无实际意义,只是增加了元素定位的可读性

class LoginPage(Page):
'''登录Page类'''
username = PageElement(css='#loginAccount',describe='用户名')
password = PageElement(css='#loginpwd',describe='密码')
login_button = PageElement(css='#login_btn',describe='登录按钮')
user_info = PageElement(css='a.nav_user_name>span',describe='用户信息')


# 4.定位一组元素

class ResultPage(Page):
#定位一组元素
search_input = PageElements(xpath='//div/h3/a')

3、基本使用

使用poium重写baidu_page.py

from poium import Page,PageElement

'''
创建BaiduPage类,使其继承poium库中的Page类,调用PageElement类定义元素定位,
并赋值给变量search_input和search_button。
'''

class BaiduPage(Page):
'''百度Page层 百度页面封装操作到的元素'''
search_input = PageElement(id_ = 'kw')
search_button = PageElement(id_ = 'su')

测试用例中使用如下:
from TestCase.Poium.baidu_page import BaiduPage
from selenium import webdriver
from time import sleep
import unittest


class TestBaidu(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.driver = webdriver.Chrome()

@classmethod
def tearDownClass(cls) -> None:
cls.driver.close()

def test_baidu_search_casel(self):
'''测试百度搜索'''
page = BaiduPage(self.driver)
page.get('http://www.baidu.com')
page.search_input = 'selenium'
page.search_button.click()
sleep(2)
    #断言
self.assertEqual(page.get_title,'selenium_百度搜索')

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


posted @   Test挖掘者  阅读(2740)  评论(2编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示