一、打開瀏覽器,打開網址
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()