selenium主要功能封装
最近实习需要使用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主要功能封装的更多相关文章
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- js实现第一次打开网页弹出指定窗口(常用功能封装很好用)
js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...
- Java&Selenium截图方法封装
Java&Selenium截图方法封装 package util; import org.apache.commons.io.FileUtils; import org.openqa.sele ...
- Python爬虫之selenium高级功能
Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...
- STM32嵌入式开发学习笔记(二):将功能封装为库文件
将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里 ...
- 一篇文章搞定Selenium元素定位/封装/数据驱动
小伙伴都知道,自动化最重的,又最"难"(因为实战中会碰到定位的各种坑)那就是定位元素.如果不熟练掌握定位,那只怕你比功能测式的小伙伴下班还会要晚!扎心了吧! Selenium常用定 ...
- JQuery实现列表中复选框全选反选功能封装
我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如: 我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的 ...
- Android Toast的多功能封装——Android开发之路1
Android封装实现各种功能的Toast GitHub地址:https://github.com/SibreiaDante/ToastUtils 效果图: 方法封装如下: showSingleton ...
- python selenium webdriver方法封装(find_element_by)
下面是对find_element_by_就行了封装,封装之后的高级方法就是getElement() 下面是具体的代码: def getElement(self, selector): "&q ...
随机推荐
- poj 1079 Calendar Game(博弈论 SG)
Calendar Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- App功能测试的7大注意点
转载于:https://mp.weixin.qq.com/s/27DZ1EQVpl-gb4S7n-He4g 01 运行 1)App安装完成后的试运行,可正常打开软件. 2)App打开测试,是否有加载状 ...
- Hibernate学习之单向多对一映射
© 版权声明:本文为博主原创文章,转载请注明出处 说明:该实例是通过映射文件和注解两种方式实现的.可根据自己的需要选择合适的方式 实例: 1.项目结构 2.pom.xml <project xm ...
- HUAWEI HiAI亮相Droidcon柏林2018开发者峰会 开启HiAI海外生态
柏林时间6月25日到27日,华为HiAI亮相Droidcon柏林2018开发者峰会,有1200多位海外开发者参加了此次峰会,来自HUAWEI HiAI领域的多名专家携手Prisma和金山WPS,以“E ...
- excel表格系列
MicroSoft Excel表格系列问题 1.excel表格修改默认行高 2.[Excel技巧]Excel实现部分保护技巧
- OpenCv for Android 环境搭建
最近工作需要这样的功能 如下图 要在类似功能在android上实现 然后实现成这样 这两张图来自博客:图像校正—透视变换 可惜他用的是C/C++语言写的调用opencv,我参考了下他写的方案就想到了a ...
- Nginx+tomcat集群中,session的共享
nginx,tomcat集群后多个session分配到同一个应用 单节点低负荷的情况下,我们通常把一个WEB应用打成WAR包放WEB应用服务器,如TOMCAT下运行就行了(如图1).但随着用户量的增加 ...
- vim visual模式 复制
按ESC再按“V”,进入visual模式 用键盘向左向右箭头选中要复制的文字,按两下"Y"键 再到要粘贴的地方,按“P”键即可. 转自: http://jingyan.baidu. ...
- shader随记
o.WorldPos = normalize(mul((float4x4)unity_ObjectToWorld, v.vertex)).xyz;
- PHPstorm如何导入字体主题
概要: 今天在安装phpstorm的时候发现导入字体主题时,出了问题,这个问题总是困惑我,并且曾经遇到过,没记录下来,所以想着这次记录下来吧.网上搜的稀里糊涂的,还是自己做个summary! 前提: ...