最近实习需要使用selenium这一自动化工具对公司的运维监控系统进行自动化爬取数据,编写代码过程中负责带我的杰哥让我参考借鉴他们公司外包的运维监控系统代码,在项目中我看到了对selenium主要各功能的封装重写,使用selenium过程中也体会到了该封装代码的便利性。

 import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By #按钮点击 Brands是按钮的css选择器能定位的页面结构
def Clicks(driver, Brands, time_s=120):
time.sleep(0.5)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
element.click() #文本输入 contants是希望输入的文本内容
def TypeIns(driver, Brands, contants, time_s=120):
time.sleep(0.5)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
element.clear() #将原文本内容清空
time.sleep(0.5)
element.send_keys(contants) def TheDropDownChoices(driver, Brands, contants, time_s=120):
time.sleep(0.5)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
element.select_by_visible_text(contants) def TheDropDownChoicesIndex(driver, Brands, index, time_s=120):
time.sleep(0.5)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
element.select_by_index(index) def Hoverings(driver, Brands, time_s=120):
time.sleep(1)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
ActionChains(driver).move_to_element(element).perform() #根据css选择器由Brands定位的网页结构返回想要的文本内容
def InformationAcquisition(driver, Brands, time_s=120):
time.sleep(0.5)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
return element.text def InformationAcquisitions(driver, Brands, time_s=120):
time.sleep(0.5)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
return element.text #句柄切换到页面内置frame框架(selenium无法定位到页面内框架中元素)
#关于frame的切换和定位可参考 http://blog.csdn.net/huilan_same/article/details/52200586
def IframeCss(driver, Brands, time_s=120):
time.sleep(0.5)
element = WebDriverWait(driver, time_s, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, Brands)))
driver.switch_to.frame(driver.find_element_by_css_selector(Brands))

selenium主要功能封装的更多相关文章

  1. python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...

  2. js实现第一次打开网页弹出指定窗口(常用功能封装很好用)

    js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...

  3. Java&Selenium截图方法封装

    Java&Selenium截图方法封装 package util; import org.apache.commons.io.FileUtils; import org.openqa.sele ...

  4. Python爬虫之selenium高级功能

    Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...

  5. STM32嵌入式开发学习笔记(二):将功能封装为库文件

    将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里 ...

  6. 一篇文章搞定Selenium元素定位/封装/数据驱动

    小伙伴都知道,自动化最重的,又最"难"(因为实战中会碰到定位的各种坑)那就是定位元素.如果不熟练掌握定位,那只怕你比功能测式的小伙伴下班还会要晚!扎心了吧! Selenium常用定 ...

  7. JQuery实现列表中复选框全选反选功能封装

    我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如: 我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的 ...

  8. Android Toast的多功能封装——Android开发之路1

    Android封装实现各种功能的Toast GitHub地址:https://github.com/SibreiaDante/ToastUtils 效果图: 方法封装如下: showSingleton ...

  9. python selenium webdriver方法封装(find_element_by)

    下面是对find_element_by_就行了封装,封装之后的高级方法就是getElement() 下面是具体的代码: def getElement(self, selector): "&q ...

随机推荐

  1. MYSQL总结之sql语句大全

    一.基础1.说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...

  2. Java 分页之最简单的算法

    分页实现有很多方式,如jQuery自带框架pagination或在java封装一个类pager等.   下写一个简单易懂的分页算法   逻辑:   // 步骤1:设置每页页数大小 long pageS ...

  3. view无限旋转

    - (void) showRefreshAnimation { [UIView animateWithDuration: options:UIViewAnimationOptionCurveLinea ...

  4. jira报错,此域不支持您输入的日期

    jira报错,此域不支持您输入的日期 解决方法: 使用20117-1-1这样的格式输入,不要用选择日期.具体原因未知.

  5. StringUtils工具类详解

    StringUtils判断字符串大概有四种方法: 下面是 StringUtils 判断是否为空的示例: 判断是否为空,但是要注意,空格不算空,这个最好能不用则不用. StringUtils.isEmp ...

  6. fastjson List<> 转Json , Json 转List<>

    SerializeWriter:相当于StringBuffer JSONArray:相当于List<Object> JSONObject:相当于Map<String, Object& ...

  7. C# 为枚举创建新方法

    可以使用扩展方法添加特定于某个特定枚举类型的功能. 示例在下面的示例中,Grades 枚举表示学生可能在班里收到的字母等级分.该示例将一个名为 Passing 的扩展方法添加到 Grades 类型中, ...

  8. Apache安全和强化的十三个技巧

    Apache是一个很受欢迎的web服务器软件,其安全性对于网站的安全运营可谓生死攸关.下面介绍一些可帮助管理员在Linux上配置Apache确保其安全的方法和技巧. 本文假设你知道这些基本知识: 文档 ...

  9. Tomcat9源码分析:BootStrap

    概览 BootStrap源码所在的位置是:org.apache.catalina.startup.Bootstrap 这个类是Tomcat项目的启动类,也就是main函数所在的地方,起始tomcat就 ...

  10. Android开发 adb命令提示:Permission denied (转)

    如题:模拟器版本->android 7.1.1 遇到这样的情况把模拟器root一下就好了:su root =============2017年4月3日20:57:33============== ...