一赤炒、selenium環(huán)境搭建
? ? ? ? (1)python3.7
? ? ? ? (2)Firefox35(大于43)
? ? ? ? (3)selenium2框架
? ? ? ? 穩(wěn)定版 2.48.0 (pip install selenium==2.48.0)
? ? ? ? 注意:Firefox35(大于43)版本不需要下載驅(qū)動(dòng)器氯析,大于這個(gè)版本的需要,Chrome需要下載驅(qū)動(dòng)器
二莺褒、selenium對(duì)瀏覽器的操作
? ? ? ? ? 1掩缓、先導(dǎo)入庫(kù):from selenium import webdriver?
? ? ? ? ? ? 2、 必須為大寫
? ? ? ? ? ? ? ? (1)火狐:driver = webdriver.Firefox()
? ? ? ? ? ? ? ? (2)谷歌:driver = webdriver.Chrome()
? ? ? ? ? ? 3遵岩、對(duì)瀏覽器尺寸的相關(guān)操作
? ? ? ? ? ? ? ? (1)maximize_window() 最大化
? ? ? ? ? ? ? ? (2)get_window_size()? ? 獲取瀏覽器尺寸你辣,打印查看
? ? ? ? ? ? ? ? (3)set_window_size()? ? 設(shè)置瀏覽器尺寸,400*400
? ? ? ? ? ? 4尘执、瀏覽器位置相關(guān)操作
? ? ? ? ? ? ? (1) get_window_position() 獲取瀏覽器位置
? ? ? ? ? ? ? ? (2)set_window_position(x,y)? ? 設(shè)置瀏覽器位置
? ? ? ? 注意:顯示器以左上角為(0,0),所有的位置操作都是相對(duì)于顯示器左上角展開的位移操作绢记,單位是像素。
? ? ? ? ? ? 5正卧、瀏覽器關(guān)閉操作:close()關(guān)閉當(dāng)前標(biāo)簽/窗口、quit()關(guān)閉所有標(biāo)簽/窗口
? ? ? ? ? ? 6跪解、頁(yè)面請(qǐng)求操作
? ? ? ? ? ? ? ? ? (1) driver.get(url)請(qǐng)求某個(gè)url對(duì)應(yīng)的響應(yīng)
? ? ? ? ? ? ? ? ? ? (2)refresh()刷新頁(yè)面操作
? ? ? ? ? ? ? ? ? ? (3)back()回退到之前的頁(yè)面
? ? ? ? ? ? ? ? ? ? (4)forward()前進(jìn)到之后的頁(yè)面
三炉旷、斷言信息操作
? ? ? ? ? (1)current_url 獲取當(dāng)前訪問頁(yè)面url
? ? ? ? ? (2) title 獲取當(dāng)前瀏覽器標(biāo)題
? ? ? ? ? (3)page_source 獲取網(wǎng)頁(yè)源碼
四、selenium八大元素定位
? ? ? ? ? ? 1叉讥、ele = driver.find_element_by_id("kw")
? ? ? ? ? ? ? ? from selenium.webdriver.common.by import By
? ? ? ? ? ? ? ? ele = driver.find_element(By.ID,"kw")
? ? ? ? ? ? 2图仓、ele = driver.find_element_by_name("wd")
? ? ? ? ? ? 3、ele = driver.find_element_by_class_name("s_ipt")
? ? ? ? ? ? 4惶看、ele = driver.find_element_by_xpath("http://*[@id='kw']")
? ? ? ? ? ? 5、 ele = driver.find_element_by_css_selector("#kw")
? ? ? ? ? ? 6纬黎、ele = driver.find_element_by_link_text("地圖")
? ? ? ? ? ? 7、ele = driver.find_element_by_partial_link_text("地")
? ? ? ? ? ? 8拆座、url = "http://cn.bing.com/"
? ? ? ? ? ? ? ? driver.get(url)
? ? ? ? ? ? ? ? ele = driver.find_element_by_tag_name("input")
五冠息、元素操作
? ? ? ? ? ? 點(diǎn)擊操作---------->element.click()
? ? ? ? ? ? 清空/輸入操作:element.clear()清空輸入框
? ? ? ? ? ? element.send_keys(data)輸入數(shù)據(jù)
? ? ? ? ? ? 提交操作element.submit()
六、彈出框操作
? ? ? ? ? ? 進(jìn)入到彈出框中:driver.switch_to.alert
? ? ? ? ? ? 接收警告:accept()
? ? ? ? ? ? 解散警告:dismiss()
? ? ? ? ? ? 發(fā)送文本到警告框:send_keys(data)
七躏碳、鼠標(biāo)和鍵盤操作
? ? ? ? ? ? 1唐断、鼠標(biāo):ActionChains(driver).context_click(ele).perform()點(diǎn)擊鼠標(biāo)右鍵ActionChains(driver). double_click(ele).perform()點(diǎn)擊鼠標(biāo)左鍵ActionChains(driver).move_to_element(el).perform()鼠標(biāo)懸停? ? ?
? ? ? ? ? ? 2杭抠、鍵盤? ? ?
? ? ? ? ? ? ? ? (1)導(dǎo)入from selenium.webdriver.common.keys import Keys
? ? ? ? ? ? ? (2) send_keys(Keys.BACK_SPACE)刪除鍵
? ? ? ? ? ? ? ? (3)(BackSpace)send_keys(Keys.SPACE)空格鍵
? ? ? ? ? ? ? ? (4)(Space)send_keys(Keys.TAB)制表鍵
? ? ? ? ? ? ? ? (5)(Tab)send_keys(Keys.ESCAPE)回退鍵(Esc)
? ? ? ? ? ? ? ? (6)send_keys(Keys.ENTER)回車鍵(Enter)
? ? ? ? ? ? ? ? (7)send_keys(Keys.CONTROL,‘a(chǎn)’)全選(Ctrl+A)
? ? ? ? ? ? ? ? (8)send_keys(Keys.CONTROL,‘x’)剪切(Ctrl+X)
? ? ? ? ? ? ? ? (9)send_keys(Keys.CO6+NTROL,‘v’)粘貼(Ctrl+V)
? ? ? ? ? ? ? ? (10)send_keys(Keys.F1)F11
? ? ? ? ? ? ? ? (11)F1send_keys(Keys.F12)鍵盤 F12
八偏灿、瀏覽器等待
? ? ? ? ? ? 1、為什么等待
? ? ? ? ? ? ? ? (1)網(wǎng)速慢
? ? ? ? ? ? ? ? (2)網(wǎng)站內(nèi)容過(guò)多
? ? ? ? ? ? ? ? (3)如果不進(jìn)行等待而直接定位元素铆遭,可能會(huì)拋出異常
? ? ? ? ? ? 2沿猜、selenium中等待的分類
? ? ? ? ? ? ? ? ? ? (1)顯示等待:顯示等待是根據(jù)條件進(jìn)行等待,等待條件出現(xiàn)
? ? ? ? ? ? ? ? ? ? (2)隱式等待:隱式等待是根據(jù)是件進(jìn)行等待,等待特定時(shí)間
? ? ? ? ? ? ? ? ? ? (3)固定等待:自己寫的時(shí)間
? ? ? ? ? ? ? ? ? ? 注意:優(yōu)先隱式等待橄妆,次之顯式等待祈坠,最次固定等待
九、IDE功能簡(jiǎn)介
? ? ? ? ? 1慌随、文件:創(chuàng)建、打開和保存
? ? ? ? ? ? 2丸逸、填寫被測(cè)試網(wǎng)站地址
? ? ? ? ? ? 3蹦漠、速度控制:控制案例的運(yùn)行速度
? ? ? ? ? ? 4、運(yùn)行所有:運(yùn)行一個(gè)測(cè)試案例集中的所有案例
? ? ? ? ? ? 5隘击、運(yùn)行:運(yùn)行當(dāng)前選定的測(cè)試案例
? ? ? ? ? ? 6研铆、暫停/恢復(fù):暫停和恢復(fù)測(cè)試案例執(zhí)行
? ? ? ? ? ? 7、單步:可以運(yùn)行一個(gè)案例中的一行命令
? ? ? ? ? ? 8凶赁、錄制:點(diǎn)擊之后逆甜,開始記錄你對(duì)瀏覽器的操作
? ? ? ? ? ? 9、案例集列表
? ? ? ? ? ? 10:測(cè)試腳本交煞、table標(biāo)簽、source標(biāo)簽
? ? ? ? ? ? 11集嵌、查看腳本運(yùn)行通過(guò)/失敗的個(gè)數(shù)
? ? ? ? ? ? 12御毅、當(dāng)選中前命令對(duì)應(yīng)參數(shù)
? ? ? ? ? ? 13根欧、日志/參考/UI元素/Rollup