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()