# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select class Pyse(object):
'''
Pyse framework for the main class, the original
selenium provided by the method of the two packaging,
making it easier to use.
''' def __init__(self, browser='chrome'):
'''
Run class initialization method, the default is proper
to drive the Firefox browser. Of course, you can also
pass parameter for other browser, Chrome browser for the "Chrome",
the Internet Explorer browser for "internet explorer" or "ie".
'''
# if browser == "firefox" or browser == "ff":
# driver = webdriver.Firefox()
# elif browser == "chrome":
# option = webdriver.ChromeOptions()
# option.add_argument("--start-maximized")
# driver = webdriver.Chrome(chrome_options=option)
# elif browser == "internet explorer" or browser == "ie":
# driver = webdriver.Ie()
# elif browser == "opera":
# driver = webdriver.Opera()
# elif browser == "phantomjs":
# driver = webdriver.PhantomJS()
# elif browser == 'edge':
# driver = webdriver.Edge()
# try:
# self.driver = driver
# except Exception:
# raise NameError(
# "Not found %s browser,You can enter 'ie', 'ff', 'opera', 'phantomjs', 'edge' or 'chrome'." % browser) if browser.lower() == 'chrome':
option = webdriver.ChromeOptions()
option.add_argument('--start-maximized')
driver = webdriver.Chrome(chrome_options=option)
elif browser.lower() == 'firefox' or browser.lower() == 'ff':
driver = webdriver.Firefox()
elif browser.lower() == 'ie' or browser.lower() == 'internet explorer':
driver = webdriver.Ie()
elif browser.lower() == 'opera':
driver = webdriver.Opera()
elif browser.lower() == 'phantomjs':
driver = webdriver.PhantomJS
elif browser.lower() == 'edge':
driver = webdriver.Edge()
try:
self.driver = driver
except Exception:
raise NameError(
"Not found %s browser,You can enter 'ie', 'ff', 'opera', 'phantomjs', 'edge' or 'chrome'." % browser) def element_wait(self, css, secs=5):
'''
Waiting for an element to display. Usage:
driver.element_wait("css=>#el",10)
'''
if "=>" not in css:
raise NameError("Positioning syntax errors, lack of '=>'.") by = css.split("=>")[0]
value = css.split("=>")[1] if by == "id":
WebDriverWait(self.driver, secs, 1).until(EC.presence_of_element_located((By.ID, value)))
elif by == "name":
WebDriverWait(self.driver, secs, 1).until(EC.presence_of_element_located((By.NAME, value)))
elif by == "class":
WebDriverWait(self.driver, secs, 1).until(EC.presence_of_element_located((By.CLASS_NAME, value)))
elif by == "link_text":
WebDriverWait(self.driver, secs, 1).until(EC.presence_of_element_located((By.LINK_TEXT, value)))
elif by == "xpath":
WebDriverWait(self.driver, secs, 1).until(EC.presence_of_element_located((By.XPATH, value)))
elif by == "css":
WebDriverWait(self.driver, secs, 1).until(EC.presence_of_element_located((By.CSS_SELECTOR, value)))
else:
raise NameError(
"Please enter the correct targeting elements,'id','name','class','link_text','xpath','css'.") def get_element(self, css):
'''
Judge element positioning way, and returns the element.
'''
if "=>" not in css:
raise NameError("Positioning syntax errors, lack of '=>'.") by = css.split("=>")[0]
value = css.split("=>")[1] if by == "id":
element = self.driver.find_element_by_id(value)
elif by == "name":
element = self.driver.find_element_by_name(value)
elif by == "class":
element = self.driver.find_element_by_class_name(value)
elif by == "link_text":
element = self.driver.find_element_by_link_text(value)
elif by == "xpath":
element = self.driver.find_element_by_xpath(value)
elif by == "css":
element = self.driver.find_element_by_css_selector(value)
else:
raise NameError(
"Please enter the correct targeting elements,'id','name','class','link_text','xpath','css'.")
return element def get(self, url):
'''
open 请求url. Usage:
driver.open("https://www.baidu.com")
'''
self.driver.get(url) def max_window(self):
'''
Set browser window maximized. Usage:
driver.max_window()
'''
self.driver.maximize_window() def set_window(self, wide, high):
'''
Set browser window wide and high. Usage:
driver.set_window(wide,high)
'''
self.driver.set_window_size(wide, high) def type(self, css, text):
'''
Operation input box 发送value Usage:
driver.type("css=>#el","selenium")
'''
self.element_wait(css)
el = self.get_element(css)
el.send_keys(text) def clear(self, css):
'''
Clear the contents of the input box. Usage:
driver.clear("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
el.clear() def click(self, css):
'''
It can click any text / image can be clicked
Connection, check box, radio buttons, and even drop-down box etc.. Usage:
driver.click("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
el.click() def right_click(self, css):
'''
Right click element. Usage:
driver.right_click("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
ActionChains(self.driver).context_click(el).perform() def move_to_element(self, css):
'''
Mouse over the element. Usage:
driver.move_to_element("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
ActionChains(self.driver).move_to_element(el).perform() def double_click(self, css):
'''
Double click element. Usage:
driver.double_click("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
ActionChains(self.driver).double_click(el).perform() def drag_and_drop(self, el_css, ta_css):
'''
Drags an element a certain distance and then drops it. Usage:
driver.drag_and_drop("css=>#el","css=>#ta")
'''
self.element_wait(el_css)
element = self.get_element(el_css)
self.element_wait(ta_css)
target = self.get_element(ta_css)
ActionChains(self.driver).drag_and_drop(element, target).perform() def click_text(self, text):
'''
Click the element by the link text Usage:
driver.click_text("新闻")
'''
self.driver.find_element_by_partial_link_text(text).click() def close(self):
'''
Simulates the user clicking the "close" button in the titlebar of a popup
window or tab. Usage:
driver.close()
'''
self.driver.close() def quit(self):
'''
Quit the driver and close all the windows. Usage:
driver.quit()
'''
self.driver.quit() def submit(self, css):
'''
Submit the specified form. Usage:
driver.submit("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
el.submit() def F5(self):
'''
Refresh the current page. Usage:
driver.F5()
'''
self.driver.refresh() def back(self):
self.driver.back() def go_on(self):
self.driver.forward() def js(self, script):
'''
Execute JavaScript scripts. Usage:
driver.js("window.scrollTo(200,1000);")
'''
self.driver.execute_script(script) def get_attribute(self, css, attribute):
'''
Gets the value of an element attribute. Usage:
driver.get_attribute("css=>#el","type")
'''
el = self.get_element(css)
return el.get_attribute(attribute) def get_text(self, css):
'''
Get element text information. Usage:
driver.get_text("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
return el.text def get_display(self, css):
'''
Gets the element to display,The return result is true or false. Usage:
driver.get_display("css=>#el")
'''
self.element_wait(css)
el = self.get_element(css)
return el.is_displayed() def get_title(self):
'''
Get window title. Usage:
driver.get_title()
'''
return self.driver.title def get_url(self):
'''
Get the URL address of the current page. Usage:
driver.get_url()
'''
return self.driver.current_url def get_windows_img(self, file_path):
'''
Get the current window screenshot. Usage:
driver.get_windows_img()
'''
self.driver.get_screenshot_as_file(file_path) def wait(self, secs):
'''
Implicitly wait.All elements on the page. Usage:
driver.wait(10)
'''
self.driver.implicitly_wait(secs) def accept_alert(self):
'''
Accept warning box. Usage:
driver.accept_alert()
'''
self.driver.switch_to.alert.accept() def dismiss_alert(self):
'''
Dismisses the alert available. Usage:
driver.dismiss_alert()
'''
self.driver.switch_to.alert.dismiss() def switch_to_frame(self, css):
'''
Switch to the specified frame. Usage:
driver.switch_to_frame("css=>#el")
'''
self.element_wait(css)
iframe_el = self.get_element(css)
self.driver.switch_to.frame(iframe_el) def parent_iframe(self):
self.driver.switch_to.parent_frame() def switch_to_frame_out(self):
'''
Returns the current form machine form at the next higher level.
Corresponding relationship with switch_to_frame () method. Usage:跳转到最外层的页面
driver.switch_to_frame_out()
'''
self.driver.switch_to.default_content() def open_new_window(self, css):
'''
Open the new window and switch the handle to the newly opened window. Usage:
driver.open_new_window()
'''
original_windows = self.driver.current_window_handle
el = self.get_element(css)
el.click()
all_handles = self.driver.window_handles
for handle in all_handles:
if handle != original_windows:
self.driver.switch_to.window(handle) # def _save_png(self, name):
# self.get_windows_img(name) def wait_and_save_exception(self, css, name):
try:
self.element_wait(css, secs=5)
return True
except Exception as e:
from lib.core.path import PICTUREPATH
self.get_windows_img(PICTUREPATH + name + '.jpg')
return False def wait_and_exception(self, css):
try:
self.element_wait(css, secs=10)
return True
except Exception as e:
return False def select_by_value(self, css, value):
self.element_wait(css)
el = self.get_element(css)
Select(el).select_by_value(value) if __name__ == '__main__':
pyse = Pyse('Chrome')
pyse.get("http://")
pyse.get_element('css=>#i1').send_keys(111111)
time.sleep(3)
pyse.quit()
  

UI自动化-selenium-api封装pyse框架的更多相关文章

  1. UI自动化selenium

    1.什么是UI自动化?模拟人用代码的方式去操作页面2.为什么要做UI自动化?后期迭代的时候,老功能比较多,人工维护成本较大,重复性工作较多,这个时候就考虑因为UI自动化3.什么时候做UI自动化?项目稳 ...

  2. UI自动化(selenium+python)之元素定位的三种等待方式

    前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况.这种情况下,需要用等待wait. 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverW ...

  3. UI自动化学习笔记- UnitTest单元测试框架详解

    一.UnitTest基本使用 1. UnitTest框架 1.1 什么是框架 说明: 框架英文单词frame 为解决一类事情的功能集合 1.2什么是UnitTest框架 概念:UnitTest是pyt ...

  4. UI自动化(selenium+python)之浏览器驱动chromedriver安装和配置

    一.安装selenium 前提是已安装Python,python安装 自行百度,这里不概述 安装好python后,cmd打开终端窗口-->pip命令安装 :pip install seleniu ...

  5. UI自动化填写问卷(selenium)+定时任务(懒人必备)

    1.自动填报 UI自动化 selenium 开发程序动机:天天有人催着填写问卷,弄的头大.主要还是懒的每天一个个去填写内容. 开发总时长:2个小时:学习+开发+修改 遇到的小问题: 在自动化填写地图的 ...

  6. Airtest 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架同时也支持原生Android App 的基于元素识别的UI自动化测试.本文主要使用目 ...

  7. 网易 UI 自动化工具 Airtest 浅用记录

    一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架 同时也支持原生Android App 的基于元素识别的UI自动化测试. 本文主要使 ...

  8. poium测试库之JavaScript API封装原理

    poium一直我在维护的一个开源项目,它的定位是以极简的方式在自动化项目中Page Objects设计模式.我在之前的文章中也有介绍. 本篇文章主要介绍一个JavaScript元素操作的封装原理. 为 ...

  9. selenium(12)-web UI自动化项目实战(PO模式,代码封装)

    web UI自动化项目实战-项目 项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见 https://www.cnblogs.com/xinhua19/p/13151296.html 搭建U ...

随机推荐

  1. 第一篇.1、python基础之核心风格

    一.语句和语法 #:注释 \:转译回车,继续上一行,在一行语句较长的情况下可以使用其来切分成多行,因其可读性差所以不建议使用 ::将两个语句连接到一行,可读性差,不建议使用 ::将代码的头和体分开 语 ...

  2. tornado实现高并发爬虫

    from pyquery import PyQuery as pq from tornado import ioloop, gen, httpclient, queues from urllib.pa ...

  3. flume--为搬砖而生,日志传输的一把好手

    (一)flume的产生 为什么会有flume 随着互联网的发展,人们对网络日志产生的信息也越来越重视.不仅如此,我们的服务器,比如Nginx,每天都会产生大量的日志.我们要将这些日志收集到指定的地方, ...

  4. Linux查看系统开机和关机时间

    1.who 命令查看 who   -b    查看最后一次系统启动的时间 who   -r     查看当前系统运行时间   [root@test ~]# who -b          system ...

  5. Django学习系列9:接着修改首页

    现在的功能测试还是失败的,继续修改代码,让其通过.因为HTML现在保存在模板中,可以尽情修改,无需编写额外的单元测试.我们需要一个<h1>元素 修改:lists/templates/hom ...

  6. 第三次java测验2

    package java3; public class Suiji { public long a=12345L;//定义long类型的a,b,c变量 public long c=12345L; pu ...

  7. Sql service 分页存储过程

    create database Exam_Week3 GO USE Exam_Week3 GO create table Classs ( ClaID ,), ClassName ), Counts ...

  8. 前端面试题-CSS优先级

    一.选择器优先级 浏览器通过优先级来判断哪一些属性值与一个元素最为相关,从而在该元素上应用这些属性值.优先级是基于不同种类选择器组成的匹配规则. 二.优先级计算 优先级就是分配给指定的CSS声明的一个 ...

  9. 【Linux学习一】命令行CLI、BASH的基本操作

    ●操作系统的基本结构 操作系统的基本结构通过Kernel(内核)和Shell(壳)构成.常见的Shell分为GUI和CLI GUI 图形方面的shell ------〉windows .mac osC ...

  10. WTL自定义控件:SubclassWindow的实现

    自定义了一个edit类如下: class CCheckEditEx : public CWindowImpl< CCheckEditEx, CEdit > 其SubclassWindow函 ...