selenium webdriver API
元素定位
#coding=utf-8 from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
import time
binary = FirefoxBinary('/Applications/FirefoxDeveloperEdition.app/Contents/MacOS/firefox-bin')
driver = webdriver.Firefox(firefox_binary=binary) driver.get('http://www.baidu.com')
size = driver.find_element_by_id('kw').size
print(size) text = driver.find_element_by_id('cp').text
print(text) size1 = driver.find_element_by_id('kw').get_attribute('type')
print(size1) size2 = driver.find_element_by_id('kw').is_displayed()
print(size2) driver.find_element_by_id('kw').clear()
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click() time.sleep(2)
driver.get('http://news.baidu.com') time.sleep(2)
driver.back() time.sleep(2)
driver.forward() time.sleep(2)
driver.refresh()

鼠标键盘操作
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys import time
binary = FirefoxBinary('/Applications/FirefoxDeveloperEdition.app/Contents/MacOS/firefox-bin')
driver = webdriver.Firefox(firefox_binary=binary) driver.get('http://www.baidu.com') right_click = driver.find_element_by_id("listHolder")
# 右键
ActionChains(driver).context_click(right_click).perform() # 鼠标悬停
above = driver.find_element_by_name("tj_settingicon")
ActionChains(driver).move_to_element(above).perform() #双击
double_click = driver.find_element_by_id('xx')
ActionChains(driver).double_click(double_click).perform() # 拖动
drag_start = driver.find_element_by_id('xx')
drag_end = driver.find_element_by_id('cc')
ActionChains(driver).drag_and_drop(drag_start,drag_end).perform() #输入框输入内容
driver.find_element_by_id('kw').send_keys('hha') #删除多输入的内容
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE) #输入空格
driver.find_element_by_id('kw').send_keys(Keys.SPACE) # ctrl+a全选
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a') #回车
driver.find_element_by_id('kw').send_keys(Keys.ENTER)
显式/隐式等待
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC binary = FirefoxBinary('/Applications/FirefoxDeveloperEdition.app/Contents/MacOS/firefox-bin')
driver = webdriver.Firefox(firefox_binary=binary) driver.get('http://www.baidu.com') #显式等待
element = WebDriverWait(driver,5,0.5).until(EC.presence_of_all_elements_located((By.ID,'kw')))
element.send_keys('ss') #隐式等待 from selenium.common.exceptions import NoSuchElementException
driver.implicitly_wait(10)
driver.get('http://www.baidu.com')
try:
driver.find_element_by_id('kw').send_keys('ss')
except NoSuchElementException as e:
print(e)
窗口/frame切换
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary('/Applications/FirefoxDeveloperEdition.app/Contents/MacOS/firefox-bin')
driver = webdriver.Firefox(firefox_binary=binary) driver.get('http://www.baidu.com') #iframe切换id或name,否则用XPATH定位
driver.switch_to.frame("if") #返回之前页面
driver.switch_to.parent_frame() # 多窗口切换 #获得当前窗口句柄
search_windows=driver.current_window_handle driver.find_element_by_link_text('登录').click()
driver.find_element_by_link_text('立即注册').click() #获取当前所有打开的窗口句柄
all_handles = driver.window_handles #进入注册窗口
for handle in all_handles:
if handle != search_windows:
driver.switch_to.window(handle)
print('注册。。。')
# 填写信息send_keys #回到之前窗口
for handle in all_handles:
if handle ==search_windows:
driver.switch_to.window(handle)
print('搜索。。。')
警告框处理
from selenium import webdriver
from time import sleep driver = webdriver.Chrome()
driver.get("https://www.baidu.com") driver.find_element_by_link_text("设置").click()
driver.find_element_by_class_name("setpref").click()
sleep(2) # 保存设置
driver.find_element_by_class_name("prefpanelgo").click()
sleep(2) # 接受警告框
driver.switch_to.alert().accept() driver.quit()
文件下载
from selenium import webdriver
import os # download.default_directory 指定文件下载路径。
# profile.default_content_settings.popups 设置0,禁止下载时弹出窗口。 options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0,
'download.default_directory': os.getcwd()
}
options.add_experimental_option('prefs', prefs) driver = webdriver.Chrome(chrome_options=options)
driver.get("http://pypi.Python.org/pypi/selenium")
driver.find_element_by_partial_link_text("selenium-3.0.2.tar.gz").click()
文件上传
from selenium import webdriver
import os, time driver = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('./webdriver_api/web_page/upfile.html')
driver.get(file_path) time.sleep(2)
# 定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys(os.path.abspath('./webdriver_api/web_page/upload_file.txt'))
time.sleep(5)
driver.quit()
操作cookie
from selenium import webdriver
driver = webdriver.Chrome() '''
* get_cookies() 获得所有 cookie 信息。
* get_cookie(name) 返回字典的 key 为“ name”的 cookie 信息。
* add_cookie(cookie_dict) 添加 cookie。“ cookie_dict”指字典对象,必须有name和value 值。
* delete_cookie(name,optionsString) 删除 cookie 信息。“name”是要删除的 cookie 的名称,
“optionsString”是该 cookie 的选项,目前支持的选项包括“路径”,“域”。
* delete_all_cookies() 删除所有 cookie 信息。
''' driver.get("https://www.baidu.com") # 向 cookie 的 name 和 value 中添加会话信息
driver.add_cookie({'name': 'key-aaaaaaa', 'value': 'value-bbbbbb'}) # 遍历 cookies 中的 name 和 value 信息并打印,当然还有上面添加的信息
for cookie in driver.get_cookies():
print("%s -> %s" % (cookie['name'], cookie['value'])) driver.quit()
调用javascript
from selenium import webdriver
from time import sleep #execute_script() 调用JavaScript操作Web。 driver=webdriver.Chrome()
driver.get("https://www.baidu.com") driver.set_window_size(600, 600)
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(2) # 通过 javascript 设置浏览器窗口的滚动条位置
js="window.scrollTo(100,450);"
driver.execute_script(js)
sleep(3)
driver.quit()
窗口截图
from selenium import webdriver
from time import sleep
import os # get_screenshot_as_file() 截取窗口图片。
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(2) # 截取当前窗口,并指定截图图片的保存位置
driver.get_screenshot_as_file(os.path.abspath('./webdriver_api/web_page/baidu_page.jpg'))
driver.quit()
视频播放处理
from selenium import webdriver
from time import sleep driver = webdriver.Chrome()
driver.get("http://videojs.com/")
video = driver.find_element_by_id("home_video") # 返回播放文件地址
url = driver.execute_script("return arguments[0].currentSrc;", video)
print(url) # 播放视频
print("start")
driver.execute_script("return arguments[0].play()", video) # 播放 15 秒钟
sleep(15) # 暂停视频
print("stop")
driver.execute_script("arguments[0].pause()", video)
driver.quit()
下拉框选择
from selenium import webdriver
from selenium.webdriver.support.select import Select
import os driver = webdriver.Chrome()
file_path = 'file:///' + os.path.abspath('./webdriver_api/web_page/select_tag.html')
driver.get(file_path) sel = driver.find_element_by_xpath("//select[@id='status']")
Select(sel).select_by_value('') #未审核
Select(sel).select_by_value('') #初审通过
Select(sel).select_by_value('') #复审通过
Select(sel).select_by_value('') #审核不通过
selenium webdriver API的更多相关文章
- 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 ...
- Selenium WebDriver Api 知识梳理
之前一直没有系统的梳理WebDriver Api的相关知识,今天借此机会整理一下. 1.页面元素定位 1.1.8种常用定位方法 # id定位 driver.find_element_by_id() # ...
- Python + Selenium WebDriver Api 知识回顾
一直再用 Selenium WebDriver 但是用的都比较零散,也没有做过总结,今天借此机会,整理一下,方便大家使用时查阅 webDriver 的属性 ['CONTEXT_CHROME', 'C ...
- Selenium - Webdriver API /ActionChains API
一.控制浏览器 1.1 控制浏览器窗口大小 # 获取当前浏览器的大小 driver.get_window_size() # 通过像素设置浏览器的大小 driver.set_window_size( ...
- selenium webdriver API详解(三)
本系列主要讲解webdriver常用的API使用方法(注意:使用前请确认环境是否安装成功,浏览器驱动是否与谷歌浏览器版本对应) 一:获取页面元素的文本内容:text 例:获取我的博客名字文本内容 代码 ...
- selenium webdriver API详解(二)
本系列主要讲解webdriver常用的API使用方法(注意:使用前请确认环境是否安装成功,浏览器驱动是否与谷歌浏览器版本对应) 一:获取当前页面的title(一般获取title用于断言) from s ...
- selenium webdriver API详解(一)
本系列主要讲解webdriver常用的API使用方法(注意:使用前请确认环境是否安装成功,浏览器驱动是否与谷歌浏览器版本对应) 一:打开某个网址:get() from selenium import ...
- Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结
由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...
- Python+Selenium webdriver Api
# -*- coding: utf-8 -*- from selenium import webdriver browser = webdriver.Firefox() #browser.set_wi ...
随机推荐
- 使用 LINQPad 助力 LINQ 学习
简介一图示意 简介 LINQPad 是一款学习 LINQ,优化 SQL 的好助手. 它的一大特点是内置了新版<C# in a Nutshell>的全部 LINQ 示例,不管是配合原书进行练 ...
- Windows环境下使用python 3.x自带的CGI服务器测试cgi脚本--Python
1.在桌面上新建一个文件夹作为服务器目录文件夹(文件夹名称自定义,文件夹位置自定义),在www文件下再建一个文件夹,文件夹名为“cgi-bin”,须是这个文件名,其他试过不行(原因暂时未知)
- 【洛谷T7153】(考试) 中位数
题目描述 给定 n 个数 a1, a2, ..., an,求这 n 个数两两的差值(共 n(n−1) 2 个)的中位数. 输入格式: 第一行一个正整数 n,表示数的个数. 接下来一行 n 个正整数,分 ...
- 搬瓦工搭建SS的教程
前言 作者写在前面的话: 应同学的要求在此分享搬瓦工搭建SS的教程,此教程只作为学习之用,因某些原因本教程不适合长期使用,在大家学习之后请删除所做的操作,谢谢. 为方便以后查看,请及时收藏:GitHu ...
- 【Spring源码分析】非懒加载的单例Bean初始化过程(下篇)
doCreateBean方法 上文[Spring源码分析]非懒加载的单例Bean初始化过程(上篇),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下 ...
- Net 面试随想
佳节已去,至今已半月有余,近来园中唱衰net的声音幽幽而起,net不成熟的大环境一直被作为诟病,net core的跨平台去年抄的火热,是否为net 崛起的最后一根稻草,结合我面试的情况,作为小白,嘟囔 ...
- 在hive下使用dual伪表
[hive@nn1 ~]$ touch dual.txt[hive@nn1 ~]$ echo 'X' >dual.txt hive> load data local inpath '/ho ...
- 使用netflix Zuul 代理你的微服务
构建 "微服务" 时的一个常见挑战是为系统的使用者提供一个统一的接口.您的服务被分割成一个个积木式的小程序,事实上这些细节本不应该对用户可见. 为了解决这个问题, Netflix ...
- 【Unity3D与23种设计模式】游戏的主循环——Game Loop
游戏与其他软件最大的不同 就是游戏有Update逻辑 一般的软件是由"事件"驱动 因为它不会突然跑出来一只"兔子" 因此,只有游戏才有"帧" ...
- 使用Jmeter自带的 Http 代理服务器录制脚本
最近要测试某个模块的压力测试,所以使用Jmeter录制脚本 1. 打开JMeter工具 创建一个线程组(右键点击“测试计划”--->“添加”---->“线程组”) 创建一个ht ...