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
  • 創建一個瀏覽器
    • 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                                                           # 判斷元素是否點擊,它處於可見和啓動狀態 
      • staleness_of                                                                                # 等到一個元素不再是依附於 DOM 
      • element_to_be_selected                                                                 #被選中的元素 
      • element_located_to_be_selected                                                   # 一個期望的元素位於被選中 
      • element_selection_state_to_be                                                     # 一個期望檢查如果給定的元素被選中 
      • element_located_selection_state_to_be                                            # 期望找到一個元素並檢查是否選擇狀態 
      • 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)                                                                                        # 執行編寫好的js代碼
  • 窗口截圖
    • dr.get_screenshot_as_file("D:\\baidu_error.jpg")                                         # 將當前頁面可視區截圖並存放命名爲D:\\baidu_error.jpg
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章