一、元素常用操作

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-常用操作的更多相关文章

  1. Selenium3+python自动化007-Selenium常用定位方法

    自动化测试只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操 ...

  2. 二叉树的python可视化和常用操作代码

    二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...

  3. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  4. selenium3+python自动化50-环境搭建(firefox)【转载】

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  5. Python数据类型及常用操作

    Python字符串类型 1.用途: 用来记录有描述性的状态.比如:人名,地址等. 2.定义方式: 创建字符串非常简单,在‘ ’,“ ”,‘’‘ ’‘’内一填写一系列的字符例如:msg='hello' ...

  6. Python字符串的常用操作学习

    >>> name = "I love my job!" >>> name.capitalize() #首字母大写 'I love my job! ...

  7. Python集合的常用操作

    字典常用的就是,他的去重. set集合是python的一个基本数据类型. set中的元素是不重复的.⽆无序的.⾥面的元素必须是可hash的(int, str, tuple,bool). 我们可以这样来 ...

  8. python os 模块常用操作

    python 2.7 os 常用操作 官方document链接 文件和目录 os.access(path, mode) 读写权限测试 应用: try: fp = open("myfile&q ...

  9. 初识python: 字符串常用操作

    直接上代码示例: #!/user/bin env python # author:Simple-Sir # time:20180914 # 字符串常用操作 name = 'lzh lyh' print ...

随机推荐

  1. [bzoj1050 HAOI2006] 旅行comf (kruskal)

    传送门 Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得 ...

  2. 爬虫系列(十二) selenium的基本使用

    一.selenium 简介 随着网络技术的发展,目前大部分网站都采用动态加载技术,常见的有 JavaScript 动态渲染和 Ajax 动态加载 对于爬取这些网站,一般有两种思路: 分析 Ajax 请 ...

  3. Spring学习总结(2)——Spring的常用注解

    本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). ? 1 <context:compon ...

  4. 百度之星2014资格赛 1003 - Xor Sum

    先上代码: Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)T ...

  5. windows集成身份验证

    集成windows身份验证 这种验证方式里面也分为两种情况 NTLM验证 这种验证方式需要把用户的用户名和密码传送到服务端,服务端验证用户名和密码是否和服务器的此用户的密码一致.用户名用明码传送,但是 ...

  6. C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素

    转自原文 C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素 有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求. 按下面介绍的方法可轻松实现图层属性 ...

  7. 基于java注解实现自己的orm框架

    ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关系. 现在常见的 ...

  8. POJ 3710

    树的删边游戏.. 由于题目的特殊性,我们只需计算环的边数值.若为偶环,则直接把环的根节点置0.若为奇环,则留下一条边与根结点相连,并那它们的SG置0: 注意的是,两个点也可构成环,因为允许重边.所以, ...

  9. spring 获取对象方式

    1 通过配置文件注入 1.配置文件里配置注入信息 2.class中加入注解的接口(set get. 构造函数等) 2.通过注解方式获得 1. 在class中对方法加入注解信息 (类标示 :@Servi ...

  10. hdu 2883 kebab(时间区间压缩 &amp;&amp; dinic)

    kebab Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...