什么是框架
框架(framework)是一個框子 -- 指其約束性,也是一個架子 -- 指其支撐性拯田,是一個基本概念上的結(jié)構(gòu),用于去解決或者處理復(fù)雜的問題。
框架是整個或部分系統(tǒng)的可重用設(shè)計番川,表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實例間交互的方法;另一種定義認為脊框,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架颁督。前者是從應(yīng)用方面而后者是從目的方面給出的定義。
框架浇雹,其實就是某種應(yīng)用的半成品沉御,就是一組組件,供你選用完成你自己的系統(tǒng)昭灵。簡單說就是使用別人搭好的舞臺吠裆,你來做表演伐谈。
為什么使用框架
1)自己從頭實現(xiàn)太復(fù)雜
2)使用框架能夠更專注于業(yè)務(wù)邏輯,加快開發(fā)速度
3)框架的使用能夠處理更多細節(jié)問題
4)使用人數(shù)多硫痰,穩(wěn)定性衩婚,擴展性好
selenium環(huán)境搭建
1)python3.7
2)Firefox35(大于43)
3)selenium2框架
穩(wěn)定版 2.48.0 (pip install selenium==2.48.0)
4)瀏覽器驅(qū)動
selenium之 chromedriver與chrome版本映射表
Firefox瀏覽器對應(yīng)各個版本驅(qū)動下載地址
注意:Firefox35(大于43)版本不需要下載驅(qū)動器,大于這個版本的需要效斑,Chrome需要下載驅(qū)動器非春,下邊分別演示。
selenium對瀏覽器操作
fromseleniumimportwebdriver
?selenium獲取斷言信息
什么是斷言
斷言是編程術(shù)語缓屠,表示為一些布爾表達式奇昙,程序員相信在程序中的某個特定點該表達式值為真,可以在任何時候啟用和禁用斷言驗證敌完,因此可以在測試時啟用斷言而在部署時禁用斷言储耐。
?獲取斷言信息的操作
current_url 獲取當(dāng)前訪問頁面url
title 獲取當(dāng)前瀏覽器標題
page_source 獲取網(wǎng)頁源碼
?selenium八大元素定位
from selenium import webdriverdriver=webdriver.Firefox()# url = "http://www.baidu.com"# driver.get(url)# 第一種 id# ele = driver.find_element_by_id("kw")# ele.send_keys(12306) # 輸入數(shù)據(jù)# from selenium.webdriver.common.by import By# ele = driver.find_element(By.ID,"kw")# ele.send_keys(12306) # 輸入數(shù)據(jù)# 第二種 標簽名字# ele = driver.find_element_by_name("wd")# ele.send_keys(12306) # 輸入數(shù)據(jù)# 第三種 class# ele = driver.find_element_by_class_name("s_ipt")# ele.send_keys(12306) # 輸入數(shù)據(jù)# 第四種 Xpath# ele = driver.find_element_by_xpath("http://*[@id='kw']")# ele.send_keys(12306) # 輸入數(shù)據(jù)# 第五種 css class# ele = driver.find_element_by_css_selector("#kw")# ele.send_keys(12306) # 輸入數(shù)據(jù)# 第六種 text# ele = driver.find_element_by_link_text("地圖")# ele.click() # 輸入數(shù)據(jù)# 第七種:類似于模糊匹配# ele = driver.find_element_by_partial_link_text("地")# ele.click()# 第八種:標簽名定位,必須得保證只有一個這種名字的標簽滨溉,使用下面這個搜索# url = "http://cn.bing.com/"# driver.get(url)# ele = driver.find_element_by_tag_name("input")# ele.send_keys(12306) # 輸入數(shù)據(jù)
元素的操作
對元素的相關(guān)操作什湘,一般要先獲取到元素,再調(diào)用相關(guān)方法
element = driver.find_element_by_xxx(value)
1)點擊和輸入
點擊操作---------->element.click()
清空/輸入操作:
element.clear()---------------------->清空輸入框
element.send_keys(data)-------->輸入數(shù)據(jù)
多標簽之間的切換
場景:有的時候點擊一個鏈接晦攒,新頁面并非由當(dāng)前頁面跳轉(zhuǎn)過去闽撤,而是新開一個頁面打開,這種情況下脯颜,計算機需要識別多標簽或窗口的情況哟旗。
1)獲取所有窗口的句柄
handles = driver.window_handlers
調(diào)用該方法會得到一個列表,在selenium運行過程中的每一個窗口都有一個對應(yīng)的值存放在里面栋操。
2)通過窗口的句柄進入的窗口
driver.switch_to_window(handles[n])
driver.switch_to.window(handles[n])
通過窗口句柄激活進入某一窗口
? 多表單切換
在網(wǎng)頁中闸餐,表單嵌套是很常見的情況,尤其是在登錄的場景
?什么是多表單
實際上就是使用iframe/frame矾芙,引用了其他頁面的鏈接舍沙,真正的頁面數(shù)據(jù)并沒有出現(xiàn)在當(dāng)前源碼中,但是在瀏覽器中我們看到蠕啄,簡單理解可以使頁面中開了一個窗口顯示另一個頁面