selenium_UI自动化——篇1(基础)
元素定位的几种方式:
(1)driver.find_element_by_id("idname")
(2)driver.find_element_by_name("name")
(3)driver.find_element_by_class_name("classname")
(4)driver.find_element_by_tag_name("tagname")——tag:<div><input><a>
(5)driver.find_element_by_link_text("linkurl")——link
(6)driver.find_element_by_partial_link_text("")——link里面的文本
(7)driver.find_element_by_xpath(" ")
——eg:find_element_by_xpath(“//input[@id='kw']/span”)
——//表示当前页面某个目录下,input表示定位元素的标签名,[@id='kw']表示这个元素的id属性值等于kw,然后再定位到下一级的span
——与css_selector 的区别在于,同级用[@xxxx]来表示,下级用/,@可能是表id,name,class,*元素的任意属性值都可以用,比如,@maxlength='100',@autocomplete='off',@type='submit',
(8)driver.find_element_by_css_selector("")——可以内含classname,idname,*,元素标签,父子元素>,紧接着的元素+,attribute
——eg:find_element_by_css_selector(".s_ipt")//classname——(“#idname”)——(“span>input”)父子——(“[name='kw']”)另一种写法——(“[type='submit']”)——("*")所有元素
(9)用By来定位元素,相当于另外一套写法
driver.find_element(By.ID,'kw')……NAME,CLASS_NAME,XPATH,PARTIAL_LINK_TEXT
====================================================
举个例子:
driver=webdriver.chrome()
file_path = “www.baidu.com”
driver.get(file_path)
==================================================
控制浏览器
(1)driver.get("url")
(2)driver.quit()
(3)driver.close()
浏览器有两个tab,此时close方法就只能关闭driver正在操作的窗口而不能关闭浏览器了。
(1)控制浏览器窗口大小
driver.set_window_size()
driver.maximize_window()
(2)控制浏览器后退、前进
driver.back()
driver.forward()
(3)模拟浏览器刷新
driver.refresh()
(4)简单元素操作
clear()//清除文本
send_keys()//模拟按键输入
click() //单击元素
webElement接口常用方法
submit()
size
text
get_attribute(name)
is_displayed()
-------------------------------------
driver.find_element_by_id("idname").click()
driver.find_element_by_id("idname").size
driver.find_element_by_id("idname").text
driver.find_element_by_id("idname").get_attribute('type')
driver.find_element_by_id("searchbox").submit()
鼠标事件封装在ActionChains中
右击 context_click(xxx)
双击double_click()
拖动drag_and_drop()
鼠标悬停move_to_element()
right_click= driver.find_element_by_id("xx")
AcitonChains(driver).context_click(right_click).perform()
perform()执行所有ActionChains中的存储的行为,理解为整个操作的提交动作
================================================================
键盘事件
send_keys("text")
send_keys(Keys.TAB)
send_keys(Keys.CONTROL,'a')=====ctrl+A
driver.find_element_by_id("idname").send_keys(Keys.TAB)
=================================================================
获取验证信息
通常有:title, URL, text
title=driver.title
now_url=driver.current_url
text=driver.find_element_by_id(‘idname’).text
===================================================================
设置元素等待
WebDriver 提供了两种类型的等待,显示等待和隐式等待
显示等待:WebDriverWait()
————WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
timeout:最长超过事件,默认以秒单位
poll_frequency:检测的时间间隔,默认为0.5s
ignored_exceptions:超时候的异常信息,默认情况下抛NoSuchElementException异常
until(method,message='xxxx')
————eg:
————element= WebDriverWait(driver,5,0.5).until(expected_conditions.presence_of_element_located((By.ID,"kw")))
————element.send_keys("hhh")
-----------------------------------------------------------------------------------------
预期条件判断方法见表格p97
-------------------------------------------------------------------------------------------
隐式等待:implicitly_wait(10)超过10s还未被加载,抛出nosuchelementexception
显示等待才:until,until_not
is_displayed()
=======================================================
休眠方法
sleep(5)
=======================================================
定位一组元素
eg:选择页面上所有的tagname为input的元素
inputs=driver.find_element_by_tag_name('input')
过滤出type为checkbox的元素,单击勾选
for i in inputs:
if i.get_attribute('type')=='checkbox'
i.click()
time.sleep(1)
=========================================================
多表单切换
switch_to.frame()讲当前定位的主体切换到frame/iframe 表单的内嵌页面中,参数可以取表单的id或name
switch_to.window()跳回到最外层的页面
==========================================================
多窗口切换
switch_to.window()实现在不同的窗口切换
获得当前窗口句柄:
c_window=driver.current_window_handle
获得当前打开的所有窗口的句柄
all_window=driver.window_handles
======================================================================
警告窗处理
switch_to_alert()方法定位到alert/confirm/prompt 然后使用text,accept,dismiss ,send_keys等方法进行操作
text:返回当中的文字信息
accept():接受现有警告框
dismiss():解散现有警告框
send_keys(KeysToSend)发送文本至警告框.讲文本发送至警告框
driver.switch_to_alert().accept()
driver.quit()
selenium_UI自动化——篇1(基础)的更多相关文章
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- swift开发多线程篇 - 多线程基础
swift开发多线程篇 - 多线程基础 iOS 的三种多线程技术 (1)NSThread 使用NSThread对象建立一个线程非常方便 但是!要使用NSThread管理多个线程非常困难,不推荐使用 ...
- [转]Membership三步曲之入门篇 - Membership基础示例
本文转自:http://www.cnblogs.com/jesse2013/p/membership.html Membership三步曲之入门篇 - Membership基础示例 Members ...
- iOS开发UI篇—Button基础
iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...
- iOS开发基础篇-Button基础
一.简单介绍 UIButton 的功能:响应用户操作.显示文字.显示图片.调整内部图片和文字的位置. 二. UIButton 的状态 UIControlStateNormal :普通状态,为默认情 ...
- 【0728 | 预习】第三篇 Python基础
第三篇 Python基础预习 Part 1 变量 一.什么是变量? 二.为什么要有变量? 三.定义变量 四.变量的组成 五.变量名的命名规范 六.变量名的两种风格 Part 2 常量 Part 3 P ...
- 前端第二篇---前端基础之CSS
前端第二篇---前端基础之CSS 目录 一.css介绍 二.css语法 三.css的几种引入方式 四.css选择器 五.css属性相关 六.盒子模型 拓展 一.css介绍 CSS(Cascading ...
- 前端第三篇---前端基础之JavaScript
前端第三篇---前端基础之JavaScript 一.JavaScript概述 二.JavaScript的基础 三.词法分析 四.JavaScript的内置对象和方法 五.BOM对象 六.DOM对象 七 ...
- 前端第四篇---前端基础之jQuery
前端第四篇---前端基础之jQuery 一.jQuery介绍 二.jQuery对象 三.jQuery基础语法 四.事件 五.动画效果 六.补充each 一.jQuery简介 1.jQuery介绍 jQ ...
随机推荐
- CentOS中配置CDH版本的ZooKeeper
三台CentOS:Host0,Host1,Host2 在三台中分别安装zookeeper-server yum install zookeeper-server -y 修改zookeeper的配置文件 ...
- Docker 修改已有镜像(转)
1.当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交更新后的副本. 其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样:- ...
- day63
一.环境搭建 1.安装node 去官网下载node安装包 傻瓜式安装 万一安装后终端没有node环境,要进行node环境变量的配置(C:\Program Files\nodejs) 可以通过node提 ...
- # 2017-2018-2 20155319《网络对抗技术》Exp9 :Web安全基础
2017-2018-2 20155319<网络对抗技术>Exp9 :Web安全基础 实践过程 webgoat准备 从GitHub上下载jar包(老师的虚拟机中有 无需下载) 拷贝到本地,并 ...
- C++ 对引用的深入理解
观看了唐老师讲解的一节<第5课 - 引用的本质分析>感觉非常不错,有深度不废话,我喜欢--- 再此总结下,并且奉上视频下载地址--- 360网盘下载地址: https://yunpan.c ...
- 在sourceinsight中添加快速注释 Ctrl+/
1.搜索文件:utils.em(C:\Program Files (x86)\Source Insight 3)2.用sourceinsight打开文件:utils.em3.在文件末尾添加下面代码 m ...
- 【LG3768】简单的数学题
[LG3768]简单的数学题 题面 求 \[ (\sum_{i=1}^n\sum_{j=1}^nij\text{gcd}(i,j))\text{mod}p \] 其中\(n\leq 10^{10},5 ...
- Selenium-Css Selector使用方法
什么是Css Selector? Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector的练习建议大家安装火狐浏览器后,下载插件,FireFinder 或 ...
- 手撸orm
ORM简介 ORM即Object Relational Mapping,全称对象关系映射.当我们需要对数据库进行操作时,势必需要通过连接数据.调用sql语句.执行sql语句等操作,ORM将数据库中的表 ...
- gulp:入门简介
本文是gulp的入门级介绍,主要内容包括什么是gulp,gulp与grunt有什么区别,gulp可以解决grunt存在的哪些问题,以及一个简单的说明例子. 什么是gulp gulp的官方定义非常简洁: ...