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 ...
随机推荐
- WEB测试范围小结
根据<用户需求说明手册>和<需求分析说明书>,分析各个功能模块.针对各个功能模块进行相关功能的测试. 链接测试 链接是Web 网站的一个主要特征,它是在页面之间切换和引导用户去 ...
- 数据库--ACID特性
事务的ACID属性 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. 一致性(Consistency) 事务必须使数据库从一个一致性状态变换 ...
- 【传智播客VIP用户专享】Swift教程最新更新
(1)[传智播客VIP用户专享]Swift教程最新更新 特地贡献出来忘帮顶!!(传智内部学院给的) http://pan.baidu.com/s/1jGmRRIu 提取码:i11g 相关资料下载 ...
- formValidator向struts2 ajax传參验证
话不多说,直接上代码 页面head里面的formvalidator验证配置 <script type="text/javascript"> $(document).re ...
- 怎样又一次编译linux内核
linux作为自由软件.在广大爱好者的支持下,内核版本号不断更新. 新的内核修订了就得内核的bug,并添加了很多新的特性.假设用户须要使用这些新的特性或者依据自己的系统量身定做一个更高效或更稳定的内核 ...
- NYOJ_268_荷兰国旗问题
荷兰国旗问题 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描写叙述 荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红.白.蓝.现有若干由红.白.蓝三种颜色的条块序列.要 ...
- Linux下用ImageMagick玩图像魔术【转】
本文转载自:http://www.linuxdiyf.com/linux/11680.html 不管你知不知道,现在是一个用ImageMagick的好机会,至少,如果你是一个Linux用户的话.这是一 ...
- webpack到底怎么用?
webpack到底怎么用? https://www.zhihu.com/question/39290543
- c# xml操作总结
一前言 先来了解下操作XML所涉及到的几个类及之间的关系 如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操作 ...
- php模版静态化技术
PHP页面的静态化很有必要,尤其是在CMS系统中,一些内容一旦生成,基本上不会有变化,这时如果用html将页面静态化,无疑会减少服务其解析PHP页面的负担.以下是看书学来的PHP静态化技术,记录之以备 ...