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(一)的更多相关文章

  1. Selenium2+python自动化27-查看selenium API

    前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. p ...

  2. Robot Framework自动化测试(三)---Selenium API

    Robot  Framework  Selenium  API 说明: 此文档只是将最常用的UI 操作列出.更多方法请查找selenium 关键字库. 一.浏览器驱动 通过不同的浏览器执行脚本. Op ...

  3. Selenium2+python自动化-查看selenium API

    前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. pydo ...

  4. Robot Framework自动化测试三(selenium API)

    Robot  Framework  Selenium  API 说明: 此文档只是将最常用的UI 操作列出.更多方法请查找selenium2Library 关键字库. 一.浏览器驱动 通过不同的浏览器 ...

  5. Selenium2+python自动化27-查看selenium API【转载】

    前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. p ...

  6. Selenium私房菜系列3 -- Selenium API参考手册【ZZ】

    大家在编写测试案例想查阅Selenium API说明时,可以查阅本文,否则请跳过! (注:这里API版本比较老,新版本的Selenium的API在这里不一定能找到.) Selenium API说明文档 ...

  7. Selenium API 介绍

    Selenium API 介绍 我们先前学习过元素定位,大家不知道学习得怎么样了,当你学会元素定位之后就能够跟着我的脚步学习本节Selenium 经常使用的API 介绍 Seleium 为什么能模拟人 ...

  8. robot framework框架selenium API

    RIDE面板认识 selenium API 关键字 语法 参数 备注 Open Browser url Chrome 用不同的浏览器打开url,需要下载不同的浏览器驱动,默认火狐 Close Brow ...

  9. <自动化测试>之<selenium API 用法2>

    不知道之前的selenium API 用法1,有没有去练习, 个人认为线性代码还是要靠敲的, 后面的模块化除了多敲还需要一定的编程思想去理解, 今天下午不是很忙就给来这儿补充点selenium api ...

  10. robotframework - selenium Api介绍

    一.介绍下selenium常用的api *** Settings ***Library SeleniumLibraryResource baidu业务.txtResource UI分层.txt *** ...

随机推荐

  1. Oracle redo与undo

    Undo and redo Oracle最重要的两部分数据,undo 与redo,redo(重做信息)是oracle在线(或归档)重做日志文件中记录的信息,可以利用redo重放事务信息,undo(撤销 ...

  2. python开发函数进阶:匿名函数

    一,匿名函数 #简单的需要用函数去解决的问题 匿名函数的函数体 只有一行#也叫lambda表达式# cal2(函数名) = lambda n(参数) : n*n(参数怎么处理,并且返回值)#参数可以有 ...

  3. float型数据与字节数组的转化

    float型数据与字节数组的转化 字节(float)浮点数为例. 一.C语言 转化常见的方法有: 1.强制指针类型转换. [html] view plain copy //转换float数据到字节数组 ...

  4. Python多线程-生产者消费者模型

    用多线程和队列来实现生产者消费者模型 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import threading imp ...

  5. Android控件使用自定义字体

    我们不可能只满足于系统自带的字体(太丑),其实控件自定义字体也很简单.. 1.首先找到该字体的ttf文件. 2.把字体文件放在scr/mian/assets/fonts下,如果没有该路径则自己创建. ...

  6. scala 在vim中的语法高亮

    https://github.com/derekwyatt/vim-scala 提供了一个选择 看install手册,发现两个命令都是必须的. mkdir -p ~/.vim/{ftdetect,in ...

  7. 关于js的keyCode

    原生js的event对象有三个键盘事件的值: 1) charCode: 被点击键的Unicode值 2) keyCode: 被点击键的ASCII十进制值 3) which: 字母数字键的charCod ...

  8. File类的使用:遍历目录

  9. Docker镜像加速 | Docker 中国源 | 仓库

    镜像加速 | Docker 中国https://www.docker-cn.com/registry-mirror

  10. [转载]C语言 宏

    当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等. 1,防止一个头文件被重复包含 #ifndef COMDEF_H#define COMDEF_H //头文件内容 …#end ...