Selenium API(一)
1.设置浏览器大小
# -*- coding:utf- -*-
from selenium import webdriver
import time driver = webdriver.Firefox()
url = "http://www.baidu.com"
driver.maximize_window() # 设置浏览器大小:全屏
driver.get(url)
time.sleep()
driver.set_window_size(, ) # 高和宽分别是600
2.控制浏览器前进和后退
# -*- coding:utf- -*-
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep()
driver.get("http://www.sogou.com")
time.sleep()
driver.back() # 后退
time.sleep()
driver.forward() # 前进
time.sleep()
driver.quit() # 关闭浏览器
3.刷新浏览器
# -*- coding:utf- -*-
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep()
driver.refresh() # 刷新浏览器
time.sleep()
driver.quit() # 关闭浏览器
4.输入内容,清空内容,点击按钮
# -*- coding:utf- -*-
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium") # 百度搜索输入框中输入selenium
time.sleep()
driver.find_element_by_id("kw").clear() # 清空百度搜索输入框内容
time.sleep()
driver.find_element_by_id("kw").send_keys("python") # 百度搜索输入框中输入python
time.sleep()
# driver.find_element_by_id("su").click() # 点击百度搜索按钮
driver.find_element_by_id("su").submit() # 点击百度搜索按钮
time.sleep()
driver.quit() # 关闭浏览器
说明:
(1)send_keys()方法模拟键盘向输入框里输入内容,除此之外,还可以用来发送键盘按键,甚至模拟文件上传;
(2)clear()方法用来清除文本输入框中的内容;
(3)click()方法用来单击一个元素,除此之外,还可以单击文字/图片链接,复选框,单选框,下拉框等;
(4)submit()方法用于提交表单,submit()应用范围不如click()。
5.获取页面信息
# -*- coding:utf- -*-
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep()
print(driver.title) # 输出页面的标题
print(driver.current_url) # 输出页面的url地址
print(driver.find_element_by_id("kw").size) # 输出元素的尺寸
print(driver.find_element_by_id("kw").get_attribute("class")) # 输出元素的属性值
print(driver.find_element_by_css_selector("a[name='tj_trnews']").text) # 输出文本值
print(driver.find_element_by_css_selector("#kw").is_displayed()) # 元素是否可见
driver.quit() # 关闭浏览器 -------输出结果-------
百度一下,你就知道
https://www.baidu.com/
{'width': 500.0, 'height': 22.0}
s_ipt
新闻
True
6.鼠标操作
在WebDriver中,关于鼠标操作的方法被封装在了
from selenium.webdriver.common.action_chains import ActionChains
a.鼠标右键
对百度首页的新闻链接鼠标右键操作
# -*- coding:utf- -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep()
ActionChains(driver).context_click(driver.find_element_by_link_text("新闻")).perform() # 点击鼠标右键
time.sleep()
driver.quit() # 关闭浏览器
说明:
(1)ActionChain(driver) 调用ActionChain类,将浏览器驱动driver作为参数传入。
(2)context_click(news) 模拟鼠标右键操作,调用时需要指定元素定位。
(3)perform() 执行所有ActionChain中存储的行为,将整个操作进行提交。
b.鼠标悬停
# -*- coding:utf- -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep()
ActionChains(driver).move_to_element(driver.find_element_by_link_text("新闻")).perform() # 鼠标悬停
time.sleep()
driver.quit() # 关闭浏览器
说明:move_to_element()模拟鼠标悬停操作。
c.鼠标双击
news = driver.find_element_by_css_selector("xx")
ActionChains(driver).double_click(news).perform()
d.鼠标拖动
source = driver.find_element_by_css_selector("xx")
target = driver.find_element_by_css_selector("xx")
ActionChains(driver).drag_and_drop(source, target).perform()
drag_and_drop()拖动,source:开始位置,需要拖动的元素,target:结束位置,拖放后需要放置的目的地。
7.键盘操作
Keys类提供了键盘上几乎所有的按键的方法,send_keys()用来模拟键盘输入,还可以用来输入键盘上的按键,甚至是组合件。在使用Keys类之前首先使用引入:
from selenium.webdriver.common.keys import Keys
# -*- coding:utf- -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
time.sleep()
driver.find_element_by_id("kw").send_keys("seleniumm")
time.sleep()
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
time.sleep()
driver.find_element_by_id("kw").send_keys("软件测试")
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, "A")
time.sleep()
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, "X")
time.sleep()
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, "V")
time.sleep()
driver.quit() # 关闭浏览器
8.设置元素等待
WebDriver提供了两种类型的等待:显式等待和隐式等待。
a.显式等待
显式等待使WebDriver等待某个条件成立时继续执行,否则在达到最大时长时抛弃超时异常,在使用显式等待时需要引入WebDriverWait:
from selenium.webdriver.support.ui import WebDriverWait
如下,每隔0.5s检查当前页面中是否有id值为kw的元素,有则继续执行,超过5s,没有找到元素,则抛出异常。
# -*- coding:utf- -*-
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get("http://www.baidu.com") element = WebDriverWait(driver, , 0.5).until(EC.presence_of_element_located((By.ID, "kw"))) element.send_keys("selenium")
在设置的等待时间内,每隔一段时间检查当前页面元素是否存在,存在则继续执行,不存在则报异常。
WebDriverWait(self, driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None)
其中:
driver:浏览器驱动
timeout:超时时间,单位为秒
poll_frequency:每隔多长时间检查元素是否存在,默认为0.5s
ignored_exceptions:超时后的异常信息,NoSuchElementException
实际中WebDriverWait()一般与until()或until_not()方法配合使用。
until(method, message='')
调用该方法提供的驱动程序作为一个参数,直到返回值为True
until_not(method, message='')
调用该方法提供的驱动程序作为一个参数,直到返回值为False
expected_conditions类的方法可以判断元素是否存在:
方法 | 说明 |
title_is | 判断当前页面的标题是否等于预期 |
title_contains | 判断当前页面的标题是否包含预期字符串 |
presence_of_element_located | 判断指定元素是否加载出来 |
presence_of_all_elements_located | 判断所有元素是否加载完成 |
visibility_of_element_located | 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0,传入参数是元组类型的locator |
visibility_of | 判断元素是否可见,传入参数是定位后的元素WebElement |
invisibility_of_element_located | 判断某个元素是否不可见,或是否不存在于DOM树 |
text_to_be_present_in_element | 判断元素的 text 是否包含预期字符串 |
text_to_be_present_in_element_value | 判断元素的 value 是否包含预期字符串 |
frame_to_be_available_and_switch_to_it | 判断该表单是否可以切换进去,可以,返回True并且switch进去,否则,返回False |
alert_is_present | 判断是否有alert出现 |
element_to_be_clickable | 判断元素是否可点击 |
element_to_be_selected | 判断某个元素是否被选中,一般用于下拉列表 |
element_selection_state_to_be | 判断元素的选中状态是否和预期一致,传入参数:定位后的元素,相等返回True,否则返回False |
element_located_selection_state_to_be | 判断元素的选中状态是否和预期一致,传入参数:元素的定位,相等返回True,否则返回False |
staleness_of | 等到一个元素从DOM树中移出 |
b.隐式等待
# -*- coding:utf- -*-
from selenium import webdriver driver = webdriver.Firefox()
driver.implicitly_wait() # 隐式等待10秒
driver.get("http://www.baidu.com") input_box = driver.find_element_by_css_selector("#kw")
input_box.send_keys("selenium")
说明:implicitly_wait()默认的参数的单位为秒,这里设置的时间并不是一个固定的时间,隐式等待是对页面中所有元素定位起作用,当脚本执行到某个元素定位时,如果元素可定位,则继续执行,如果不可定位,则会进行等待,最大等待时间为这里设置的时间,如果超过最大设置时间仍然没有定位到元素,则会抛异常。
显式等待和隐式等待的区别是显示等待只对进行判断的某一个元素起作用;隐式等待是对所有的元素定位起作用。
c.sleep休眠
sleep方法可以让脚本等待固定的时间,需要引入time模块。
# -*- coding:utf- -*-
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com") time.sleep()
input_box = driver.find_element_by_css_selector("#kw")
input_box.send_keys("selenium")
Selenium API(一)的更多相关文章
- Selenium2+python自动化27-查看selenium API
前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. p ...
- Robot Framework自动化测试(三)---Selenium API
Robot Framework Selenium API 说明: 此文档只是将最常用的UI 操作列出.更多方法请查找selenium 关键字库. 一.浏览器驱动 通过不同的浏览器执行脚本. Op ...
- Selenium2+python自动化-查看selenium API
前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. pydo ...
- Robot Framework自动化测试三(selenium API)
Robot Framework Selenium API 说明: 此文档只是将最常用的UI 操作列出.更多方法请查找selenium2Library 关键字库. 一.浏览器驱动 通过不同的浏览器 ...
- Selenium2+python自动化27-查看selenium API【转载】
前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. p ...
- Selenium私房菜系列3 -- Selenium API参考手册【ZZ】
大家在编写测试案例想查阅Selenium API说明时,可以查阅本文,否则请跳过! (注:这里API版本比较老,新版本的Selenium的API在这里不一定能找到.) Selenium API说明文档 ...
- Selenium API 介绍
Selenium API 介绍 我们先前学习过元素定位,大家不知道学习得怎么样了,当你学会元素定位之后就能够跟着我的脚步学习本节Selenium 经常使用的API 介绍 Seleium 为什么能模拟人 ...
- robot framework框架selenium API
RIDE面板认识 selenium API 关键字 语法 参数 备注 Open Browser url Chrome 用不同的浏览器打开url,需要下载不同的浏览器驱动,默认火狐 Close Brow ...
- <自动化测试>之<selenium API 用法2>
不知道之前的selenium API 用法1,有没有去练习, 个人认为线性代码还是要靠敲的, 后面的模块化除了多敲还需要一定的编程思想去理解, 今天下午不是很忙就给来这儿补充点selenium api ...
- robotframework - selenium Api介绍
一.介绍下selenium常用的api *** Settings ***Library SeleniumLibraryResource baidu业务.txtResource UI分层.txt *** ...
随机推荐
- Java学习之App开发公司手机端设想
背景:最近在学JAVA,看到JAVA做各种APP,而公司软件主要是做家居设计,使用者多是设计师和家具门店,很难让大部分非专业人士接触到我们的产品,由于设计复杂且占用资源较多不太可能用APP实现网站设计 ...
- mul 指令
mul 是乘法指令 两个相乘的数:两个相乘的数,要么都是 8 位,要么都是 16 位. 如果是 8 位,一个默认放在 AL 中,另一个放在 8 位寄存器或内存字节单元中: 如果是 16 位,一个默认在 ...
- 1.1.Task Queue
任务队列是一种跨线程.跨机器工作的一种机制. 任务队列中包含称作任务的工作单元.有专门的工作进程持续不断的监视任务队列,并从中获得新的任务并处理. celery通过消息进行通信,通常使用一 ...
- C++深度解析教程学习笔记(5)面向对象
1. 面向对象基本概念 (1)面向对象的意义在于 ①将日常生活中习惯的思维方式引入程序设计中 ②将需求中的概念直观的映射到解决方案中 ③以模块为中心构建可复用的软件系统 ④提高软件产品的可维护性和可扩 ...
- vmware 仅主机模式 ip配置
首先关闭防火墙 主机(宿主机器 win7) 虚拟机(xp) 3..重要提示: 如果ping不通首先考虑防火墙的问题!!! vmware配置: nat模式下玩耍: 1. 配置nat的虚拟网卡: 2. ...
- pl/sql简介
- zookeeper全局数据一致性及其典型应用(发布订阅、命名服务、帮助其他集群选举)
ZooKeeper全局数据一致性: 全局数据一致:集群中每个服务器保存一份相同的数据副本,client 无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征. 那么zookeeper集群是怎样 ...
- 【原创】2. MYSQL++之Connect类型
mysqlpp:: Connect类型主要负责连接事宜,这是在所有开始mysql操作之前必须进行的(这是句废话). 该类型的主要的结果如下所示 mysqlpp::OpeitonalExceptions ...
- 使用百度翻译的API接口
http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码 有一个PHP文 ...
- =面试题:java面试基本方向 背1 有用 项目二技术学完再看
一.Java基础 1. 集合框架A)集合中泛型优点? 将运行期的ClaasCastException 转到编译期异常. 泛型还提供通配符 1)HashMap---允许一个键为null,允许多个值为n ...