selenium 常用API,轉載

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.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代碼
  • 窗口截圖
    • dr.get_screenshot_as_file("D:\baidu_error.jpg") # 將當前頁面可視區(qū)截圖并存放命名為D:\baidu_error.jpg
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市史飞,隨后出現的幾起案子尖昏,更是在濱河造成了極大的恐慌,老刑警劉巖构资,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抽诉,死亡現場離奇詭異,居然都是意外死亡吐绵,警方通過查閱死者的電腦和手機迹淌,發(fā)現死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來己单,“玉大人唉窃,你說我怎么就攤上這事∥屏” “怎么了纹份?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長廷痘。 經常有香客問我蔓涧,道長,這世上最難降的妖魔是什么牍疏? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任蠢笋,我火速辦了婚禮,結果婚禮上鳞陨,老公的妹妹穿的比我還像新娘昨寞。我一直安慰自己瞻惋,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布援岩。 她就那樣靜靜地躺著歼狼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪享怀。 梳的紋絲不亂的頭發(fā)上羽峰,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音添瓷,去河邊找鬼梅屉。 笑死,一個胖子當著我的面吹牛鳞贷,可吹牛的內容都是我干的坯汤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼搀愧,長吁一口氣:“原來是場噩夢啊……” “哼惰聂!你這毒婦竟也來了?” 一聲冷哼從身側響起咱筛,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤搓幌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后迅箩,有當地人在樹林里發(fā)現了一具尸體溉愁,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年沙热,在試婚紗的時候發(fā)現自己被綠了叉钥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡篙贸,死狀恐怖投队,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情爵川,我是刑警寧澤敷鸦,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站寝贡,受9級特大地震影響扒披,放射性物質發(fā)生泄漏。R本人自食惡果不足惜圃泡,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一碟案、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颇蜡,春花似錦价说、人聲如沸辆亏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扮叨。三九已至,卻和暖如春领迈,著一層夾襖步出監(jiān)牢的瞬間彻磁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工狸捅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衷蜓,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓薪贫,卻偏偏與公主長得像恍箭,于是被迫代替她去往敵國和親刻恭。 傳聞我的和親對象是個殘疾皇子瞧省,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容