Selenium 使用要点记录二
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
書接上回,最近項目里邊新的release需要move to uat。然后我很光榮的被委派去給tester執(zhí)行自動化測試腳本做support,讓我極度遺憾的是tester不是妹子,表示本絲注定單身孤獨終老的命啊。
好吧不扯淡了,在測試的過程中碰到幾個問題導(dǎo)致程序不夠穩(wěn)定,腳本也被噴不夠robust,我自己也噴page object模式就是shit,維護(hù)的人會shi的很難看。
1. 處理popup window問題處理的不夠好?
????a. 切換到新彈出的window
????????public?boolean?switchToWindowAttach(WebDriver?driver,?String?windowTitle,String?frameId)?{boolean?flag?=?false;try?{//記下當(dāng)前windowString?currentHandle?=?getDriver().getWindowHandle();Set<String>?handles?=?getDriver().getWindowHandles();for?(String?s?:?handles)?{if?(s.equals(currentHandle))?{continue;}?else?{driver.switchTo().window(s);if?(driver.getTitle().contains(windowTitle))?{if(!StringUtils.isBlank(frameId)){//有些window可能要切換到具體的iframe才能操作內(nèi)部元素//getDriver().switchTo().defaultContent()?切換回外層driver.switchTo().frame(frameId);}flag?=?true;loggerContxt.info("Switch?to?window:?"?+?windowTitle+?"?successfully!");break;}?else?{//如果當(dāng)前循環(huán)到的window不是需要切換的window則切換回最初windowdriver.switchTo().window(currentHandle);continue;}}}}?catch?(NoSuchWindowException?e)?{loggerContxt.fatal(String.format("Failed?to?swith?to?window?whose?title?contains::?",?windowTitle),e);flag?=?false;}return?flag;}????b. 關(guān)掉處理完成的popup window
2. 需要等待頁面的某個元素加載完成再做后續(xù)操作?
Selenium提供了2個等待的操作,一種是隱式的,另一種,er,也不知道是不是叫現(xiàn)實的
a.
public?void?waitForElementLoading(Long?millis)?{driver.manage().timeouts().implicitlyWait(millis,?TimeUnit.MILLISECONDS);}b.
第一個就是隱式的等待啦。第二種我自己隱式的實現(xiàn)了ExceptedCondition,它的apply方法應(yīng)該會被回調(diào)。
ExceptedCondition提供了許多靜態(tài)的方法大家可以根據(jù)自己的需求來使用。
這兩種等待的區(qū)別和具體使用需要本絲研究一把,下次給大家介紹哈。額,表噴我,這準(zhǔn)備不足真心講不好。
轉(zhuǎn)載于:https://my.oschina.net/athhu/blog/272401
總結(jié)
以上是生活随笔為你收集整理的Selenium 使用要点记录二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UML 类之间的几种关系
- 下一篇: cisco 2600的密码破解