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 *** ...
随机推荐
- hibernate中dialect的讲解
RDBMS方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS39 ...
- MFC学习(二)
WinApp封装了程序的主入口WinMain,WinMain就和C语言的main函数地位一样,是Win32程序的入口.在MFC的封装中,一个程序启动,Windows调用WinMain,这个WinMai ...
- JSP搭建
Tomcat7已经发布多时,Tomcat7增加了对Servlet 3.0,JSP 2.2和JSP-EL 2.2的支持.支持web application内存泄露的检测和防护等很多新功能.本片教程主要介 ...
- maven项目依赖包问题
问题 maven传递依赖 解决方案 前段时间,开发中遇到一个关于maven依赖包的问题:由于业务需要,支付网关对账代码中的slf4j-api包需要更新,原包为1.5.8版本,需要更新到1.6.4版 ...
- leetcode682
class Solution { public: int calPoints(vector<string>& ops) { stack<int> ST; ; for ( ...
- leetcode594
public class Solution { public int FindLHS(int[] nums) { Dictionary<int, int> dic = new Dictio ...
- Java微信公众平台开发(十五)--微信JSSDK的使用
转自:http://www.cuiyongzhi.com/post/63.html 在前面的文章中有介绍到我们在微信web开发过程中常常用到的 [微信JSSDK中Config配置] ,但是我们在真正的 ...
- minerd.exe 处理
:top TASKKILL /F /IM "minerd.exe" Goto top and then searching the file system for minerd.e ...
- webrtc系列文章
WEBRTC RTP/RTCP协议族 2017-02-22 20:15 阅读(144) 评论(0) WebRTC 基于GCC的拥塞控制(下) 2017-02-22 15:44 阅读(108) 评论(0 ...
- 10 个你需要了解的 Linux 网络和监控命令
我下面列出来的10个基础的每个linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nsloo ...