浏览器操作

# 刷新
driver.refresh()
# 前进
driver.forward()
# 后退
driver.back()

获取标签元素

# 通过ID定位目标元素
driver.find_element_by_id('i1')
# 通过className定位目标元素
driver.find_element_by_class_name('c1')
# 通过name属性定位目标元素
driver.find_element_by_name('n1')
# 通过Xpath定位目标元素
driver.find_element_by_xpath('//*[@id="i1"]')
# 通过css Selector定位目标元素
driver.find_element_by_css_selector('#i1')
# 通过标签名称定位(注:在一个页面中,标签一定会重复,所以不用这个来进行定位)
driver.find_element_by_tag_name('input')
# 通过标签中的文本查找元素
driver.find_element_by_link_text('登录')
# 通过标签中文本的模糊匹配查找
driver.find_elements_by_partial_link_text('录')

获取标签元素常用的一共有8种定位方式,而Selenium实际提供了18种定位方式,还有8种是上面的复数形式,这里就不一一介绍了,实际运用中并不常用,还有2种实际上是这上面所说16种的底层封装。参数化的一种调用方式而已。

Cookie操作

# 根据cookieKey,获取cookie信息
cookie = driver.get_cookie('cookieKey')
# 获取所有cookie信息
cookies = driver.get_cookies()
# 添加cookie,严格按照格式添加,cookie的key为name,value为value
driver.add_cookie({'name':'tmp','value':''})
# 删除所有cookie信息
driver.delete_all_cookies()
# 根据cookieKey删除对应cookie
driver.delete_cookie('UiCode')

窗口操作

# 获取当前浏览器的大小
driver.get_window_size()
# 通过像素设置浏览器的大小
driver.set_window_size('width','height')
# 获取当前窗口针对于Windows的位置的坐标x,y
driver.get_window_position()
# 设置当前窗口针对Windows的位置,x,y
driver.set_window_position(20,20)
# 最大化当前窗口,不需要传参
driver.maximize_window()
# 返回当前操作的浏览器句柄
driver.current_window_handle
# 返回所有打开server的浏览器句柄
driver.window_handles

截取当前页面

# 获取当前页面的二进制图片数据,需要自己去写入文件
driver.get_screenshot_as_png()
# as_png的上层封装,只需要传入图片名称自动写成图片
driver.get_screenshot_as_file('fileName.png')

执行JavaScript语句

# 执行JavaScript语句
driver.execute_script('JavaScript Commond')
# 例:
# 通过js来操作滚动条
# 参数1:x 参数2: y
window.scrollTo(100,400);

关闭与退出

# 当开启多个时,关闭当前页面
driver.close()
# 退出并关闭所有页面驱动
driver.quit()

其他

# 返回页面源码
driver.page_source
# 返回tag标题
driver.title
# 返回当前Url
driver.current_url
# 获取浏览器名称 如:chrome
driver.name

ElementApi接口

# 根据标签属性名称,获取属性value
element.get_attribute('style')
# 向输入框输入字符串 如果input的type为file类型 可以输入文件绝对路径上传文件
element.send_keys()
# 清除文本内容
element.clear()
# 鼠标左键点击操作
element.click()
# 通过属性名称获取属性
element.get_property('id')
# 返回元素是否可见 True or False
element.is_displayed()
# 返回元素是否被选中 True or False
element.is_selected()
# 返回标签元素的名字
element.tag_name
# 获取当前标签的宽和高
element.size
# 获取元素的文本内容
element.text
# 模仿回车按钮 提交数据
element.submit()
# 获取当前元素的坐标
element.location
# 截取图片
element.screenshot()

常见异常

# 没有找到元素
NoSuchElementException
# 没有找到iframe
NoSuchFrameException
# 没找到窗口句柄handle
NoSuchWindowException
# 属性错误
NoSuchAttributeException
# 没找到alert弹出框
NoAlertPresentException
# 元素不可见
ElmentNotVisibleException
# 元素没有被选中
ElementNotSelectableException
# 查找元素超时
TimeoutException

【转】Selenium-WebDriverApi接口详解的更多相关文章

  1. Selenium学习之==>WebDriverApi接口详解

    浏览器操作 driver.back() # 后退 driver.forward() # 前进 driver.refresh() # 刷新 窗口操作 driver.get_window_size() # ...

  2. Selenium:WebDriverApi接口详解

    浏览器操作 # 刷新 driver.refresh() # 前进 driver.forward() # 后退 driver.back() Cookie操作 # 根据cookieKey,获取cookie ...

  3. selenium之webdriverAPI接口详解

    1. 浏览器操作 driver.maximize_window() #最大化窗口driver.execute_script('window.scrollTo(0,0);') #滚动窗口到最上面driv ...

  4. JDBC常用接口详解

    JDBC中常用接口详解 ***DriverManager 第一.注册驱动 第一种方式:DriverManager.registerDriver(new com.mysql.jdbc.Driver()) ...

  5. Java6.0中Comparable接口与Comparator接口详解

    Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...

  6. socket接口详解

    1. socket概述 socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切 ...

  7. “全栈2019”Java第八十四章:接口中嵌套接口详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. “全栈2019”Java第八十三章:内部类与接口详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. Java接口 详解(二)

    上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用—工厂设计模式(Factory) 我们先看一个范例: package com. ...

  10. [转载]MII/MDIO接口详解

    原文地址:MII/MDIO接口详解作者:心田麦浪 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在 ...

随机推荐

  1. python数据类型:dict(字典)

    一.字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{}括起来的键值对组成. 语法: {key1:value1,key2:value2......} 注意:key必须是不可变 ...

  2. 【转】angular使用代理解决跨域

    原文:https://www.cnblogs.com/sghy/p/9111293.html ----------------------------------------------------- ...

  3. jdk1.8 ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数

    ConcurrentHashMap 的工作原理及代码实现: 相比于1.7版本,它做了两个改进 1.取消了segment分段设计,直接使用Node数组来保存数据,并且采用Node数组元素作为锁来实现每一 ...

  4. [NgRx] Setting up NgRx Router Store and the Time-Travelling Debugger

    Make sure you have the@ngrx packages installed: "@ngrx/data": "^8.0.1", "@n ...

  5. sysobjects统计数据库的各类结构数据

    概要: 查询表.以及表中的行数 SELECT a.name,b.rows FROM sysobjects a INNER JOIN sysindexes b ON a.id=b.id WHERE a. ...

  6. easyUI--入门实例

    ui框架 1.需要导入的所有jar包,以及外部的类或文件 1.1导入jar包 1.2导入WebContent外部资源 1.3导入所有需要的辅助类--Util包 2.实例代码 2.1创建TreeNode ...

  7. 第一章使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础

      一:为什么需要动态网页    由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页  ①:动态网页是指在服务器端运行的,使用程序语言设 ...

  8. 34 | 到底可不可以使用join?

    在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类: 我们 DBA 不让使用 join,使用 join 有什么问题呢? 如果有两个大小不同的表做 join,应该用哪个表做驱动表呢? 今 ...

  9. RabbitMQ消息队列+安装+工具介绍

    1.MQ为Message Queue,消息队列是应用程序和应用程序之间的通信方法 2. 多种开发语言支持,其实就是一个驱动,如连接数据库的mysql驱动,oracle驱动等. 3. 4.采用以下语言开 ...

  10. Django系列(三):单表操作

    1.ORM简介 MTV或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...