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)
python + Poium 库操作的更多相关文章
- Python 之 MySQL 操作库 lazy_mysql
TOC Intro Installation Tutorial API Engine Pool Column Table Intro lazy_mysql 是一个非常简单易用,用来操作 MySQL 的 ...
- python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束
一.昨日内容回顾 1.mysql的安装 1).解压文件 添加环境变量bin 2).初始化mysql生成数据data文件夹: mysqld --initialize-insecure 3).mysqld ...
- Python 使用pymongo操作mongodb库
Python 使用pymongo操作mongodb库 2016-12-31 21:55 1115人阅读 评论(0) 收藏 举报 分类: - - - Python(10) 版权声明:本文为博主原创文 ...
- python第三方库——xlrd和xlwt操作Excel文件学习
python第三方库——xlrd和xlwt操作Excel文件学习 1安装: C:\Users\Lenovo>pip install xlwtCollecting xlwt Downloadin ...
- Python 3 mysql 库操作
Python 3 mysql 库操作 一.基础相关知识 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_ ...
- 如何使用python records 库优雅的操作数据库
今天要介绍的这个python第三方库非常厉害,完美操作各种数据库.名字叫 records, 在网上很少有这个库的相关资料,但是在开源社区可是很火热的哦.如果这还不能打消你的顾虑,再告诉你一件事:如果你 ...
- 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)
为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...
- 一个超好用的 Python 标准库,彻底玩透路径操作
pathlib 学习 Python 时,尤其是在进行文件操作和数据处理时,经常会处理路径问题.最常用和常见的是 os.path 模块,它将路径当做字符串进行处理,如果使用不当可能导致难以察觉的错误,而 ...
- [Python] 机器学习库资料汇总
声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...
随机推荐
- 激光雷达Lidar Architecture and Lidar Design(下)
Considerations on Lidar Design 双基地还是单基地? 双轴还是同轴? 几何重叠 向上还是向下看? 关心分散还是只关心时间? 发射器和接收器的波长 是否可调? 发射器和接收器 ...
- Java线程池底层源码分享和相关面试题(持续更新)
线程池各个参数讲解 public ThreadPoolExecutor(int corePoolSize, //线程池核心工作线程数量,比如newFixedThreadPool中可以自定义的线程数量就 ...
- Jenkins 安装使用笔记
系统要求 最低推荐配置: 256MB可用内存 1GB可用磁盘空间(作为一个容器docker运行jenkins的话推荐10GB) 为小团队推荐的硬件配置: 1GB+可用内存 50 GB+ 可用磁盘空间 ...
- WordPress安装篇(3):用宝塔面板在Linux上安装WordPress
前面的文章已经介绍了如何在Windows环境安装WordPress,这篇文章来介绍在Linux环境怎样快速安装WordPress.大家都知道,Linux系统相对于Windows系统而言占用资源更少.更 ...
- 09:CBV与settings
CBV源码 # 切入点 url(r'^login/', views.Mylogin.as_view()) '''类名点名字还加括号 名字要么是绑定给类的方法 要么是无参函数''' 1.as_vie ...
- centos 7 能ping通但是telnet 22 不通解决方法
试过关闭Linux防火墙,打开sshd服务,修改ens33为enth0.发现不好使. 经过不断的努力我发现,windows系统里面的VMware Network Adapter VMnet8设置的ip ...
- Mongo3基础操作
由于3.X的文档是在3.X当前最新版本前记录,所以这里列出一些常用的操作,比如建立库,删除库,等一些格式,然后在描述开启远程和创建用户的一些区别,以及讲解2.X和3.X配置文件区别. 1. Mongo ...
- Opencv 播放mp4文件和读取摄像头图以及可能会发生的一些异常问题解决方法
学习内容 学习Opencv 读取并播放本地视频和打开摄像头图像以及可能会发生的一些异常问题解决方法 代码演示 电脑环境信息: OpenCV版本:4.5.2 ,vs2017 1.视频文件读取与播放 加载 ...
- 11、linux的目录结构
11.1.查看磁盘的id: blkid 11.2.linux目录类似一个倒挂的树: / 是所有目录的顶点,目录磁盘和分区是没有关联的,因此/下不同的目录会对应不同的磁盘的不同的分区: linux中硬盘 ...
- 并发王者课-铂金9:互通有无-Exchanger如何完成线程间的数据交换
欢迎来到<并发王者课>,本文是该系列文章中的第22篇,铂金中的第9篇. 在前面的文章中,我们已经介绍了ReentrantLock,CountDownLatch,CyclicBarrier, ...