元素定位的几种方式:

(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(基础)的更多相关文章

  1. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  2. swift开发多线程篇 - 多线程基础

    swift开发多线程篇 - 多线程基础 iOS 的三种多线程技术 (1)NSThread  使用NSThread对象建立一个线程非常方便 但是!要使用NSThread管理多个线程非常困难,不推荐使用 ...

  3. [转]Membership三步曲之入门篇 - Membership基础示例

    本文转自:http://www.cnblogs.com/jesse2013/p/membership.html Membership三步曲之入门篇 - Membership基础示例   Members ...

  4. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  5. iOS开发基础篇-Button基础

    一.简单介绍  UIButton 的功能:响应用户操作.显示文字.显示图片.调整内部图片和文字的位置. 二. UIButton 的状态  UIControlStateNormal :普通状态,为默认情 ...

  6. 【0728 | 预习】第三篇 Python基础

    第三篇 Python基础预习 Part 1 变量 一.什么是变量? 二.为什么要有变量? 三.定义变量 四.变量的组成 五.变量名的命名规范 六.变量名的两种风格 Part 2 常量 Part 3 P ...

  7. 前端第二篇---前端基础之CSS

    前端第二篇---前端基础之CSS 目录 一.css介绍 二.css语法 三.css的几种引入方式 四.css选择器 五.css属性相关 六.盒子模型 拓展 一.css介绍 CSS(Cascading  ...

  8. 前端第三篇---前端基础之JavaScript

    前端第三篇---前端基础之JavaScript 一.JavaScript概述 二.JavaScript的基础 三.词法分析 四.JavaScript的内置对象和方法 五.BOM对象 六.DOM对象 七 ...

  9. 前端第四篇---前端基础之jQuery

    前端第四篇---前端基础之jQuery 一.jQuery介绍 二.jQuery对象 三.jQuery基础语法 四.事件 五.动画效果 六.补充each 一.jQuery简介 1.jQuery介绍 jQ ...

随机推荐

  1. P1649 [USACO07OCT]障碍路线Obstacle Course

    题目描述 Consider an N x N (1 <= N <= 100) square field composed of 1 by 1 tiles. Some of these ti ...

  2. HDU 1978 How many ways(经典记忆化搜索)

    S - How many ways Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  3. Linux下端口被占用确认

    有时候关闭软件后,后台进程死掉,导致端口被占用.下面以JBoss端口8083被占用为例,列出详细解决过程. 解决方法: 1.查找被占用的端口 netstat -tln netstat -tln | g ...

  4. Eclipse-安装Spring Tool Suit 插件

    登录http://spring.io/tools/sts/all 下载所需的Spring Tool Suit安装包 我用的是springsource-tool-suite-3.6.1.RELEASE- ...

  5. 大数据入门第十四天——Hbase详解(三)hbase基本原理与MR操作Hbase

    一.基本原理 1.hbase的位置 上图描述了Hadoop 2.0生态系统中的各层结构.其中HBase位于结构化存储层,HDFS为HBase提供了高可靠性的底层存储支持, MapReduce为HBas ...

  6. MySQL 数据库赋予用户权限操作表

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户  一.grant 普通数 ...

  7. C# 文本转语音朗读

    1. 利用DONET框架自带的 SpeechSynthesizer ,缺点是没有感情色彩,抑扬顿挫等. using System; using System.Collections.Generic; ...

  8. C指针乱谈(1)

    写了几年的C指针几乎没怎么用过,因为感觉没什么用.不过在听了一位老师讲课之后,我改变的我的想法. 在此稍做总结,希望能帮到一些和我有同样想法的人,希望看完这篇文章后能改变您的想法. 首先,说说概念,指 ...

  9. Nginx日常报错处理总结

    在Nginx错误日志中,有大量的下列信息: Upstream timed out (110: Connection timed out) while reading response header f ...

  10. Spark内存管理

    本文基于Spark 1.6.0之后的版本 Spark 1.6.0引入了对堆外内存的管理并对内存管理模型进行了改进,SPARK-11389. 从物理上,分为堆内内存和堆外内存:从逻辑上分为executi ...