Selenium3+python自动化008-常用操作
一、元素常用操作
1. clear() 清除文本
2. send_keys() 模拟输入
3. click() 单击元素
4.get_attribute 获取元素属性
5.driver.close() 关闭当前窗口
6.driver.quite() 关闭所有窗口,结束driver运行
from selenium import webdriver
from time import sleep
import os driver=webdriver.Chrome()
# 窗口最大化
driver.maximize_window() # os.getcwd()用法:执行文件(***.py文件)与html文件在同一目录下
url='file:///' + os.getcwd()+'/html/注册A.html'
driver.get(url) username=driver.find_element_by_id('userA')
username.send_keys('admin')
sleep(3)
# 清除文本框内容
username.clear() # 获取元素属性
print(username.get_attribute('placeholder')) sleep(3)
driver.quit()
常用方法
二、WebDriver操作鼠标键盘操作
鼠标操作:
1. 导包:from selenium.webdriver.common.action_chains import ActionChains
2. 实例化ActionChains对象:Action=ActionChains(driver)
说明:在WebDriver中将操作鼠标的方法封装在ActionChains类中
(1)context_click() 右击 --> 此方法模拟鼠标右键点击效果
(2)double_click() 双击 --> 此方法模拟鼠标双击效果
(3)drag_and_drop() 拖动 --> 此方法模拟鼠标拖动效果
(4)move_to_element() 悬停 --> 此方法模拟鼠标悬停效果
(5)perform() 执行 --> 此方法用来执行以上所有鼠标方法
# coding="utf-8" from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
from selenium.webdriver.common.alert import Alert
from time import time # driver = webdriver.Firefox()
driver = webdriver.Chrome()
url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable" driver.get(url)
# 切换到目标元素所在的frame
driver.switch_to.frame("iframeResult")
# 确定拖拽目标的起点
source = driver.find_element_by_id("draggable")
# 确定拖拽目标的终点
target = driver.find_element_by_id("droppable")
# 形成动作链接
actions = ActionChains(driver)
actions.drag_and_drop(source, target) # 执行
actions.perform()
sleep(5)
driver.quit()
鼠标操作
键盘操作:
导包:from selenium.webdriver.common.keys import Keys
ActionChains实现方法:
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').\
key_up(Keys.CONTROL).perform()
模拟组合按键操作:
1. send_keys(Keys.BACK_SPACE)删除键(BackSpace)
2. send_keys(Keys.SPACE)空格键(Space)
3. send_keys(Keys.TAB)制表键(Tab)
4. send_keys(Keys.ESCAPE)回退键(Esc)
5. send_keys(Keys.ENTER)回车键(Enter)
6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
7. send_keys(Keys.CONTROL,'c')复制(Ctrl+C)
8. send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)
7. send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)
from selenium import webdriver
from time import sleep
import os
# 导包
from selenium.webdriver.common.keys import Keys driver=webdriver.Chrome()
driver.maximize_window()
url='file:///' + os.getcwd()+'/html/注册A.html'
driver.get(url) '''
需求:
1). 输入用户名:admin1,暂停2秒 删除1
2). 全选用户名:admin 暂停2秒
3). 复制用户名:admin 暂停2秒
4). 粘贴到密码框 暂停2秒
5). 关闭浏览器
''' # 定位用户名编辑框
element=driver.find_element_by_id("userA")
# 定位密码编辑框
plassword=driver.find_element_by_id('passwordA')
# 输入用户名
element.send_keys("admin1")
# 删除1
element.send_keys(Keys.BACK_SPACE)
# 全选
element.send_keys(Keys.CONTROL,'a')
# 复制
# element.send_keys(Keys.CONTROL,'c') # 剪切
element.send_keys(Keys.CONTROL,'x') # 粘贴
plassword.send_keys(Keys.CONTROL,'v') sleep(3)
driver.quit()
键盘操作
模拟键盘单个按键操作
send_keys(Keys.F12)
send_keys(Keys.ENTER)
三、操作下拉列表 select方法
1. select_by_index() --> 根据option索引来定位,从0开始
2. select_by_value() --> 根据option属性 value值来定位
3. select_by_visible_text() --> 根据option显示文本来定位
# 导入Webdrive包
from selenium import webdriver
from time import sleep
import os # 导入select类
from selenium.webdriver.support.select import Select
# 实例化浏览器对象
driver=webdriver.Chrome()
url='file:///' + os.getcwd()+'/html/注册A.html'
driver.get(url) '''
定位option方式:
find_elements_xxx()
tag_name:option--演示
css selector--演示
Xpath
'''
# 第一种方法:使用tag_name
'''
options=driver.find_elements_by_tag_name("option")
for el in options:
if el.text=="A上海":
sleep(2)
#点击
el.click()
for el in options:
if el.get_attribute("value")=="cq":
sleep(2)
#点击
el.click()
for el in options:
if el.text=="A广州":
sleep(2)
#点击
el.click()
'''
# 第二种方法-select类
# 第一步实例化Select
select=Select(driver.find_element_by_css_selector("#selectA")) sleep(2)
select.select_by_visible_text('A上海')
sleep(2)
select.select_by_value("sh")
sleep(2)
select.select_by_index(2) #打印所有的选中项文本
for option in select.all_selected_options:
print(option.text) sleep(2)
driver.quit()
下列列表
四、多窗口切换
说明:在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
(句柄:英文handle,窗口的唯一识别码)
方法:
1). driver.current_window_handle --> 获取当前窗口句柄
2). driver.window_handles --> 获取所有窗口句柄
3). driver.switch_to.window(handle) --> 切换指定句柄窗口
# 导入Webdrive包
from selenium import webdriver
from time import sleep
import os # 实例化浏览器对象
driver=webdriver.Chrome()
url='file:///' + os.getcwd()+'/html/注册实例.html'
driver.get(url)
'''
1. 获取注册实例.html当前窗口句柄
2. 点击注册实例.html页面中注册A页面
3. 获取所有窗口句柄
4. 遍历判断窗口句柄并切换到注册A页面
5. 操作注册A页面元素,注册信息
'''
# 第一步获取当前窗口句柄
cur_handle=driver.current_window_handle
print('默认打开的窗口:',driver.window_handles)
print('第一个窗口:',driver.current_window_handle) # 定位-点击注册A页面
driver.find_element_by_css_selector("#ZCA").click() # 第三步:获取所有窗口句柄
all_handles=driver.window_handles
print('当前所有句柄',all_handles) driver.switch_to_window(all_handles[1])
sleep(2)
driver.close()
print('关闭一个以后,打开的窗口:',driver.window_handles) driver.switch_to_window(all_handles[1])
sleep(1)
driver.close()
driver.switch_to_window(all_handles[0]) # 第四步:遍历(只有两个窗口)
for handle in all_handles:
print("遍历窗口handle为:",handle)
if handle !=cur_handle:
driver.switch_to.window(handle)
# 填写注册A-注册信息
driver.find_element_by_css_selector("#userA").send_keys("admin")
driver.find_element_by_css_selector("#passwordA").send_keys("")
driver.find_element_by_css_selector("#telA").send_keys("")
driver.find_element_by_css_selector("#emailA").send_keys("123@qq.com") sleep(2)
driver.quit()
多窗口切换
Selenium3+python自动化008-常用操作的更多相关文章
- Selenium3+python自动化007-Selenium常用定位方法
自动化测试只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操 ...
- 二叉树的python可视化和常用操作代码
二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...
- selenium3+python自动化50-环境搭建(firefox)
前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...
- selenium3+python自动化50-环境搭建(firefox)【转载】
前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...
- Python数据类型及常用操作
Python字符串类型 1.用途: 用来记录有描述性的状态.比如:人名,地址等. 2.定义方式: 创建字符串非常简单,在‘ ’,“ ”,‘’‘ ’‘’内一填写一系列的字符例如:msg='hello' ...
- Python字符串的常用操作学习
>>> name = "I love my job!" >>> name.capitalize() #首字母大写 'I love my job! ...
- Python集合的常用操作
字典常用的就是,他的去重. set集合是python的一个基本数据类型. set中的元素是不重复的.⽆无序的.⾥面的元素必须是可hash的(int, str, tuple,bool). 我们可以这样来 ...
- python os 模块常用操作
python 2.7 os 常用操作 官方document链接 文件和目录 os.access(path, mode) 读写权限测试 应用: try: fp = open("myfile&q ...
- 初识python: 字符串常用操作
直接上代码示例: #!/user/bin env python # author:Simple-Sir # time:20180914 # 字符串常用操作 name = 'lzh lyh' print ...
随机推荐
- netty helloWord (一)
什么是nettty netty是基于javaNio模型的网络编程框架.很多框架底层也是用netty实现的 比如dubbo 与NIO的区别 1.简化了API的使用.基于事件驱动.只需要在对应的事件写相应 ...
- 零基础学python-2.16 列表解析
这一节聊聊强大的列表解析 主要就是在一行里面赋值给列表 以下我们举两个样例: 上面的样例我们引入了range函数,他主要作用是在一定范围里面取整数值 我来解释一下中括号中面的那一句:x**2 for ...
- 一个使用命令行编译Android项目的工具类
一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...
- php抓取网页
用php抓取页面的内容在实际的开发其中是很实用的,如作一个简单的内容採集器,提取网页中的部分内容等等.抓取到的内容在通过正則表達式做一下过滤就得到了你想要的内容.下面就是几种经常使用的用php抓取网页 ...
- 开源前夕先给大家赞赏一下我用C语言开发的云贴吧 站点自己主动兼容-移动、手机、PC自己主动兼容云贴吧
开源前夕先给大家赞赏一下我用C语言开发的移动.手机.PC自己主动兼容云贴吧 - 涨知识属马超懒散,属虎太倔强.十二生肖全了!-转自云寻觅贴吧 转: 涨知识属马超懒散,属虎太倔强.十二生肖全了! -转自 ...
- spring中使用HibernateTemplate或HibernateDaoSupport报类型转换错误
使用spring的HibernateDaoSupport的时候.报错例如以下: java.lang.ClassCastException: java.lang.String cannot be cas ...
- UVA 1201 - Taxi Cab Scheme(二分图匹配+最小路径覆盖)
UVA 1201 - Taxi Cab Scheme 题目链接 题意:给定一些乘客.每一个乘客须要一个出租车,有一个起始时刻,起点,终点,行走路程为曼哈顿距离,每辆出租车必须在乘客一分钟之前到达.问最 ...
- hdoj--1083--Courses(最大匹配)
Courses Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- findContours 轮廓查找
物体的轮廓勾勒出了物体的整体形状,物体形状的边界像素一起组合成了轮廓. 灰度图像边界的明显特征是边界两侧灰度级的突变,根据这个特征,使用Sobel.拉普拉斯或Canny之类的边缘检测算子可以有效的检测 ...
- js设计模式-享元模式
享元模式实际上是一种优化模式,目的在于提高系统的性能和代码的效率. 使用享元模式的条件:最重要的条件是网页中必须使用了大量资源密集型对象,如果只会用到了少许这类对象,那么这种优化并不划算.第二个条件是 ...