Selenium Webdirver API(1)

Selenium Webdirver API

前提:引入webdriver包
from selenium import webdriver

1、创建浏览器对象
driver = webdriver.Ie(executable_path="D:\\IEDriverServer")#不同浏览器只需更改浏览器名称即可,如:webdriver.Chrome() webdriver.Firefox()

2、打开网页 get
driver.get("http://www.sogou.com") #打开搜狗首页

3、控制浏览器前后移动 back forward
driver.back() #返回上一个网页
driver.forward() #前进到下一个网页

4、强制刷新当前浏览器 refresh
driver.refresh() #刷新浏览器,会等到刷新完才执行下一句代码

5、设置超时 set_page_load_timeout
driver.set_page_load_timeout(3) #网页加载3秒超时 ,抛出异常
#捕获异常,使用程序能够继续执行下去
try:
    driver.get("http://www.sogou.com)
except Exception,e:
    print e

6、窗口最大化 maximize_window
driver.maximize_window() #窗口最大化

7、获取当前窗口坐标 get_window_position
driver.get_window_position() #获取当前的坐标
#可以通过key-value方式获取坐标值
driver.get_window_position()["x"]
driver.get_window_position()["y"]

8、设置当前窗口坐标 set_window_position
driver.set_window_position(100,150)

9、获取当前窗口大小 get_window_size()
driver.get_window_size() #获取当前窗口大小
#可通过key_value方法获取宽高值
driver.get_window_size()["width"]
driver.get_window_size()["height"]

10、设置当前窗口大小 set_window_size
driver.set_window_size(100,200)

11、获取浏览器标题
driver.title #标签页名称,可用来断言
driver.get("http://www.sohu.com")
assert u"搜狐" == driver.title

12、获取当前网页源码
driver.page_source #获取当前网页源码,格式为unicode
#如果要保存为中文时,需要进行转码
driver.page_source.encode("gbk","ignore")

13、获取当前网页url地址
driver.current_url #当前网页url

14、切换句柄(获取和切换标签页/窗口) switch_to.window
#获取当前窗口句柄
driver.current_window_handle
#获取浏览器所有打开的句柄
driver.window_handles
#切换句柄
driver.switch_to.window(handle)

代码:
#encoding=utf-8
import unittest
import time
from selenium import webdriver

class VisitSogouByIE(unittest.TestCase):
    def setUp(self):
        #启动IE浏览器
        self.driver = webdriver.Ie(executable_path="D:\\IEDriverServer")
    def test_operateWindowHandle(self):
        url = "http://www.baidu.com"
        #打开百度
        self.driver.get(url)
        #获取当前窗口句柄
        now_handle = self.driver.current_window_handle
        #打印当前获取的窗口句柄
        print now_handle
        #百度搜索输入框中输入“w3cschool”
        self.driver.find_element_by_id("kw").send_keys("w3cschool")
        #点击搜索按钮
        self.driver.find_element_by_id("su").click()
        #等待3秒,以便网页加载完成
        time.sleep(3)
        #点击w3cschool在线教程链接
        self.driver.find_element_by_xpath("//div[@id=‘1‘]/h3/a").click()
        time.sleep(5)
        #获取所有窗口句柄
        all_handles = self.driver.window_handles
        print "+++" ,self.driver.window_handles[-1]
        #循环遍历所有新打开的窗口句柄,也就是说不包括主窗口
        for handle in all_handles:
            if handle != now_handle:
            #输入待选择的窗口句柄
            #self.driver.switch_to_window(handle) #selenium3.x已经不推荐使用该方法
            # 切换窗口
            self.driver.switch_to.window(handle) #新方法
            #点击HTML5链接
            self.driver.find_element_by_link_text("HTML5").click()
            time.sleep(3)
            #关闭当前窗口
            self.driver.close()
        time.sleep(3)
        #打印主窗口句柄
        print now_handle
        #返回主窗口
        self.driver.switch_to.window(now_handle)
        time.sleep(2)
        self.driver.find_element_by_id("kw").clear()
        self.driver.find_element_by_id("kw").send_keys("wow")
        self.driver.find_element_by_id("su").click()
        time.sleep(5)
    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

原文地址:https://www.cnblogs.com/test-chen/p/10324581.html

时间: 2024-11-24 23:38:38

Selenium Webdirver API(1)的相关文章

Selenium Webdriver 学习总结-Selenium Grid & Webdriver(九)

QQ群: 136924235 论坛 : http://bbs.shareku.com Google教程:https://code.google.com/p/selenium/wiki/Grid2 Hub / Node 系统要求:JDK.firefox.chrome.internetExplorer 所需工具:selenium-server-standalone-xxx.jar 下载地址:http://code.google.com/p/selenium/downloads/list Start

selenium学习历程(一)

selenium是什么? seleniumIDE是什么? webDriver是什么? selenium是什么? selenium是web自动化测试工具集,包括IDE.webDriver.Grid等等. seleniumIDE是什么? Selenium IDE 是firefox浏览器的一个插件.提供简单的脚本录制.编辑与回放功能. webDriver是什么? webDriver是selenium提供的一个api(接口规范),http://www.w3.org/TR/2013/WD-webdrive

用产品思维设计API(三)——版本控制,没有你想的这么简单

用产品思维设计API(三)--版本控制,没有你想的这么简单 前言 最近公司内部在重构项目代码,包括API方向的重构,期间遇到了很多的问题,不由得让我重新思考了下. - 一个优雅的API该如何设计? - 前后端分离之后,API真的解耦分离了吗? - 不断的版本迭代,API的兼容性该如何做? ps.这里所说的API仅为Web API,提供APP\WEB开发使用. 年前,我司内部的接口已经进入了一个完全的重构阶段,参考了市面上各大平台的API和文档,自己也总结出了很多的心得.这里向大家分享一下,接下来

我这么玩Web Api(二):数据验证,全局数据验证与单元测试

目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解的ModelState是微软在ASP.NET MVC中提出的一种新机制,它主要实现以下几个功能: 1. 保存客户端传过来的数据,如果验证不通过,把数据返回到客户端,这样可以保存用户输入,不需要重新输入. 2. 验证数据,以及保存数据对应的错误信息. 3. 微软的一种DRY(Don't Repeat

【高德地图API】从零开始学高德JS API(七)——定位方式大揭秘

摘要:关于定位,分为GPS定位和网络定位2种.GPS定位,精度较高,可达到10米,但室内不可用,且超级费电.网络定位,分为wifi定位和基站定位,都是通过获取wifi或者基站信息,然后查询对应的wifi或者基站位置数据库,得到的定位地点.定位数据库可以不断完善不断补充,所以,越定位越准确.本文详细描述了,如果使用高德JS API来实现位置定位.城市定位的方法,包含了IP定位,浏览器定位,检索定位等多种网络定位方法.当然,如果您的手机有GPS功能,那么使用浏览器定位的时候,会自动获取GPS信息,使

【高德地图API】从零开始学高德JS API(四)搜索服务

摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公交导航,驾车导航,步行导航,道路查询(交叉口),行政区划等等.如果说覆盖物Marker是地图的骨骼,那么服务,就是地图的气血.有个各种各样的地图服务,我们的地图应用才能变得有血有肉,活灵活现.第四篇拆成了几个要点,本篇主要讲搜索服务.包括周边搜索,关键词搜索,范围搜索,搜索提示(自动完成,输入提示),行政区域,交叉路口,检索自有数据(云图). demo:http://zhaoziang.com/amap/zero_4_1.html

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib.当然本文还会介绍自定义插件的使用. ------------------------------------------------------------------------------------------------- 第一部分 控件 目前官方支持的控件包含:缩放控制条-地图

HOOK API(四)—— 进程防终止

HOOK API(四) —— 进程防终止 0x00        前言 这算是一个实战吧,做的一个应用需要实现进程的防终止保护,查了相关资料后决定用HOOK API的方式实现.起初学习HOOK API的起因是因为要实现对剪切板的监控,后来面对进程保护这样一个需求时,综合各方资料并自己动手实现HOOK OpenProcess() 和 TerminateProcess() 来从调用层实现进程的防终止.下面将进一步介绍实现的过程,也算是对学习的一个总结与实战. 主要参考:http://www.cnbl

HOOK API (一)——HOOK基础+一个鼠标钩子实例

HOOK API (一)——HOOK基础+一个鼠标钩子实例 0x00 起因 最近在做毕业设计,有一个功能是需要实现对剪切板的监控和进程的防终止保护.原本想从内核层实现,但没有头绪.最后决定从调用层入手,即采用HOOK API的技术来挂钩相应的API,从而实现预期的功能.在这样的需求下,就开始学习了HOOK API. 0x01什么是HOOK API HOOK(钩子,挂钩)是一种实现Windows平台下类似于中断的机制[24].HOOK机制允许应用程序拦截并处理Windows消息或指定事件,当指定的