Skip to main content

Python Selenium 的二次封装

Project description

P_EO -- 个人使用的基于selenium二次封装

项目介绍

poiumnopo 启发,对selenium实现二次封装。

本项目的核心是,基于PageObject模式,将定位元素封装成一个对象,方便调用。

即Page-Element-Object,简称P-EO(暂时这么起名吧,后续后更好的名字再改。。。)

安装

安装:pip install -U p_eo

快速开始

快速使用元素定义

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from P_EO import WebDriverManager  # 这个模块是P_EO集成好的,可以方便下载ChromeDriver
from P_EO import Element, Elements

# 先创建一个Chrome实例,用来打开浏览器
s = Service(WebDriverManager().chrome)
driver = Chrome(service=s)
driver.get('https://www.baidu.com/')

# 再调用P_EO的方法,实现元素的定位
element1 = Element(locator='kw', describe='百度搜索框', selector=By.ID, driver=driver)
element2 = Element(locator='su', describe='百度搜索按钮', selector=By.ID, driver=driver)
# 定义好元素,就可以对这个元素做操作了
element1.send_keys('selenium')
element2.click()

# 或者不用绑定变量,直接操作
Element(locator='kw', describe='百度搜索框', selector=By.ID, driver=driver).send_keys('selenium')
Element(locator='su', describe='百度搜索按钮', selector=By.ID, driver=driver).click()

# 对于搜索结果,可以使用Elements对象,返回多个Element对象
element3 = Elements(locator="//div[@id='content_left']/div//a[.//em]", describe='百度搜索结果', driver=driver)
for ele in element3.eles:
    print(ele.text)

元素的操作方法

所有的元素的操作,都在action.py中,这里仅列出部分常用方法:

from P_EO import Element

ele = Element()

ele.click()  # 点击
ele.send_keys('')  # 输入
ele.clear()  # 清空
ele.get_attribute('')  # 获取属性
text = ele.text  # 获取文本
is_display = ele.displayed  # 判断元素是否可见
is_selected = ele.selected  # 判断元素是否被选中
ele.scrolled_into_view()  # 滚动元素,如果元素不在当前窗口内,可以将元素滚动到可见区域
ele.wait()  # 等待元素加载完成
ele.wait_exists()  # 等待元素存在
ele.wait_disappear()  # 等待元素消失

当前定义的元素,支持链式调用,这是受到selenium中的Actions的启发,可以方便操作,这里简单举例,其他操作可以查看源码

from P_EO import Element

ele = Element()

# 如果元素正在加载,可以先等待出现,再点击
ele.wait(timeout=5).click()

# 如果输入框有内容,可以先清空,再输入
ele.clear().send_keys()

# 如果元素不在当前窗口内,可以先滚动到可见区域,再点击
ele.scrolled_into_view().double_click()

更多案例,可以参考示例文档

后续会慢慢补充各种示例文档 示例文档

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

p_eo-1.4.2-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file p_eo-1.4.2-py3-none-any.whl.

File metadata

  • Download URL: p_eo-1.4.2-py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.9

File hashes

Hashes for p_eo-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4e021938b0beea46221b78c26917e0fbe1fb45cbb7ceb78e0676cc430b42334d
MD5 423c4c7af8a76cbc543fee0a1f614780
BLAKE2b-256 1aaa3beb80d7df682b9b534008a5e1dde2ef341afdc8f369eb6c7797f5f6068c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page