python+selenium自动化(三)之selenium操作浏览器
一、打开浏览器,打开网址
1、导入selenium 的webdriver 模块
2、打开浏览器,创建浏览器对象
3、打开百度
1 from selenium import webdriver # 导入webdriver 2 # 创建浏览器对象driver 3 driver = webdriver.Chrome() # 谷歌浏览器 4 # driver = webdriver.Firefox() # 火狐浏览器 5 # driver = webdriver.Ie() # IE浏览器 6 # driver = webdriver.Edge() # Edge浏览器 7 # 输入网址 8 driver.get(url="http://www.baidu.com")
二、隐式等待、显示等待、强制等待
1、隐式等待implicitly_wait :就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。
从 implicitly_wait中可以看出,需要传一个等待时间参数time_to_wait,单位是秒,比如 implicitly_wait(10),代表隐式等待10秒。
注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部断的刷新页面去寻找我们需要的元素。
from selenium import webdriver # 导入webdriver # 创建浏览器对象driver driver = webdriver.Chrome() # 谷歌浏览器 # driver = webdriver.Firefox() # 火狐浏览器 # driver = webdriver.Ie() # IE浏览器 # driver = webdriver.Edge() # Edge浏览器 # 输入网址 driver.get(url="http://www.baidu.com") # 隐式等待10秒 driver.implicitly_wait(10)
2、显示等待WebDriverWait:显示等待的代码定义了等待条件,只有该条件触发,一般用于查找页面元素,在规定时间内找到了元素,则进行下一步操作,如果没有找到,则抛出异常。
上面是源码,下面是例子
from selenium import webdriver # 导入webdriver from selenium.webdriver.support.ui import WebDriverWait # 创建浏览器对象driver driver = webdriver.Chrome() # 谷歌浏览器 # driver = webdriver.Firefox() # 火狐浏览器 # driver = webdriver.Ie() # IE浏览器 # driver = webdriver.Edge() # Edge浏览器 # 输入网址 driver.get(url="http://www.baidu.com") # 隐式等待10秒 driver.implicitly_wait(10) # 显式等待10秒,在这10秒中找元素就执行下一步,没有找到就抛出异常。比如在第3秒找到了,马上执行下一步 element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("kw")) # kw是百度网页的一个元素 # 强制等待10,找到和没找到都会等待10秒 import time time.sleep(10)
一般都是结合另一个模块来做页面模块expected_conditions判断元素可见
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get(url="http://www.baidu.com") try: WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.ID,'su')) # 元素是否可见 ) except: print("未找到元素") driver.quit()
3、强制等待,time.sleep()
三、操作浏览器
1、窗口大小剪裁 set_window_size()
1 import time 2 from selenium import webdriver # 导入webdriver 3 # 创建浏览器对象driver 4 driver = webdriver.Chrome() # 谷歌浏览器 5 driver.get(url="http://www.baidu.com") # 输入网址 6 driver.set_window_size(880, 960) # 设置窗口大小 7 time.sleep(3) # 强制等待 8 driver.quit() # 关闭浏览器
2、窗口最大化 maximize_window()
1 import time 2 from selenium import webdriver # 导入webdriver 3 # 创建浏览器对象driver 4 driver = webdriver.Chrome() # 谷歌浏览器 5 driver.get(url="http://www.baidu.com") # 输入网址 6 driver.maximize_window() # 窗口最大化 7 time.sleep(3) # 强制等待 8 driver.quit() # 关闭浏览器
3、页面刷新 refresh()
import time from selenium import webdriver # 导入webdriver driver = webdriver.Chrome() # 谷歌浏览器 driver.get(url="http://www.baidu.com") driver.refresh() # 刷新页面 time.sleep(3) driver.quit()
4、前进和后退
前进:forward()
后退:back()
import time from selenium import webdriver # 导入webdriver # 创建浏览器对象driver driver = webdriver.Chrome() # 谷歌浏览器 driver.get(url="http://www.baidu.com") driver.get(url="https://www.cnblogs.com/") driver.back() # 后退上一页 driver.forward() # 前进下一页 time.sleep(3) driver.quit()
5、截屏,常用的 get_screenshot_as_file(),另外两个 get_screenshot_as_png()、 get_screenshot_as_base64()
import time from selenium import webdriver # 导入webdriver # 创建浏览器对象driver driver = webdriver.Chrome() # 谷歌浏览器 driver.get(url="http://www.baidu.com") driver.get_screenshot_as_file("test.png") time.sleep(3) driver.quit()
窈窕包包,君子好逑