[python]selenium常用的操作
浏览器
1.火狐浏览器
br = webdriver.Firefox()
#最大化窗口
br.maximize_window()
br.get('http://baidu.com')
2.谷歌浏览器
br = webdriver.Chrome()
#最大化窗口
br.maximize_window()
br.get('http://baidu.com')
3.谷歌浏览器并且设置指定的下载目录,后面断言是否下载到本地
options=webdriver.ChromeOptions()
path=os.path.abspath("..")#表示当前所处的文件夹上一级文件夹的绝对路径
filepath=path+"\\PullFile"
prefs={'profile.default_content_settings.popups':0,'download.default_directory':filepath}
options.add_experimental_option('prefs',prefs) br=webdriver.Chrome(chrome_options=options)
br.maximize_window()
br.get(http://www.baidu.com)
4.PhantomJS浏览器,无界面的执行用例~
br = webdriver.PhantomJS()
br.maximize_window()
br.get("http://www.baidu.com")
4.1 谷歌无头浏览器,相当于PhantomJS
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu')
driver=webdriver.Chrome(chrome_options=chrome_options)
driver.maximize_window()
操作
1.点击动作
driver.find_element_by_id(Location_element).click()
driver.find_element_by_name(Location_element).click()
driver.find_element_by_xpath(Location_element).click()
driver.find_element_by_css_selector(Location_element).click()
2.输入动作,也可以作为上传文件使用
driver.find_element_by_id(Location_element).send_keys(Input_content)
driver.find_element_by_name(Location_element).send_keys(Input_content)
driver.find_element_by_xpath(Location_element).send_keys(Input_content)
driver.find_element_by_css_selector(Location_element).send_keys(Input_content)
3.选择select下拉框的值, Input_content给下拉框option的value值
Select(driver.find_element_by_xpath(Location_element)).select_by_value(Input_content)
Select(driver.find_element_by_name(Location_element)).select_by_value(Input_content)
Select(driver.find_element_by_id(Location_element)).select_by_value(Input_content)
Select(driver.find_element_by_css_selector(Location_element)).select_by_value(Input_content)
4.强制等待
time.sleep(2)
5.智能等待,一直等元素出来再操作, 30是设置的超时时间
driver.implicitly_wait(30)
6.悬浮操作
_ele_key = driver.find_element_by_id(Location_element) #目标元素
ActionChains(driver).move_to_element(_ele_key).perform() #悬浮 _ele_key = driver.find_element_by_name(Location_element) #目标元素
ActionChains(driver).move_to_element(_ele_key).perform() #悬浮 _ele_key = driver.find_element_by_xpath(Location_element) #目标元素
ActionChains(driver).move_to_element(_ele_key).perform() #悬浮 _ele_key = driver.find_element_by_css_selector(Location_element)#目标元素
ActionChains(driver).move_to_element(_ele_key).perform()#悬浮
7.js弹窗确认/取消/输入值确认或取消
# js弹窗确认/取消/输入值确认或取消 Location_element指定义的操作,Input_content指需要输入的文本
def _prompts_js_key(self,driver,Location_element, Input_content): # 拿到页面alert
dialog_box = driver.switch_to_alert()
time.sleep(2)
# 这个判断给需要输入的提示框
if Location_element == u'确认' and Input_content != '':
text = str(Input_content)
dialog_box.send_keys(Input_content)
time.sleep(2)
dialog_box.accept()
time.sleep(2) if Location_element == u'取消' and Input_content != '':
dialog_box.dismiss()
time.sleep(2) #这两个判断是单纯只有确认 取消或确认的提示床
elif Location_element == u'确认' and Input_content == '':
dialog_box.accept()
time.sleep(2) elif Location_element == u'取消' and Input_content == '':
dialog_box.dismiss()
time.sleep(2) else:
pass
8.Autoit通过执行exe上传文件
paths=test._Autoit_file(exe_path)
time.sleep(1)
os.system(paths)
time.sleep(1)
9.切入iframe #给iframe的元素(支持id name xpath...)
time.sleep(1)
driver.switch_to.frame(driver.find_element_by_xpath(Location_element)) #给iframe的元素
time.sleep(1)
10.切出iframe
driver.switch_to_default_content()
11.断言 预期和实际对比下
def _find_value_key(self,driver,Positioning_mode,Location_element,Input_content,output): if Positioning_mode == self.Location_xpath:
#取实际元素的值
value = driver.find_element_by_xpath(Location_element).text
value = value.encode("utf-8")
value = str(value)
# text=str(text)
test=StringManipulation
Input_content = test._filter_value(Input_content) if isinstance(Input_content, int):
Input_content = str(Input_content)
Input_content = Input_content + 'X'
value = value + 'X' if isinstance(Input_content, float):
Input_content = str(Input_content)
Input_content = Input_content + 'X'
value = value + 'X' text = Input_content.encode("utf-8")
text = str(text) if value == text:
print(output,"-----TRUE")
ActualResults=('True')
return ActualResults
else:
print '--------------------------------------'
print ('预期结果',text)
print ('实际结果',value)
print('')
print ('实际结果和预期不匹配')
print '--------------------------------------'
driver.quit()
ActualResults='False'
return ActualResults
else:
print("find目前只用xpath定位方式")
12.回车操作
driver.find_element_by_id(Location_element).send_keys(Keys.ENTER)
13.清除文本框值操作
driver.find_element_by_id(Location_element).clear()
14.写个方法,在下载文件后,判断又没有下载到本地
# 得到目录文件
def file_name(self, file_dir):
for root, dirs, name in os.walk(file_dir):
return name # 查看是否有文件
def list_none(self, value):
if value:
return 'True'
else:
return 'False' # 断言是否下载文件成功
def find_file_key(self,driver,output): test_exc=StringManipulation._pull_file() files = self.file_name(test_exc)
list_value = self.list_none(files) if list_value == 'True': filename = test_exc + files[0]
os.remove(filename)
print(output,"-----TRUE")
ActualRresults='True'
print '下载成功,文件名是', files[0], '因为需要初始化,正在删除此文件.....'
return ActualRresults else:
print '指定的目录没有查询到下载的文件' ActualResults='False'
driver.quit()
return ActualResults
15.当时间选择框不可输入,那么改下js的写进去
# 当时间控件不可输入时,需要用js去除removeAttribute属性再把值写进去
#Positioning_mode==定位方式,Location_element==元素,Input_content输入内容(时间)
def _time_js_input(self,driver,Positioning_mode,Location_element,Input_content): time.sleep(1)
elements=r"'"+Location_element+"'"
if Positioning_mode==self.Location_id:
jsa = "document.getElementById("+elements+").removeAttribute('readonly')"
driver.execute_script(jsa)
if isinstance(Input_content,float):
Input_content=int(Input_content)
Input_content=str(Input_content)
driver.find_element_by_id(Location_element).send_keys(Input_content)
time.sleep(1)
else:
driver.find_element_by_id(Location_element).send_keys(Input_content)
time.sleep(1)
else:
print('对于时间空间暂时先写id方法,后面用到其他在Underlyingkeyword.py维护')
后续有其他操作再补吧~
[python]selenium常用的操作的更多相关文章
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Python之常用文件操作
Python之常用文件操作
- selenium常用命令--操作页面元素及获取元素内容整理
selenium常用命令之操作页面元素及获取元素内容的事件整理 例子: /**id <input type="text" id="phone" name ...
- selenium - 常用元素操作
# 3.常用元素操作 # 元素对象的获取ele = driver.find_element_by_XXX('定位表达式') # 获取元素的文本内容(返回值为元素的文本)ele.text # 获取元素的 ...
- selenium - 常用页面操作
# 2.常用页面操作 # 访问某一个页面url = 'http://www.baidu.com'driver.get(url) # 获取页面的标题title = driver.titleprint(t ...
- python selenium常用基本方法---H5和键盘鼠标操作
一.模拟手机打开页面(H5测试) from selenium import webdriver mobile_emulation = {'deviceName':'iPhone X'} options ...
- python selenium鼠标键盘操作(ActionChains)
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains sele ...
- python selenium模拟滑动操作
selenium.webdriver提供了所有WebDriver的实现,目前支持FireFox.phantomjs.Chrome.Ie和Remote quit()方法会退出浏览器,而close()方法 ...
- selenium - 常用等待操作
# 4. 等待操作 # 强制等待from time import sleepsleep(10) # 隐性等待# 设置最长等待时间,在这个时间在只要有个时间点加载完成,则执行下一步代码,比sleep智能 ...
随机推荐
- Windows系统中的SVN使用方法
Windows 下搭建 SVN(3.9版本)服务器 2018年08月11日 12:22:55 Amarao 阅读数 11984 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议, ...
- CF587F-Duff is Mad【AC自动机,根号分治】
正题 题目链接:https://www.luogu.com.cn/problem/CF587F 题目大意 给出\(n\)个字符串\(s\).\(q\)次询问给出\(l,r,k\)要求输出\(s_{l. ...
- .NET 排序 Array.Sort<T> 实现分析
System.Array.Sort<T> 是.NET内置的排序方法, 灵活且高效, 大家都学过一些排序算法,比如冒泡排序,插入排序,堆排序等,不过你知道这个方法背后使用了什么排序算法吗? ...
- ANTLR学习(一)ANTLR简介和环境搭建
一.ANTLR简介和学习动机 1. ANTLR简介 antlr是指可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器.ANTLR-Another Tool for Language Reco ...
- 【图像处理】基于OpenCV实现图像直方图的原理
背景 图像的直方图是衡量图像像素分布的一种方式,可以通过分析像素分布,使用直方图均衡化对图像进行优化,让图像变的清晰. opencv官方对图像直方图的定义如下: 直方图是图像中像素强度分布的图形表达方 ...
- 使用CEF(三)— 从CEF官方Demo源码入手解析CEF架构与CefApp、CefClient对象
在上文<使用CEF(2)- 基于VS2019编写一个简单CEF样例>中,我们介绍了如何编写一个CEF的样例,在文章中提供了一些代码清单,在这些代码清单中提到了一些CEF的定义的类,例如Ce ...
- 分布式应用开发 | SpringBoot+dubbo+zookeeper实现服务注册发现 | 远程服务调用
前言 通过新建两个独立服务--提供者.消费者,模拟两个独立分布的应用,通过使用dubbo+zookeeper来实现远程服务调用. 目录 项目搭建 provider-server consumer-se ...
- sprintboot整合mybatis查询不出数据
数据库有数据,程序没有任何报错,但是查询结果没有数据,list显示[null,nul]. 检查了sql语句,以及controller.service.mapper,检查没发现问题,怀疑是字段映射问题. ...
- 【UE4 设计模式】单例模式 Singleton Pattern
概述 描述 保证一个类只有一个实例 提供一个访问该实例的全局节点,可以视为一个全局变量 仅在首次请求单例对象时对其进行初始化. 套路 将默认构造函数设为私有, 防止其他对象使用单例类的 new运算符. ...
- rocketmq优雅停机往事
1 时间追溯到2018年12月的某一天夜晚,那天我正准备上线一个需求完就回家,刚点下发布按钮,告警就响起,我擦,难道回不了家了?看着报错量只有一两个,断定只是偶发,稳住不要慌. 把剩下的机器发完,又出 ...