1.定位一组元素

WebDriver提供了8种定位一组元素的方法。

 driver.find_elements_by_css_selector()
driver.find_elements_by_tag_name()
driver.find_elements_by_class_name()
driver.find_elements_by_xpath()
driver.find_elements_by_id()
driver.find_elements_by_link_text()
driver.find_elements_by_name()
driver.find_elements_by_partial_link_text()
 # -*- coding:utf- -*-
from selenium import webdriver
import os
import time
driver = webdriver.Firefox()
file_path = "file:///" + os.path.abspath('testcheck.html')
driver.get(file_path)
inputs = driver.find_elements_by_tag_name("input")
for input in inputs:
if input.get_attribute("type") == "checkbox":
input.click()
time.sleep()
driver.quit()

2.多表单切换

WebDriver只能在一个页面上对元素进行识别和定位,对于frame/iframe表单内嵌页面上的元素无法直接定位,因此WebDriver提供了方法将当前定位的主体切换为frame/iframe表单的内嵌页面中。

switch_to.frame(),默认可以直接取表单的id或者name属性,如果iframe没有可用的id和name属性,可以通过下面的方式定位:

 ...
# 先通过css定位到iframe
iframe = driver.find_element_by_css_selector("[class='iframe']")
# 再将定位对象传给switch_to.frame()方法
driver.switch_to.frame(iframe)
...
driver.switch_to.parent_frame()

说明:当完成了当前iframe操作后,可以通过driver.switch_to.parent_frame()跳出当前一级表单,该方法默认对应于离他最近的switch_to.frame()方法,此外,在进入多级表单的情况下,还可以通过switch_to.default_content()跳会到最外层的页面。

 3.多页面切换

WebDriver提供了switch_to.window()方法实现在不同的窗口之间切换。

 # -*- coding:utf- -*-
from selenium import webdriver
import os
import time
driver = webdriver.Firefox()
driver.implicitly_wait()
driver.get("http://www.baidu.com")
# 获得百度搜索窗口句柄
search_handle = driver.current_window_handle driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()
time.sleep()
# 获取当前所有打开的窗口的句柄
all_handles = driver.window_handles
for handle in all_handles:
if handle != search_handle:
# 如果句柄不为搜索窗口的句柄,则切换到注册页面
driver.switch_to.window(handle)
print("now register window!")
time.sleep() for handle in all_handles:
if handle == search_handle:
driver.switch_to.window(handle)
driver.find_element_by_id("TANGRAM__PSP_4__closeBtn").click()
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep() driver.quit()

4.警告框处理

在WebDriver中通过使用switch_to_alert()方法定位到alert/confirm/prompt,然后使用text/accept/dismiss/send_keys等方法进行操作。

text:返回alert/confirm/prompt中的文字信息。

accept():接受现有警告框。

dismiss():解散现有警告框。

send_keys(keysToSend):发送文本到警告框。keysToSend:将文本发送至警告框。

5.send_keys()实现文件上传

 # 定位上传按钮,然后添加本地文件
driver.find_element_by_name("file").send_keys("f:\\upload_file.txt")

如果想要实现文件上传,只需要找到上传的input标签,基本伤可以同send_keys()方法将文件上传。

6.文件下载

 # -*- coding:utf- -*-
from selenium import webdriver
import os
import time
firefox_profile = webdriver.FirefoxProfile()
# 设置为0代表下载到浏览器默认下载路径,设置为2则表示可以保存到执行目录中
firefox_profile.set_preference("browser.download.folderList", )
# 是否显示开始,True为显示,False为不显示
firefox_profile.set_preference("browser.download.manager.showWhenStarting", False)
# 执行下载的目录,os.getcwd()返回当前目录
firefox_profile.set_preference("browser.download.dir", os.getcwd())
# 设置下载文件的类型
firefox_profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream") driver = webdriver.Firefox(firefox_profile=firefox_profile)
driver.get("xxx")
driver.find_element_by_name("xxx").click()
driver.quit()

 7.操作Cookie

WebDriver提供了操作Cookie的方法,可以读取,添加和删除cookie信息:

  • get_cookies():获得所有cookie信息。
  • get_cookie():返回字典的key为“name”的cookie信息。
  • add_cookie(cookie_dict):添加cookie。cookie_dict为字典对象,必须有name和value。
  • delete_cookie():删除cookie信息,需要指定name,即要删除的cookie的名称。
  • delete_all_cookies():删除所有的cookie信息。

8.执行JavaScript

WebDriver提供了execute_script()方法来执行JavaScript代码。

 # -*- coding:utf- -*-
from selenium import webdriver
import os
import time driver = webdriver.Firefox()
# 设置浏览器窗口大小
driver.set_window_size(, )
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep()
js = "window.scrollTo(100, 400)"
# 执行js脚本,设置窗口到滚动条的位置
driver.execute_script(js)
time.sleep()
driver.quit()

9.窗口截图

WebDriver提供了get_screenshot_as_file()来截取当前窗口。

 # -*- coding:utf- -*-
from selenium import webdriver
import os
import time driver = webdriver.Firefox() driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
time.sleep()
# 截取当前窗口,并制定截图保存的位置
driver.get_screenshot_as_file("d:\\test.jpg")
driver.quit()

10.关闭浏览器窗口

WebDriver提供了quit()方法,其含义为退出相关的驱动程序和关闭所有窗口,另外提供了close()方法,用来关闭某一个窗口。

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. robotframework - selenium Api介绍

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

  7. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  8. 用JSON-server模拟REST API(二) 动态数据

    用JSON-server模拟REST API(二) 动态数据 上一篇演示了如何安装并运行 json server , 在这里将使用第三方库让模拟的数据更加丰满和实用. 目录: 使用动态数据 为什么选择 ...

  9. Express4.x API (二):Request (译)

    写在前面 最近学习express想要系统的过一遍API,www.expressjs.com是express英文官网(进入www.epxressjs.com.cn发现也是只有前几句话是中文呀~~),所以 ...

  10. python+selenium十:基于原生selenium的二次封装

    from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium ...

随机推荐

  1. MySQL优化方法论

    MySQL优化方法 主机 操作系统 数据库 应用 MySQL优化理论 吞吐率(Throughput) VS 延时(Latency) 吞吐率: 我们一般使用单位时间内服务器处理的请求数来描述其并发处理能 ...

  2. 0004-程序流程2之ui-router大意

    按照传统的操作方式,一般是点击某个按钮或者某个菜单项,我们将页面通过指定URL的方式跳转, 在HTML中,使用的是传统的a标签的href属性作跳转,在使用ui-router的情况下,我们对一个按钮 添 ...

  3. 爬了个爬(三)Scrapy框架

    参考博客:武Sir Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 ...

  4. Deep Learning 学习笔记(5):Regularization 规则化

    过拟合(overfitting): 实际操作过程中,无论是线性回归还是逻辑回归,其假设函数h(x)都是人为设定的(尽管可以通过实验选择最优). 这样子就可能出线“欠拟合”或者“过拟合”现象. 所谓过拟 ...

  5. dubbo学习 一 dubbo概述

    1,背景     1,网站刚开时候的时候可能所有的功能业务都在一个应用里面 2,当业务不断复杂,流量不断增多的时候,就需要将原先的一个应用划分成多个独立的应用. 3,当分出来的业务越来越多的时候,应用 ...

  6. .NET 调用c++库注意事项

    很久没有更新了,主要还是因为自己懒吧,希望从今天开始坚持至少一周写一篇文章. 调用函数库是正常的,调用完成后,在使用EF进行数据更新时,将发生如下异常信息,而且几乎必现. 行库遇到了错误.此错误的地址 ...

  7. 201671010140. 2016-2017-2 《Java程序设计》java学习第三周

    java学习第三周       不知不觉,学习java已经是第三周了,不同于初见时的无措,慌张,在接触一段时日后,渐渐熟悉了一些,了解到了它的便利之处,也体会到了它的一些难点,本周主攻第四章,< ...

  8. codeforeces:Mister B and Astronomers分析和实现

    题目很长,稍微翻译一下: 外星球每隔T秒中只有一秒可以被观测到,其它T-1秒无法被观测.n个天文学家(分别编号为1,...,n)轮流观测天空1秒,且第i+1个科学家在第i个天文学家后ai+1秒后才执行 ...

  9. solr第二天 京东案例 课程文档 有用

    全文检索技术   Lucene&Solr               Part3 1. 课程计划 1. Solr配置中文分析器 a) Schema.xml的配置 b) 配置IKAnalyzer ...

  10. bootstrap图片切换效果

    <!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8&quo ...