本节主要讲如何用Python调用webdriver框架的API,对浏览器做一些常规的操作,如打开、休眠、前进、后退、刷新、设置窗口大小、截屏、退出、在新窗口打开链接,切换到新窗口等操作,以下以Chrome浏览器为例,Firefox和IE类似,此处仍以百度为例。
一、打开网站
1.从selenium里面导入webdriver模块;
2.打开Chrome浏览器;
3.打开百度网址;
1 # coding:utf-8 2 # 从selenium导入webdriver 3 from selenium import webdriver 4 5 # 打开Chrome浏览器 6 driver = webdriver.Chrome() 7 # 打开百度 8 driver.get("https://www.baidu.com")
二、设置休眠
由于打开网址后,如果网络不佳或页面加载渲染花费时间比较长,导致页面加载需要几秒钟,所以最好是等到页面加载完成后再继续下一步操作。
1. 从time模块中导入sleep方法;
2. 设置等待时间,单位是秒(s),时间值可以是小数也可以是整数;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 # 休眠2秒,参数可以为整数或小数 8 sleep(2)
三、前进和后退
1. 当在一个浏览器窗口打开两个页面后,返回上一页面,即点击浏览器左上角的左箭头按钮;
2. 返回到上一页面后,则可切换到下一页,即点击浏览器左上角的右箭头按钮;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 driver.get("https://www.python.org/") 9 sleep(2) 10 # 返回上一级 11 driver.back() 12 sleep(2) 13 # 返回下一级 14 driver.forward()
四、页面刷新
有时候页面操作后,数据可能没及时同步,需要重新刷新web;所以做自动化需要模拟刷新web的操作
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 刷新web页面 9 driver.refresh()
五、设置窗口大小
设置浏览器窗口大小,如设置窗口分辨率为500*800,也可以最大最小化窗口。
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 设置窗口分辨率为500*800 9 driver.set_window_size(500, 800) 10 sleep(2) 11 # 窗口最大化 12 driver.maximize_window() 13 sleep(2) 14 # 窗口最小化 15 driver.minimize_window()
六、截屏
1. 打开网站之后,可以对屏幕截屏
2. 截屏后设置制定的保存路径+文件名称+后缀
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 截屏 9 driver.get_screenshot_as_file(r"D:\\picture.png")
七、在新窗口打开链接
1. 打开网页后,也可以重新建立一个窗口;
2. 在新窗口打开链接;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 在新窗口打开链接 9 newWin = "window.open('https://www.baidu.com')" 10 driver.execute_script(newWin)
八、切换到新窗口
1. 当网页中有过个窗口,也可以通过切换句柄操作;
2. 通过句柄操控不同的窗口;
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 newWin = "window.open('https://www.baidu.com')" 9 driver.execute_script(newWin) 10 # 句柄切换到新窗口 11 handles = driver.window_handles 12 # driver.switch_to_window(handles[-1])# -1为最新打开的窗口 13 driver.switch_to_window(handles[0])# 0为第一个打开的窗口 14 driver.find_element_by_id("kw").send_keys("python")
九、退出
1. 退出有两种方式,一种是close,另外一种是quit;
2. close用于关闭当前窗口,当打开的窗口较多时,就可以用close关闭部分窗口;
3. quit用于结束进程,关闭所有的窗口,即关闭当前浏览器进程;
4. 最后结束测试,要用quit。quit可以回收c盘的临时文件。
1 # coding:utf-8 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://www.baidu.com") 7 sleep(2) 8 # 关闭当前窗口 9 # driver.close() 10 # 关闭当前浏览器进程 11 driver.quit()