selenium 常用API
- 引入
- from selenium import webdriver
- from selenium.webdriver.common.action_chains import ActionChains
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.wait import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- from time import sleep
- import os
- 創(chuàng)建一個瀏覽器
- dr = webdriver.Chrome()
- 訪問某個網址
- dr.get('https://www.baidu.com')
- 設置瀏覽器的寬高
- dr.set_window_size(200, 200) # 設置瀏覽器的寬高為200px
- 設置瀏覽器全屏、最小化
- dr.maximize_window() # 全屏
- dr.minimize_window() # 最小化
- 網頁前進、后退
- dr.forward() # 前進
- dr.back() # 后退
- 關閉
- dr.close() # 關閉標簽頁
- dr.quit() # 關閉瀏覽器
- 簡單元素操作
- 元素.clear() # 清除元素輸入框的內容
- 元素.send_keys('hello') # 在元素輸入框中輸入hello
- 元素.click() # 點擊某元素按鈕
- 常用API
- 表單元素.submit() # 用于form元素褥琐,模擬按下enter鍵來替代點擊操作
- 元素.size() # 獲取元素的尺寸大小
- 元素.text # 獲取元素的文本內容
- 元素.get_attribute('name') # 獲取元素的name屬性值
- 元素.is_displayed() # 判斷元素是否可見,返回布爾值
- 鼠標事件(引入ActionChains)
- ActionChains(dr).context_click(元素).perform() # 右鍵
- ActionChains(dr).double_click(元素).perform() # 雙擊
- ActionChains(dr).move_to_element(元素).perform() # 鼠標懸停
- ActionChains(dr).drag_and_drop(source, target).perform() # 將source元素拖拽到target元素位
- ActionChains(dr).drag_and_drop(source, x, y).perform() # 將source元素相對于自己的位置拖拽
- 鍵盤事件(引入Keys )
- driver.find_element_by_id("kw").send_keys("seleniumm") # 輸入內容selenium
- driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) # 退格
- driver.find_element_by_id("kw").send_keys(Keys.SPACE) # 空格鍵
- driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') # 全選輸入框內容
- driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') # 剪切輸入框內容
- driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v') # 粘貼內容到輸入框
- driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c') # 復制選中的內容
- driver.find_element_by_id("su").send_keys(Keys.ENTER) # 回車操作代替點擊按鈕
- driver.find_element_by_id("su").send_keys(Keys.ESCAPE) # 退出按鈕
- driver.find_element_by_id("su").send_keys(Keys.TAB) # 制表鍵
- driver.find_element_by_id("su").send_keys(Keys.F1) # 按下鍵盤F1
- 元素等待(引入WebDriverWait晤郑、expected_conditions)
- 顯示等待
- WebDriverWait(self.dr, 5, 0.3).until(EC.presence_of_element_located((By.ID, "msg"))) # 等待5秒鐘敌呈,每隔0,3秒鐘詢問一次贸宏,直到出現id為msg的元素
- WebDriverWait(dr, 5, 0.1).until_not(ec.text_to_be_present_in_element((By.CSS_SELECTOR, '#chaptercontent'),U'正在轉碼,請稍后......')) # 等待5秒鐘磕洪,每隔0.1秒詢問一次吭练,直到id為chaptercontent的元素文本內容不是“正在轉碼,請稍后......”
- title_is # 用于判斷標題是否 xx
- title_contains # 用于判斷標題是否包含 xx 信息
- presence_of_element_located # 元素是否存在
- visibility_of_element_located # 元素是否可見
- visibility_of # 是否可見
- presence_of_all_elements_located # 判斷一組元素的是否存在
- text_to_be_present_in_element # 判斷元素是否有 xx 文本信息
- text_to_be_present_in_element_value # 判斷元素值是否有 xx 文本信息
- frame_to_be_available_and_switch_to_it # 框架是否可用褐鸥,并切換到該框架
- invisibility_of_element_located # 判斷元素是否隱藏
- element_to_be_clickable # 判斷元素是否點擊线脚,它處于可見和啟動狀態(tài)
- staleness_of # 等到一個元素不再是依附于 DOM
- element_to_be_selected #被選中的元素
- element_located_to_be_selected # 一個期望的元素位于被選中
- element_selection_state_to_be # 一個期望檢查如果給定的元素被選中
- element_located_selection_state_to_be # 期望找到一個元素并檢查是否選擇狀態(tài)
- alert_is_present # 預期一個警告信息
- 隱式等待
- dr.implicitly_wait(10) # 等待10秒鐘赐稽,若提前結束就停止等待叫榕,若超時就拋出異常
- sleep(引出sleep)
- time.sleep(10) # 傻傻的等待10秒鐘,不管是否提前結束
- 顯示等待
- 框架的切換
- dr.switch_to.frame("if") # 切換到id或者name為if的框架
- dr.switch_to.frame(frame) # 若無法用name 或者 id定位到框架姊舵,則可以先用其他方式定位獲取到框架元素晰绎,再將這個元素傳入switch_to..frame()里
- dr.switch_to_default.content() # 切換到默認的框架中
- 窗口的切換
- dr.current_window_handle # 獲取當前窗口的句柄,切換到js彈框上
- dr.window_handles # 獲取所有窗口的句柄
- dr.switch_to.window() # 切換到某個窗口
- 警告框
- dr.switch_to.alert # 切換到彈框(alert括丁、prompt荞下、confirm)
- dr.switch_to.alert.text # 獲取彈框的文本內容
- dr.switch_to_alert.accept() # 切換到彈框并且點擊“確認”
- dr.switch_to.alert.dismiss # 切換到彈框并且點擊“取消”
- dr.switch_to.alert.sendkeys('hello') # 切換到彈框并且在輸入框中輸入‘hello’
- 上傳文件(引入 os)
- file = os.path.abspath('1.jpg') # 相對于該py文件的圖片對象
- dr.find_element(By.ID, 'upfile2').send_keys(file) # 將圖片傳入id為upfile2的元素里
- 調用js
- js="var q=document.documentElement.scrollTop=10000" # 編寫js代碼:將頁面的滾動條向下移動10000px
dr.execute_script(js) # 執(zhí)行編寫好的js代碼
- js="var q=document.documentElement.scrollTop=10000" # 編寫js代碼:將頁面的滾動條向下移動10000px
- 窗口截圖
- dr.get_screenshot_as_file("D:\baidu_error.jpg") # 將當前頁面可視區(qū)截圖并存放命名為D:\baidu_error.jpg