Selenium之WebdriverApi详解
获取标签元素
- # 通过ID定位目标元素
- driver.find_element_by_id('#i1')
- # 通过classname定位目标元素
- driver.find_element_by_class_name('c1')
- # 通过name属性定位目标元素
- driver.find_element_by_name('name')
- # 通过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_element_by_partial_link_text('大师兄')
获取标签元素常用的一共有8种定位方式,而Selenium实际提供了18种定位方式,还有8中是上面的复数形式,这里就不一一介绍了,实际运用中并不常用,还有2种实际上是这上面所说16种的底层封装。参数化的一种调用方式而已。
浏览器操作
- driver.refresh() #刷新
- driver.forward() #前进
- driver.back() #后退
窗口操作
- # 获取当前浏览器大小
- driver.get_window_size()
- # 通过像素设置浏览器大小
- driver.set_window_size('width:100px','height:100px')
- # 获取当前窗口针对于windows的位置的坐标x,y
- driver.get_window_position()
- # 设置当前窗口针对windows的位置,x,y
- driver.set_window_position(,)
- # 最大化当前窗口,不需要传参
- driver.maximize_window()
- # 返回当前操作的浏览器句柄
- driver.current_window_handle
- # 返回所有打开server的浏览器句柄
- driver.window_handles
截取当前页面
- # 获取当前页面的二进制图片数据,需要自己去写入文件
- driver.get_screenshot_as_png()
- # as_png的上层封装,只需要传入图片名称自动写成图片
- driver.get_screenshot_as_file()
执行JavaScript语句
- # 执行JavaScript语句
- driver.execute_script('JavaScript Command')
- # 例:通过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.click()
- # 清除文本内容
- element.clear()
- # 通过属性名称获取属性
- 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:没有找到元素
- NoSuchFrameException:没有找到iframe
- NoSuchWindowException: 没找到窗口句柄handle
- NoSuchAttributeException: 属性错误
- NoAlertPresentException:没找到alert弹出框
- ElmentNotVisibleException:元素不可见
- ElementNotSelectableException:元素没有被选中
- TimeoutException:查找元素超时
Selenium之WebdriverApi详解的更多相关文章
- Python爬虫之selenium库使用详解
Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...
- selenium模块用法详解
selenium用法详解 selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题. 模拟浏览器进行网页加载,当requests,urllib无法正常获取 ...
- Selenium常用API详解介绍
转至元数据结尾 由 黄从建创建, 最后修改于一月 21, 2019 转至元数据起始 一.selenium元素定位 1.selenium定位方法 2.定位方法的用法 二.控制浏览器操作 1.控制 ...
- selenium webdriver API详解(三)
本系列主要讲解webdriver常用的API使用方法(注意:使用前请确认环境是否安装成功,浏览器驱动是否与谷歌浏览器版本对应) 一:获取页面元素的文本内容:text 例:获取我的博客名字文本内容 代码 ...
- selenium webdriver API详解(二)
本系列主要讲解webdriver常用的API使用方法(注意:使用前请确认环境是否安装成功,浏览器驱动是否与谷歌浏览器版本对应) 一:获取当前页面的title(一般获取title用于断言) from s ...
- selenium webdriver API详解(一)
本系列主要讲解webdriver常用的API使用方法(注意:使用前请确认环境是否安装成功,浏览器驱动是否与谷歌浏览器版本对应) 一:打开某个网址:get() from selenium import ...
- selenium工作原理详解
selenium简介 Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11), ...
- selenium 使用教程详解-java版本
第一章 Selenium 概述 1.1.Selenium 发展史 Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗 ...
- selenium等待方式详解
这些方式仅供参考,实际使用体验并不好,最好对find_element()方法进行二次封装. # coding=utf-8 from time import sleep from selenium im ...
随机推荐
- ECMAScript 面向对象JS学习笔记1
1.对象的 prototype 属性,可以把它看成创建新对象所依赖的原型.===在我理解,就是prototype下设置的字段是唯一性的,共享性的,不管创建多少个对象,所处空间都是不变的,没有增加也没有 ...
- 微信redirect_uri 回调错误,scope权限错误
scope权限错误以及微信redirect_uri回调错误 昨天修改项目的时候,初始时,因为项目最开始使用的是第三方授权处理,拿到的用户openid是第三方账号的,所以需要将获取对方信息的代码修改.只 ...
- linux prefix
指定安装路径不指定prefix,则可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc.其它的资源文件放在/usr ...
- 【PHP】常见算法
1 冒泡排序 思路:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒. 即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它 ...
- 【WEB前端开发最佳实践系列】CSS篇
一.有效组织CSS代码 规划组织CSS代码:组织CSS代码文件,所有的CSS都可以分为2类,通用类和业务类.代码的组织应该把通用类和业务类的代码放在不同的目录中. 模块内部的另一样式规则:样式声明的顺 ...
- 题目1198:a+b(高精度计算,好像有点问题)
题目链接:http://ac.jobdu.com/problem.php?pid=1198 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- LeetCode 13 Roman to Integer(罗马数字转为整数)
题目链接 https://leetcode.com/problems/roman-to-integer/?tab=Description int toNumber(char ch) { switc ...
- Django---路由如何配置
具体配置在项目配置文件夹下的 urls.py: from index import views urlpatterns = [ path('admin/', admin.site.urls), pat ...
- Spark2 Dataset持久化存储级别StorageLevel
import org.apache.spark.storage.StorageLevel // 数据持久缓存到内存中//data.cache()data.persist() // 设置缓存级别data ...
- POJ-1953 World Cup Noise(线性动规)
World Cup Noise Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16374 Accepted: 8097 Desc ...