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)

python + Poium 库操作的更多相关文章

  1. Python 之 MySQL 操作库 lazy_mysql

    TOC Intro Installation Tutorial API Engine Pool Column Table Intro lazy_mysql 是一个非常简单易用,用来操作 MySQL 的 ...

  2. python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束

    一.昨日内容回顾 1.mysql的安装 1).解压文件 添加环境变量bin 2).初始化mysql生成数据data文件夹: mysqld --initialize-insecure 3).mysqld ...

  3. Python 使用pymongo操作mongodb库

    Python 使用pymongo操作mongodb库 2016-12-31 21:55 1115人阅读 评论(0) 收藏 举报  分类: - - - Python(10)  版权声明:本文为博主原创文 ...

  4. python第三方库——xlrd和xlwt操作Excel文件学习

    python第三方库——xlrd和xlwt操作Excel文件学习 1安装: C:\Users\Lenovo>pip install xlwtCollecting xlwt  Downloadin ...

  5. Python 3 mysql 库操作

    Python 3 mysql 库操作 一.基础相关知识 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_ ...

  6. 如何使用python records 库优雅的操作数据库

    今天要介绍的这个python第三方库非常厉害,完美操作各种数据库.名字叫 records, 在网上很少有这个库的相关资料,但是在开源社区可是很火热的哦.如果这还不能打消你的顾虑,再告诉你一件事:如果你 ...

  7. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

  8. 一个超好用的 Python 标准库,彻底玩透路径操作

    pathlib 学习 Python 时,尤其是在进行文件操作和数据处理时,经常会处理路径问题.最常用和常见的是 os.path 模块,它将路径当做字符串进行处理,如果使用不当可能导致难以察觉的错误,而 ...

  9. [Python] 机器学习库资料汇总

    声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...

随机推荐

  1. Centos acme.sh 申请 LetsEncrypt 通配证书

    1. 安装 acme.sh 注意:如果需要使用 Standalone Mode请先安装socat# yum intall socat It is recommended to install soca ...

  2. 【NX二次开发】Block UI 截面构建器

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  3. apache jmeter下载与安装

    JMeter是Apache软件基金会的产品,用于对静态的和动态的资源性能进行测试.jmeter可以运行在多个平台上,如Windows和Linux,本文讲的是在Windows安装jmeter. 工具/原 ...

  4. Linux面试题(史上最全、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  5. spring赌上未来的一击:WebFlux性能实测

    最近花了一点时间系统的测试验证了在SpringBoot框架下使用SpringMVC和Spring WebFlux两种框架开发接口,对比了响应时间以及压测吞吐量的区别. WebFlux&Spri ...

  6. top命令信息详解

    top详解 [root@localhost ~]# top top - 09:36:38 up 17:59, 3 users, load average: 0.00, 0.03, 0.00 Tasks ...

  7. C#构造函数中:this()的作用

    通俗来说,可以说是构造函数的继承 (1) :this()用来继承无参时的构造函数,例如下面代码 static void Main(string[] args) { AA aA = new AA(&qu ...

  8. 每日三道面试题,通往自由的道路5——JVM

    茫茫人海千千万万,感谢这一秒你看到这里.希望我的面试题系列能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! 每日三道面试题,成就更好自我 昨天既然我们聊到了JVM,那我们继续这一个话题 ...

  9. Java安全之Fastjson内网利用

    Java安全之Fastjson内网利用 0x00 前言 在打Fastjson的时候,基本上都是使用JNDI注入的方式去打,也就是 JdbcRowSetImpl 链分析的链去打,但是遇到一些不出网的情况 ...

  10. 技术如何转产品01——1+1>2?

    当业务复杂到一定阶段的时候,效率问题会首当其冲,基本解法是化整为零.分赛道,对应的产物可以是子公司>>事业部>业务单元>项目组. ​好处是目标聚焦.所以问题也会聚焦,工作内容闭 ...