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 *** ...
随机推荐
- jQuery笔记——Ajax
Ajax 全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML), 它并不是 JavaScript 的一种单一技术,而是利用了一系列交互式 ...
- html-select
<html><head> <title>select选择标签</title> <meta charset="UTF-8"> ...
- 如何POST一个JSON格式的数据给java接口,获得返回数据
/** * 模拟post进行url请求 * @param string $url * @param json $post_data */ public function request_post($u ...
- PC 微信页面倒计时代码 safari不兼容date的问题
PC: 1.html页面: <div class="aTime"> <em id="t_d"></em> <em id ...
- Python嵌套、递归、高阶函数
一.嵌套函数 1.嵌套函数简单的理解可以看作是在函数的内部再定义函数,实现函数的“私有”. 2.特点: <1> 函数内部可以再次定义函数. <2> 只有被调用时才会执行(外部函 ...
- 20-取石子动态规则(hdu2516 斐波那契博弈)
http://acm.hdu.edu.cn/showproblem.php?pid=2516 取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memor ...
- 堡垒机(paramiko)
实现思路 堡垒机执行流程: 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,现实当前用户管理的服务器列表 用户选择服务器,并自动登陆 执行 ...
- 数据标准化方法及其Python代码实现
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法.标准差法).折线型方法(如三折线法).曲线型方法 ...
- win32多线程 (二)线程同步之临界区 (critical sections)
所谓critical sections 意指一小块“用来处理一份被共享之资源”的程序代码.你可能必须在程序的许多地方处理这一块可共享的资源.所有这些程序代码可以被同一个critical sectio ...
- SparkR 读取数据& Spark运行的配置
1.本地LOCAL环境安装Spark并试运行配置(在Ubuntu系统下例子) # 打开文件配置环境变量: JAVA,SCALA,SPARK,HADOOP,SBT gedit /etc/profile ...