自動(dòng)化測(cè)試培訓(xùn)ppt課件_第1頁(yè)
自動(dòng)化測(cè)試培訓(xùn)ppt課件_第2頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Automation Test Training劉萬(wàn)紅 2021-08-15.課程安排時(shí)間安排課程內(nèi)容2015/08/22 9:30am12:00am測(cè)試流程 Security Testing2015/08/22 13:00pm18:00pm自動(dòng)化測(cè)試?yán)碚?Selenium webdriver2015/08/23 9:30am12:00am自動(dòng)化測(cè)試框架搭建2015/08/23 13:00pm18:00pm自動(dòng)化測(cè)試框架使用.目的一本次培訓(xùn)目的:了解Selenium根本框架構(gòu)造具備自動(dòng)化測(cè)試思想 會(huì)搭建自動(dòng)化測(cè)試環(huán)境了解selenium常用API了解自動(dòng)化測(cè)試開(kāi)展過(guò)程中的本卷須知.目的二可以在

2、原有框架根底上進(jìn)展二次開(kāi)發(fā)(框架晉級(jí)維護(hù)和運(yùn)用)具備平安性測(cè)試思想了解常見(jiàn)平安性問(wèn)題類(lèi)型原理會(huì)運(yùn)用APPScan進(jìn)展代碼掃描并提交分析報(bào)告測(cè)試管理流程Q/A.大綱一自動(dòng)化測(cè)試行業(yè)現(xiàn)狀自動(dòng)化測(cè)試投入產(chǎn)出分析 什么時(shí)候開(kāi)展自動(dòng)化測(cè)試 自動(dòng)化測(cè)試最新的開(kāi)展技術(shù)自動(dòng)化測(cè)試工具比較 自動(dòng)化測(cè)試環(huán)境搭建Selenium框架引見(jiàn)Xpath根底引見(jiàn).大綱二小工具引見(jiàn)Firebug/xpather/iedeveloperSelenium常用API現(xiàn)有框架詳細(xì)解析自動(dòng)化測(cè)試開(kāi)展過(guò)程中的本卷須知實(shí)戰(zhàn)-搭建本公司自動(dòng)化測(cè)試框架平安性測(cè)試引見(jiàn)APPScan運(yùn)用引見(jiàn)測(cè)試管理流程 .測(cè)試流程發(fā)布流程:FATUAT點(diǎn)火堡壘測(cè)

3、試(smoking)Baking(灰度)Rolling(Prod).質(zhì)量報(bào)告.Security Test Training.2021艱苦平安事故2021年2月比特幣買(mǎi)賣(mài)站受攻擊破產(chǎn)2021年4月中國(guó)快遞1400萬(wàn)信息泄露2021年5月22日,eBay要求近1.28億活潑用戶全部重新設(shè)置2021年9月,大約有500萬(wàn)谷歌的賬戶和密碼的數(shù)據(jù)庫(kù)被泄露密2021年12月25日,烏云破綻報(bào)告平臺(tái)報(bào)告稱,大量12306用戶數(shù)據(jù)在互聯(lián)網(wǎng)瘋傳,內(nèi)容包括用戶帳號(hào)、明文密碼、身份證號(hào)碼、手機(jī)號(hào)碼和電子郵箱等碼.平安測(cè)試測(cè)試經(jīng)理以及指點(diǎn)對(duì)平安測(cè)試要足夠注重平安測(cè)試也要有測(cè)試方案平安測(cè)試是一個(gè)體系,需求從需求/設(shè)計(jì)/

4、開(kāi)發(fā)規(guī)范/編碼到測(cè)試一同努力。從測(cè)試的角度,必需有部分手工平安性驗(yàn)證的case,有必要在發(fā)布之前建立平安checklist代碼掃描只是平安測(cè)試的一部分任務(wù)開(kāi)發(fā)團(tuán)隊(duì)要有專人處理平安性問(wèn)題.平安測(cè)試case分層從測(cè)試工程師角度去設(shè)計(jì)Testcase:運(yùn)用程序平安測(cè)試 (密碼/權(quán)限劃分/超時(shí)/代碼掃描)操作系統(tǒng)平安測(cè)試帳號(hào)/文件效力/日志數(shù)據(jù)庫(kù)平安測(cè)試賬戶/口令/IP限制/定期備份/演練方案效力器平安測(cè)試日志/補(bǔ)丁/身份驗(yàn)證/超時(shí)設(shè)置/跳板機(jī)網(wǎng)絡(luò)環(huán)境平安測(cè)試防火墻/網(wǎng)段/異地備份.平安性測(cè)試常見(jiàn)平安問(wèn)題類(lèi)型CSRFCross-site request forgery,跨站懇求偽造XSS又叫CSS (

5、Cross Site Script) ,跨站腳本攻擊SQL Injection SQL 注入傳輸中與存儲(chǔ)時(shí)的密碼沒(méi)有加密 ,不平安的通訊 目錄遍歷 緩沖區(qū)溢出.CSRF跨站懇求偽造英語(yǔ):Cross-site request forgery,也被稱為one-click attack或者session riding,通??s寫(xiě)為CSRF或者XSRF, 是一種挾制用戶在當(dāng)前已登錄的Web運(yùn)用程序上執(zhí)行非本意的操作的攻擊方法。跟跨網(wǎng)站腳本XSS相比,XSS利用的是用戶對(duì)指定網(wǎng)站的信任,CSRF 利用的是網(wǎng)站對(duì)用戶網(wǎng)頁(yè)閱讀器的信任敏感頁(yè)面要采用https訪問(wèn)不要選擇記住密碼.XSSXSS又叫CSS (Cr

6、oss Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁(yè)面里插入惡意腳本代碼,當(dāng)用戶閱讀該頁(yè)之時(shí),嵌入其中Web里面的腳本代碼會(huì)被執(zhí)行,從而到達(dá)惡意攻擊用戶的特殊目的。最常見(jiàn)就是釣魚(yú)網(wǎng)站在有破綻的正規(guī)網(wǎng)站上嵌入登陸框套取賬戶和密碼測(cè)試方法:在輸入框中輸入以下字符,可直接輸入腳本來(lái)看HTML標(biāo)簽: 本義字符:&(&);<(); (空格) ;腳本言語(yǔ):alert(document.cookie);特殊字符: / 最小和最大的長(zhǎng)度能否允許空輸入對(duì)Grid、Label、Tree view類(lèi)的輸入框未作驗(yàn)證,輸入的內(nèi)容會(huì)按照html語(yǔ)法解析出來(lái),要控制腳本注入的語(yǔ)

7、法要素。比如:javascript離不開(kāi):“、“(、“、“;. 在輸入或輸出時(shí)對(duì)其進(jìn)展字符過(guò)濾或本義處置.SQL InjectionSQL注入是描畫(huà)一個(gè)利用寫(xiě)入特殊SQL程序碼攻擊運(yùn)用程序的動(dòng)作,用戶可以提交一段數(shù)據(jù)庫(kù)查詢代碼,根據(jù)程序前往的結(jié)果,獲得某些他想得知的數(shù)據(jù).只需是帶有參數(shù)的動(dòng)態(tài)網(wǎng)頁(yè)且此網(wǎng)頁(yè)訪問(wèn)了數(shù)據(jù)庫(kù),那么就有能夠存在SQL注入例:一個(gè)驗(yàn)證用戶登陸的頁(yè)面,假設(shè)運(yùn)用的sql語(yǔ)句為:Select *fromtable A whereusername + username+ and pass word . 那么在Sql語(yǔ)句后面 輸入 or 11 就可以不輸入任何password進(jìn)展攻擊

8、SELECT count(*)FROM usersWHERE username=a or a=a AND password=a or a=a處理方案: 1、本義敏感字符及字符串,SQL的敏感字符包括:Union,cmd,+,/,.,;,-,%,0 x, patch Can not find the file. Search the file?是(AppScan安裝目錄下)選中engine_control.dllOK第二步:翻開(kāi)keygen.exe 在第一個(gè)框Team EDGE輸入隨意輸入如:keygen Generate當(dāng)前目錄生成license.lic第三步: 將自動(dòng)生成的license.l

9、ic復(fù)制到APPSCAN的安裝目錄下。 第四步: 翻開(kāi)APPSCAN程序,單擊協(xié)助答應(yīng)證裝入舊格式.lic答應(yīng)證.APPScan掃描原理一.APPScan掃描原理二執(zhí)行掃描的原理.APPScan任務(wù)流程 APPScan任務(wù)流程 .界面引見(jiàn).實(shí)例1.實(shí)例2.實(shí)例3.實(shí)例4.實(shí)例5在執(zhí)行Web平安掃描義務(wù)的過(guò)程中,您可以隨時(shí)查看曾經(jīng)檢測(cè)出的Web平安問(wèn)題。掃描專家評(píng)價(jià)完成后,會(huì)顯示所建議的配置更改核實(shí)表 。這里要留意的是:假設(shè)存在用戶輸入的APPSCAN無(wú)法執(zhí)行的更改,那么它們的復(fù)選框會(huì)顯示成灰色且為未選中形狀,假設(shè)要修正這些更改,單擊更改的鏈接.實(shí)例6.實(shí)例7.實(shí)例8.Automation Te

10、st Training.自動(dòng)化測(cè)試工程要素投入產(chǎn)出迭代速度工具選擇環(huán)境搭建代碼管理開(kāi)發(fā)周期難點(diǎn)處理后期維護(hù).自動(dòng)化測(cè)試任務(wù)開(kāi)展如何在工程中快速開(kāi)展自動(dòng)化測(cè)試?團(tuán)隊(duì) (知識(shí)構(gòu)造,性格,職業(yè)開(kāi)展)Troubleshooter,Teamlead流程 (目的,代碼,環(huán)境)為什么目的很重要?技術(shù) (言語(yǔ),框架,工具)如何選擇?.自動(dòng)化測(cè)試工具Watij/Selenium/WebdirverQTP/Winrunner/AutorunnerRobotiumAppiumLoadrunnerUI自動(dòng)化API自動(dòng)化Mobile自動(dòng)化分層自動(dòng)化概念:.UI自動(dòng)化測(cè)試工具比較Watij:開(kāi)源,只支持IE閱讀器,對(duì)象識(shí)

11、別完全開(kāi)發(fā),只自持B/S構(gòu)造,上手需求一定代碼根底QTP:商用,單機(jī)license5000美金,Vbscript言語(yǔ),可以錄制,支持IE和firefox,上手容易,支持CS構(gòu)造。但是對(duì)象識(shí)別不透明,腳本復(fù)用性差Webdirver:開(kāi)源,支持IE/Firefox/Chrome閱讀器,對(duì)象識(shí)別完全開(kāi)發(fā),只支持B/S構(gòu)造,需求一定代碼根底.Selenium自學(xué)的迷惑selenium的projects包含如下幾個(gè)方面:1.Selenium IDE 、 2.Selenium Remote Control 、 3.Selenium Grid 、4.Selenium WebDriver1. Selenium

12、 IDE作為Firefox上的一個(gè)插件,提供錄制功能,個(gè)人觀念,假設(shè)能手寫(xiě)代碼,就不要用這個(gè)東西。2. Selenium Remote Control是一個(gè)客戶端/效力器系統(tǒng),可以在本地或在其他電腦上控制Web閱讀器,運(yùn)用幾乎任何編程言語(yǔ)和測(cè)試框架。3. Selenium Grid 可以遠(yuǎn)程的控制到并在多個(gè)效力器上同時(shí)運(yùn)轉(zhuǎn)測(cè)試4. Selenium WebDriver可以在本地或遠(yuǎn)程計(jì)算機(jī)上的驅(qū)動(dòng)閱讀器.初識(shí)Webdriver.自動(dòng)化測(cè)試思想Case層:Case層是一個(gè)個(gè)完好的測(cè)試案例,是自動(dòng)化測(cè)試中最小的執(zhí)行單元;Flow層:Flow層是對(duì)測(cè)試所執(zhí)行的操作的籠統(tǒng),每一個(gè)測(cè)試案例都是由一系列的

13、測(cè)試操作組合而成,F(xiàn)low層為Case層提供了可組合的操作集;Page層:Page層是對(duì)系統(tǒng)中頁(yè)面的籠統(tǒng),F(xiàn)low層是一系列對(duì)于頁(yè)面或者頁(yè)面上數(shù)據(jù)的操作的組合。Page層為Flow層提供了可操作的頁(yè)面集合;Data層:Data層是對(duì)頁(yè)面上可操作的數(shù)據(jù)的籠統(tǒng),為Flow層提供了頁(yè)面上可操作數(shù)據(jù)的集合;Element層:Element是頁(yè)面上的IE控件的籠統(tǒng),每一個(gè)Page都是由這些IE空間組合而成,Element層為Page層提供了IE控件的集合;XML文件:XML文件的作用是為Data層提供測(cè)試所需數(shù)據(jù);.框架引見(jiàn)一.框架引見(jiàn)二.框架引見(jiàn)三.Result check.Case Execute.

14、腳本運(yùn)轉(zhuǎn)腳本運(yùn)轉(zhuǎn)單個(gè)測(cè)試腳本執(zhí)行:?jiǎn)蝹€(gè)執(zhí)行的時(shí)候運(yùn)用了Junit執(zhí)行,因此在創(chuàng)建時(shí)候需求添加Test標(biāo)簽,運(yùn)轉(zhuǎn)時(shí)選擇Outline中的相應(yīng)方法點(diǎn)擊右鍵選擇Run As Junit;多腳本執(zhí)行:在執(zhí)行多個(gè)測(cè)試腳本的時(shí)候框架經(jīng)過(guò)Ant觸發(fā)TestDriver運(yùn)轉(zhuǎn),要運(yùn)轉(zhuǎn)的Case集合配置與TestCaseList.xml文件中,TestCaseList.xml文件內(nèi)容如下所示:NBUTest_001其中:指定了Fail的Case的執(zhí)行次數(shù),即Fail的case否那么重新執(zhí)行;指定了每個(gè)case的執(zhí)行時(shí)間,假設(shè)Case執(zhí)行超越這個(gè)時(shí)間將會(huì)終止該Case的執(zhí)行;指定了運(yùn)轉(zhuǎn)的Case集合,假設(shè)testA

15、ll屬性的值是Y那么執(zhí)行該Class下的標(biāo)有Test標(biāo)簽的方法,假設(shè)是N那么執(zhí)行NBUTest_001中標(biāo)識(shí)的方法。.TestNG配置批量執(zhí)行case1.安裝 TestNG eclipse plugin:Eclipse:Help - Software Updates - Find and Install - Search for new features to install按 New Remote SiteName: TestNGURL: beust/eclipse然后安裝即可2.接入,只需求導(dǎo)入import org.testng.annotations.Test的Test ,然后添加Tes

16、tNG對(duì)應(yīng)xml配置格式如下或者3.在xml右側(cè)菜單運(yùn)轉(zhuǎn)選擇run as testng就能運(yùn)轉(zhuǎn)對(duì)應(yīng)的testsuite,假設(shè)需求不同的suite,只需求添加并配置xml。.環(huán)境搭建測(cè)試環(huán)境的搭建代碼管理 開(kāi)發(fā)平臺(tái)Selenium2+Junit4+SVN+EclipseSelenium2+TestNG+SVN+Eclipse.selenium Java環(huán)境搭建安裝jdk并配置環(huán)境變量jdk安裝jdk需求1.6版本及以上的,安裝目錄為默許途徑。jdk下載地址: oracle/technetwork/java/javase/downloads/index.html環(huán)境變量配置CLASSPATH=.;

17、%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jarJAVA_HOME=C:Program FilesJavajdk1.6.0_10PATH=%JAVA_HOME%bin詳細(xì)的操作步驟如下:.Webdriver對(duì)閱讀器的支持2.1HtmlUnit Driver優(yōu)點(diǎn):HtmlUnit Driver不會(huì)實(shí)踐翻開(kāi)閱讀器,運(yùn)轉(zhuǎn)速度很快。對(duì)于用FireFox等閱讀器來(lái)做測(cè)試的自動(dòng)化測(cè)試用例,運(yùn)轉(zhuǎn)速度通常很慢,HtmlUnit Driver無(wú)疑是可以很好地處理這個(gè)問(wèn)題。缺陷:它對(duì)JavaScript的支持不夠好,當(dāng)頁(yè)面上有復(fù)雜JavaScript時(shí),經(jīng)常會(huì)捕獲不到頁(yè)面元

18、素。運(yùn)用:WebDriver driver = new HtmlUnitDriver();2.2FireFox Driver優(yōu)點(diǎn):FireFox Dirver對(duì)頁(yè)面的自動(dòng)化測(cè)試支持得比較好,很直觀地模擬頁(yè)面的操作,對(duì)JavaScript的支持也非常完善,根本上頁(yè)面上做的一切操作FireFox Driver都可以模擬。缺陷:?jiǎn)?dòng)很慢,運(yùn)轉(zhuǎn)也比較慢,不過(guò),啟動(dòng)之后Webdriver的操作速度雖然不快但還是可以接受的。運(yùn)用:WebDriver driver = new FirefoxDriver();2.3InternetExplorer Driver優(yōu)點(diǎn):直觀地模擬用戶的實(shí)踐操作,對(duì)JavaScr

19、ipt提供完善的支持。缺陷:是一切閱讀器中運(yùn)轉(zhuǎn)速度最慢的,并且只能在Windows下運(yùn)轉(zhuǎn),對(duì)CSS以及XPATH的支持也不夠好。運(yùn)用:WebDriver driver = new InternetExplorerDriver();.對(duì)閱讀器的簡(jiǎn)單操作一A.firefox/翻開(kāi)默許途徑的firefox途徑指的是 firefox 的安裝途徑WebDriver diver = new FirefoxDriver();/翻開(kāi)指定途徑的firefox,方法1System.setProperty(webdriver.firefox.bin,D:ProgramFilesMozilla Firefoxfire

20、fox.exe);WebDriver dr = new FirefoxDriver();/翻開(kāi)指定途徑的firefox,方法2File pathToFirefoxBinary = new File(D:Program FilesMozilla Firefoxfirefox.exe); FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary); WebDriver driver1 = new FirefoxDriver(firefoxbin,null);B.ie/翻開(kāi)ieWebDriver ie_driver = new

21、InternetExplorerDriver();C.chrome由于Chrome Driver是Chromium 工程本人支持和維護(hù)的,所以他必需另外下載chromedriver.exe,放在目錄下C:WINDOWSsystem32下載地址: code.google/p/chromedriver/downloads/list/翻開(kāi)chromeWebDriver driver = new ChromeDriver();另一種啟動(dòng)chrome 的方法wiki引見(jiàn):code.google/p/selenium/wiki/ChromeDriver/翻開(kāi)chrome System.setPropert

22、y(webdriver.chrome.driver, D:chromedriver.exe); System.setProperty(webdriver.chrome.bin, C:Documents and SettingsfyLocal Settings +Application DataGoogleChromeApplicationchrome.exe); .對(duì)閱讀器的簡(jiǎn)單操作二最大化閱讀器WebDriver driver = new FirefoxDriver();driver.manage().window().maximize();String title = driver.get

23、Title();/得到當(dāng)前頁(yè)面urlString currentUrl = driver.getCurrentUrl();getWindowHandle() 前往當(dāng)前的閱讀器的窗口句柄getWindowHandles() 前往當(dāng)前的閱讀器的一切窗口句柄getPageSource() 前往當(dāng)前頁(yè)面的源碼/String s=driver.getPageSource();s=s.substring(s.indexOf(), s.indexOf();/System.out.println(當(dāng)前頁(yè)面的源碼:+s);3.2翻開(kāi)測(cè)試頁(yè)面driver.get(google);driver.navigate()

24、.to(baidu/); P.S.navigate方法會(huì)產(chǎn)生1個(gè)Navigator對(duì)象,其封裝了與導(dǎo)航相關(guān)的一些方法,比如前進(jìn)后退等3.3封鎖閱讀器測(cè)試完成后,需求封鎖閱讀器/Close the browserdriver.quit();3.4前往當(dāng)前頁(yè)面的url 和title有時(shí)候我們需求前往當(dāng)前頁(yè)面的url 或者title 做一些驗(yàn)證性的操作等。代碼如下:/得到titleString title = driver.getTitle();/得到當(dāng)前頁(yè)面urlString currentUrl = driver.getCurrentUrl();/輸出title 和currenturlSyste

25、m.out.println(title+n+currentUrl);.如何找到頁(yè)面元素一Webdriver的findElement方法可以用來(lái)找到頁(yè)面的某個(gè)元素,最常用的方法是用id和name查找。幾種比較常用的方法。4.1.1 By ID假設(shè)頁(yè)面寫(xiě)成這樣:那么可以這樣找到頁(yè)面的元素:經(jīng)過(guò)id查找:WebElement element = driver.findElement(By.id(passwd-id);4.1.2 By Name或經(jīng)過(guò)name查找:WebElement element = driver.findElement(B(passwd);4.1.3 By XPATH或經(jīng)過(guò)xpa

26、th查找:WebElement element =driver.findElement(By.xpath(/inputid=passwd-id);4.1.4 By Class Name假設(shè)頁(yè)面寫(xiě)成這樣:CheddarGouda可以經(jīng)過(guò)這樣查找頁(yè)面元素:Listcheeses = driver.findElements(By.className(cheese);4.1.5 By Link Text假設(shè)頁(yè)面元素寫(xiě)成這樣:cheese那么可以經(jīng)過(guò)這樣查找:WebElement cheese =driver.findElement(By.linkText(cheese);.如何找到頁(yè)面元素二By.cs

27、sSelectorWebElement element = driver.findElement(By.cssSelector(.input_class);By.partialLinkText:/這個(gè)方法就是模糊查詢WebDriver driver = new FirefoxDriver();driver.get(baidu/); WebElement element = driver.findElement(By.partialLinkText(hao);By.tagName:WebDriver driver = new FirefoxDriver();driver.get(baidu/);

28、 String test= driver.findElement(By.tagName(form).getAttribute(name);System.out.println(test); .如何對(duì)頁(yè)面元素進(jìn)展操作一輸入框text field or textarea 找到輸入框元素:WebElement element = driver.findElement(By.id(passwd-id);在輸入框中輸入內(nèi)容:element.sendKeys(“test);將輸入框清空:element.clear();獲取輸入框的文本內(nèi)容:element.getText();下拉選擇框(Select)找到

29、下拉選擇框的元素:Select select = new Select(driver.findElement(By.id(select);選擇對(duì)應(yīng)的選擇項(xiàng):select.selectByVisibleText(“mediaAgencyA);或select.selectByValue(“MA_ID_001);不選擇對(duì)應(yīng)的選擇項(xiàng):select.deselectAll();select.deselectByValue(“MA_ID_001);select.deselectByVisibleText(“mediaAgencyA);或者獲取選擇項(xiàng)的值:select.getAllSelectedOptio

30、ns();select.getFirstSelectedOption();.如何對(duì)頁(yè)面元素進(jìn)展操作二單項(xiàng)選擇項(xiàng)(Radio Button)找到單項(xiàng)選擇框元素:WebElement bookMode =driver.findElement(By.id(BookMode);選擇某個(gè)單項(xiàng)選擇項(xiàng):bookMode.click();清空某個(gè)單項(xiàng)選擇項(xiàng):bookMode.clear();判別某個(gè)單項(xiàng)選擇項(xiàng)能否曾經(jīng)被選擇:bookMode.isSelected();多項(xiàng)選擇項(xiàng)(checkbox)多項(xiàng)選擇項(xiàng)的操作和單項(xiàng)選擇的差不多:WebElement checkbox =driver.findElement

31、(By.id(myCheckbox.);checkbox.click(); checkbox.clear();checkbox.isSelected();checkbox.isEnabled();按鈕(button)找到按鈕元素:WebElement saveButton = driver.findElement(By.id(save);點(diǎn)擊按鈕:saveButton.click();判別按鈕能否enable:saveButton.isEnabled ();.如何對(duì)頁(yè)面元素進(jìn)展操作三左右選擇框也就是左邊是可供選擇項(xiàng),選擇后挪動(dòng)到右邊的框中,反之亦然。例如:Select lang = new S

32、elect(driver.findElement(By.id(languages);lang.selectByVisibleText(“English);WebElement addLanguage =driver.findElement(By.id(addButton);addLanguage.click();彈出對(duì)話框(Popup dialogs)Alert alert = driver.switchTo().alert();alert.accept();alert.dismiss();alert.getText();表單(Form)Form中的元素的操作和其它的元素操作一樣,對(duì)元素操作完

33、成后對(duì)表單的提交可以:WebElement approve = driver.findElement(By.id(approve);approve.click();或approve.submit();/只適宜于表單的提交上傳文件 (Upload File)上傳文件的元素操作:WebElement adFileUpload = driver.findElement(By.id(WAP-upload);String filePath = C:testuploadfilemedia_adstest.jpg;adFileUpload.sendKeys(filePath);.如何對(duì)頁(yè)面元素進(jìn)展操作四Wi

34、ndows 和 Frames之間的切換普通來(lái)說(shuō),登錄后建議是先:driver.switchTo().defaultContent();切換到某個(gè)frame:driver.switchTo().frame(leftFrame);從一個(gè)frame切換到另一個(gè)frame:driver.switchTo().frame(mainFrame);切換到某個(gè)window:driver.switchTo().window(windowName);遷延(Drag andDrop)WebElement element =driver.findElement(B(source);WebElement target

35、= driver.findElement(B(target);(new Actions(driver).dragAndDrop(element, target).perform(); 導(dǎo)航 (Navigationand History)翻開(kāi)一個(gè)新的頁(yè)面:driver.navigate().to(example);經(jīng)過(guò)歷史導(dǎo)航前往原頁(yè)面: driver.navigate().forward();driver.navigate().back();.如何對(duì)頁(yè)面元素進(jìn)展操作五調(diào)用Java ScriptWeb driver對(duì)Java Script的調(diào)用是經(jīng)過(guò)JavascriptExecutor來(lái)實(shí)現(xiàn)的,

36、例如:JavascriptExecutor js = (JavascriptExecutor) driver;js.executeScript(function()inventoryGridMgr.setTableFieldValue(+ inventoryId + , + fieldName + ,+ value + );)();4.3.4 Webdriver截圖假設(shè)用webdriver截圖是:driver = webdriver.Firefox()driver.save_screenshot(C:error.jpg)讀取Cookies我們經(jīng)常要對(duì)的值進(jìn)展讀取和設(shè)置。添加cookie:Coo

37、kie cookie = new Cookie(key, value);driver.manage().addCookie(cookie);獲取cookie的值:Set allCookies = driver.manage().getCookies();for (Cookie loadedCookie : allCookies) System.out.println(String.format(%s - %s,loadedCookie.getName(), loadedCookie.getValue();根據(jù)某個(gè)cookie的name獲取cookie的值:driver.manage().get

38、CookieNamed(mmsid);刪除cookie:driver.manage().deleteCookieNamed(CookieName);/ By Cookiedriver.manage().deleteCookie(loadedCookie);/ Or all of themdriver.manage().deleteAllCookies();.如何對(duì)頁(yè)面元素進(jìn)展操作六頁(yè)面等待由于Load頁(yè)面需求一段時(shí)間,假設(shè)頁(yè)面還沒(méi)加載完就查找元素,必然是查找不到的。最好的方式,就是設(shè)置一個(gè)默許等待時(shí)間,在查找頁(yè)面元素的時(shí)候假設(shè)找不到就等待一段時(shí)間再找,直到超時(shí)。Webdriver提供兩種方法,

39、一種是顯性等待,另一種是隱性等待。顯性等待:WebDriver driver =new FirefoxDriver();driver.get(somedomain/url_that_delays_loading);WebElement myDynamicElement = (new WebDriverWait(driver, 10) .until(new ExpectedCondition() Override public WebElement apply(WebDriver d) returnd.findElement(By.id(myDynamicElement); );隱性等待:Web

40、Driver driver = new FirefoxDriver();driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);driver.get(somedomain/url_that_delays_loading);WebElement myDynamicElement =driver.findElement(By.id(myDynamicElement);.元素實(shí)現(xiàn)的方法.給元素新增一個(gè)方法的流程.元素方法的詳細(xì)實(shí)現(xiàn).特殊Selectlist的處置.特殊Selectlist的處置二.對(duì)日期控件的處置webdrive

41、r 如何處置時(shí)間控件:1、運(yùn)用比較普遍,也很通俗的方法先切換到時(shí)間控件的frame,再在frame中實(shí)現(xiàn)所要點(diǎn)擊時(shí)間的操作2、運(yùn)用js,實(shí)現(xiàn)把時(shí)間標(biāo)簽中的value屬性賦值,這個(gè)值就是他想要選擇的時(shí)間,留意時(shí)間格式;假設(shè)改時(shí)間標(biāo)簽為只讀,需求把只讀限制去掉以下為代碼: JavascriptExecutor removeAttribute = (JavascriptExecutor)driver; /remove readonly attribute removeAttribute.executeScript(var setDate=document.getElementById(train_d

42、ate);setDate.removeAttribute(readonly);) ; WebElement setDatElement=driver.findElement(By.xpath(/inputid=train_date); setDatElement.clear(); setDatElement.sendKeys(2021-02-18);.一些閱歷1Frame處置:frame=ControllerChoose.getSpecificController().getSelectList(Finder.cssSelector,#iframe iframe);Object framedr

43、iver = frame.switchToFrame();ReleasePoint=ControllerChoose.getSpecificController().getTextField(Finder.xpath, /tableclass=InputTB/tbody/tr1/td2/span/input1, framedriver);日歷格處置:在page中定義Element 為Date類(lèi)型Plandate在case中援用該Element的方法:BacicInfo.getInstance().plandate.DateValueUIC1_executeJScript(2021-10-10)

44、;.一些閱歷23.翻開(kāi)多個(gè)Tab,前往到初始的driverSet handles = InitDriver.getWindowHandles(); 4.前往到指定url的driverInitDriver.SwitchToWindowByUrl(30/ropv2/ld_window/);5.Alert處置alert=ControllerChoose.getSpecificController().getAlertDialogue(); /page中定義RollBackOperation.getInstance().alert.clickOK(); /case中調(diào)用方法6.Select框處置Ver

45、sionSelect=ControllerChoose.getSpecificController().getSelectList(Finder.id, “ContentPlaceHolder1_rptAppList_ddlVersion_0); /page中定義RollBackOperation.getInstance().VersionSelect.selectValue(“v2); /case中調(diào)用.一些閱歷3WebDriver每次啟動(dòng)一個(gè)Firefox的實(shí)例時(shí),會(huì)生成一個(gè)匿名的profile,并不會(huì)運(yùn)用當(dāng)前Firefox的profile。這點(diǎn)一定要留意。比如假設(shè)訪問(wèn)被測(cè)試的web效力需

46、求經(jīng)過(guò)代理,他想直接設(shè)置Firefox的代理是行不通的,由于WebDriver啟動(dòng)的Firefox實(shí)例并不會(huì)運(yùn)用他這個(gè)profile,正確的做法是經(jīng)過(guò)FirefoxProfile來(lái)設(shè)置。public WebDriver create() FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference(xy.type,1); firefoxProfile.setPreference(xy.,yourProxy); firefoxProfile.setPreference(xy.http_port

47、,yourPort); firefoxProfile.setPreference(xy.no_proxies_on,); return new FirefoxDriver(firefoxProfile); 經(jīng)過(guò)FirefoProfile也可以設(shè)置Firefox其它各種配置。假設(shè)要默許給Firefox安裝插件的話,可以將插件放置到Firefox安裝目錄下的默許的plugin文件夾中,這樣即使是運(yùn)用一個(gè)全新的profile也可以運(yùn)用此plugin .一些閱歷4運(yùn)用WebDriver點(diǎn)擊界面上Button元素時(shí),假設(shè)當(dāng)前Button元素被界面上其他元素遮住了,或沒(méi)出如今界面中比如Button在頁(yè)面底

48、部,但是屏幕只能顯示頁(yè)面上半部分,運(yùn)用默許的WebElement.Click()能夠會(huì)觸發(fā)不了Click事件。修正方案是找到該頁(yè)面元素后直接發(fā)送一條Click的JavaScript指令。(JavascriptExecutor)webDriver).executeScript(arguments0.click();, webElement);假設(shè)網(wǎng)站運(yùn)用了JQuery的動(dòng)畫(huà)效果,我們?cè)谶\(yùn)轉(zhuǎn)測(cè)試的時(shí)候其實(shí)可以disable JQuery的animation,一方面可以加快測(cè)試的速度,另一方面可以加強(qiáng)測(cè)試的穩(wěn)定性假設(shè)啟用了Animation,運(yùn)用WebDriver驅(qū)動(dòng)閱讀器時(shí)能夠會(huì)出現(xiàn)一些無(wú)法預(yù)料的

49、異常。(JavascriptExecutor)driver).executeScript(jQuery.fx.off=true);由于WebDriver要驅(qū)動(dòng)閱讀器,所以測(cè)試運(yùn)轉(zhuǎn)的時(shí)間比較長(zhǎng),我們可以并行跑測(cè)試以節(jié)省時(shí)間。假設(shè)他運(yùn)用的是maven構(gòu)建工具,可以配置surefire plugin時(shí),在configruation節(jié)點(diǎn)參與以下配置。classes 3 false .一些閱歷5當(dāng)進(jìn)展了一些操作發(fā)生頁(yè)面跳轉(zhuǎn)時(shí),最好加一個(gè)Wait方法等待page load完成再進(jìn)展后續(xù)操作。方法是在某個(gè)時(shí)間段內(nèi)判別document.readyState是不是tected Funct

50、ion isPageLoaded() return new Function() Overridepublic Boolean apply(WebDriver driver) return (JavascriptExecutor) driver).executeScript(return document.readyState).equals(complete); ; public void waitForPageLoad() WebDriverWait wait = new WebDriverWait(webDriver, 30);wait.until(isPageLoaded(); .一些閱歷6假設(shè)頁(yè)面有Ajax操作,需求寫(xiě)一個(gè)Wait方法等待Ajax操作完成。方式與上一條中的根本一樣。比如一個(gè)Ajax操作是用于向DropDownList中填充數(shù)據(jù),那么寫(xiě)一個(gè)方法判別該DropDownList中元素能否多余0個(gè)。private Function haveMoreThanOneOption(final By element) return new Function() Override public Boolean apply(Web

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論