1. webdriver中常用属性

import time
from selenium import webdriver driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30) driver.get("https://www.baidu.com") # 判断元素是否可见,返回结果为布尔值
res = driver.find_element_by_id("kw").is_displayed()
print(res) # 判断元素是否选中,返回结果为布尔值
res = driver.find_element_by_id("kw").is_selected()
print(res) # 判断元素是否可编辑,返回结果为布尔值
res = driver.find_element_by_id("kw").is_enabled()
print(res) # 在输入框中输入消息
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2) # 提交表单(可看作模拟回车键)
driver.find_element_by_id("kw").submit()
time.sleep(2) # 清空输入框中输入的内容
driver.find_element_by_id("kw").clear()
time.sleep(2) # 得到元素的属性值
res = driver.find_element_by_id("kw").get_attribute('id')
print(res) # 得到元素的大小
res = driver.find_element_by_id("su").size
print(res) # 得到元素的文本
res = driver.find_element_by_link_text("贴吧").text
print(res) # 点击元素
driver.find_element_by_link_text("贴吧").click() time.sleep(2) driver.quit()

2. 浏览器页面操作

# -*- coding:utf-8 -*-
# Author: Aaron import time from selenium import webdriver driver = webdriver.Firefox() # 最大化浏览器窗口
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30) # 加载测试地址
driver.get("https://www.baidu.com/") # 获取当前使用的浏览器
res = driver.name
print(res) # 获取当前页面的标题
res = driver.title
print(res) # 获取当前页面的地址
res = driver.current_url
print(res) # 获取当前页面的代码
time.sleep(2)
res = driver.page_source
print(res) driver.get("https://cn.bing.com/") # 后退回上一个界面
time.sleep(2)
driver.back() # 前进到下一个页面
time.sleep(2)
driver.forward() # 刷新当前页面
time.sleep(2)
driver.refresh()
time.sleep(2) '''
多窗口
'''
driver.get("http://mail.sina.com.cn/")
# 获取当前页面的句柄
time.sleep(3)
now_handle = driver.current_window_handle
print(now_handle) driver.find_element_by_link_text('注册').click()
time.sleep(4) # 获取所有句柄
handles = driver.window_handles
print(handles)
for handle in handles:
if handle != now_handle:
driver.switch_to.window(handle)
time.sleep(2)
driver.find_element_by_name('email').send_keys('Aaron')
time.sleep(2)
# 关闭注册页面
# driver.close() # 切换为登录页面
driver.switch_to.window(now_handle)
driver.set_window_size(1080, 920)
time.sleep(2)
driver.find_element_by_id('freename').send_keys('Aaron')
time.sleep(2) # 关闭当前页面
driver.close()
time.sleep(2) # 退出驱动,并关闭所有页面
driver.quit()

3. 鼠标操作

'''
键盘操作步骤:
(1)导入ActionChains类
(2)定位需要操作的元素
(3)实例化对象
(4)调用ActionChains类的方法
''' import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30) driver.get("https://www.baidu.com/") # 鼠标悬停在"设置"上
element1 = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(2) # 双击左键文字"有事搜一搜"
element2 = driver.find_element_by_css_selector("div > p[class='sub-title']")
ActionChains(driver).double_click(element2).perform()
time.sleep(2) # 单击右键
element3 = driver.find_element_by_id("su")
ActionChains(driver).context_click(element3).perform() time.sleep(5)
driver.quit()

4. 键盘操作

'''
键盘操作步骤:
(1)导入Keys类
(2)在send_keys()中使用Keys类的属性
''' import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30) driver.get('https://www.baidu.com/') element = driver.find_element_by_id("kw")
element.send_keys("selenium") # 模拟全选操作
element.send_keys(Keys.CONTROL, 'a')
time.sleep(2) # 模拟复制操作
element.send_keys(Keys.CONTROL, 'c')
time.sleep(2) # 模拟删除键
element.send_keys(Keys.BACKSPACE)
time.sleep(2) element.clear() # 模拟粘贴键
element.send_keys(Keys.CONTROL, 'v')
time.sleep(2) driver.quit()

5. 下拉框操作

'''
下拉框操作步骤:
(1)导入Select类
(2)定位select标签的元素
(3)实例化对象
(4)调用Select类的方法
''' import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30) driver.get("https://www.baidu.com/") # 鼠标悬停在"设置"上
element1 = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(element1).perform()
time.sleep(2) # 点击"高级搜索",进入高级搜索界面
driver.find_element_by_link_text("高级搜索").click() # 定位"全部时间"下拉框的select标签
element = driver.find_element_by_css_selector('select[name="gpc"]')
# 实例化对象
slt = Select(element) # 通过索引方式定位下拉选项
slt.select_by_index(1)
time.sleep(2)
slt.select_by_index(4)
time.sleep(2) # 通过value属性定位
slt.select_by_value('stf')
time.sleep(2) # 通过文本属性定位
slt.select_by_visible_text("最近一天")
time.sleep(2)
slt.select_by_visible_text("最近一月")
time.sleep(2) driver.quit()

6. 弹出框操作

import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.alert import Alert driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30) driver.get("https://www.baidu.com/") ele = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(ele).perform()
time.sleep(2) driver.find_element_by_link_text("搜索设置").click()
time.sleep(2) driver.find_element_by_css_selector('.prefpanelgo').click()
time.sleep(2) # 输出弹出框内容
res = Alert(driver).text
print("弹框提示内容为:\n" + res)
# 接受弹出框
Alert(driver).accept() '''
另一种方法:
res = driver.switch_to_alert().text
print("弹框提示内容为:\n" + res)
driver.switch_to_alert().accept()
''' '''
对于弹出框的处理还有两种:
1.弹出框有两个按钮:“确认”和“取消”,这时用accept()和dismiss()来处理;
2.弹出框包含一个文本输入框时:用send_keys()来处理。
''' time.sleep(5)
driver.quit()

7. 窗口滚动条操作

'''
使用JavaScript脚本来辅助完成
用driver.execute_script(script)来实现
括号中的script为JavaScript脚本
''' import time
from selenium import webdriver driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30) driver.get('https://www.baidu.com/') driver.find_element_by_css_selector('[id="kw"]').send_keys("selenium")
time.sleep(2)
driver.find_element_by_css_selector('[id="su"]').click()
time.sleep(2) # 垂直滚动条
# 滑动滚动条到窗口底部
bottom = 'window.scrollTo(0, 10000)'
driver.execute_script(bottom)
time.sleep(2) # 滑动滚动条到窗口顶部
top = 'window.scrollTo(0, 0)'
driver.execute_script(top)
time.sleep(2) # 设置窗口大小为500*500
driver.set_window_size(500, 500)
time.sleep(3) # 水平滚动条
# 滑动滚动条到窗口最右部
right = 'window.scrollTo(10000, 0)'
driver.execute_script(right)
time.sleep(2) # 滑动滚动条到窗口最左部
right = 'window.scrollTo(0, 0)'
driver.execute_script(right)
time.sleep(2) driver.quit()

8. 窗口截图操作

import time
from selenium import webdriver driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30) driver.get('https://www.baidu.com/') time.sleep(2) # 截取浏览器窗口当前的界面保存为baidu_page1.png图片存放在路径E:\python下
driver.get_screenshot_as_file(r"E:\python\baidu_page1.png")
time.sleep(2) # 等价于get_screenshot_as_file()
driver.save_screenshot(r"E:\python\baidu_page2.png") driver.quit()

二、webdriver API的更多相关文章

  1. Webdriver API (二)

    (转载) 1.3 打开测试页面 对页面对测试,首先要打开被测试页面的地址(如:http://www.google.com),web driver 提供的get方法可以打开一个页面: // And no ...

  2. selenium初识(二)——之webdriver API

    配置完的环境之后,我们先来写一个小脚本: # __Author__:"Jim_xie" from selenium import webdriver from time impor ...

  3. Selenium2+Python:Webdriver API速记手册

    由于web自动化常常需要控制浏览器行为和操作页面元素,相关函数又比较多,于是再此记下一份Webdriver API查阅文档以备不时之需. 参考:虫师<Selenium2自动化测试实战>,和 ...

  4. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  5. Selenium WebDriver Api 知识梳理

    之前一直没有系统的梳理WebDriver Api的相关知识,今天借此机会整理一下. 1.页面元素定位 1.1.8种常用定位方法 # id定位 driver.find_element_by_id() # ...

  6. 2.28 查看webdriver API

    2.28 查看webdriver API(带翻译) 前言    前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就教大家如何去查看seleni ...

  7. 转:python webdriver API 之操作测试对象

    一般来说,所有有趣的操作与页面交互都将通过 WebElement 接口,包括上一节中介绍的对象定位,以及本节中需要介绍的常对象操作.webdriver 中比较常用的操作元素的方法有下面几个: cle ...

  8. selenium2(WebDriver) API

    selenium2(WebDriver) API 作者:Glen.He出处:http://www.cnblogs.com/puresoul/  1.1  下载selenium2.0的包 官方downl ...

  9. webdriver API中文文档

    1.1   下载selenium2.0的lib包 http://code.google.com/p/selenium/downloads/list 官方UserGuide:http://seleniu ...

  10. python2.7运行selenium webdriver api报错Unable to find a matching set of capabilities

    在火狐浏览器33版本,python2.7运行selenium webdriver api报错:SessionNotCreatedException: Message: Unable to find a ...

随机推荐

  1. CSS长度单位:px和pt的区别

    先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点:而pt就是point,是印刷行业常用单位,等于1/72英寸. 这样很明白,px是一个点,它不是自然界的长度单位,谁能说出一个 ...

  2. 传说中Python最难理解的点|看这完篇就够了(装饰器)

    https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...

  3. PHPstorm相关设置以及快捷键

    转自:http://blog.csdn.net/fenglailea/article/details/12166617 1.界面中文方框问题 Settings->Appearance中Theme ...

  4. poj 1263 Reflections (Simple Geometry)

    1263 -- Reflections 简单计算几何.题目给出射线以及若干个不相交的圆,求出射线会在哪些圆上反弹,依次写出反弹球的编号. 代码如下: #include <cstdio> # ...

  5. [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]

    我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...

  6. java 两种进程创建方式比较

    A extends Thread: 简单 不能再继承其他类了(Java单继承) 同份资源不共享 A implements Runnable:(推荐) 多个线程共享一个目标资源,适合多线程处理同一份资源 ...

  7. ipv6现状,加英文的中括号访问, ipv6测试http://test-ipv6.com

    加英文的中括号就可以,如[2001:4998:c:e33::1004],我发现这是yahoo首页.但并不是所有IPv6网站都可以通过IPv6地址访问,跟IPv4一样,网站服务器端可以只绑定域名,不接受 ...

  8. 2019QLU.ACM集训队暑假训练须知

    1.每场比赛都要认认真真参与并及时记录: 2.每个队员必须做一个单独的博客页面存放自己队伍或者个人的比赛结果和补题计划: 3.比赛记录参考样式:[1]dny[2]ECNU 4.每场比赛结束都会安排一支 ...

  9. LR性能测试自动化集成JENKINS

    LR11不支持JENKINS集成,解决方案可以使用BAT代替执行,JENKINS定时调用BAT执行性能测试用例.   1. 先随便录制l一个LR脚本,保存为 D:\TEST\test01 2. 打开 ...

  10. ie6 ie7下,Li不能自动换行,出现竖排文字现象(PS:li不固定宽度,所有li同一行显示),在ie8却可以

    好久没写CSS,今天又发现一个ie兼容问题. 我需要所有的li在同一行显示,不固定Li的宽度,如果一行排不下,需要自动换行.当然Li的内容长度不同. 必须在li加white-space:nowrap; ...