Selenium 使用要点记录二
生活随笔
收集整理的這篇文章主要介紹了
Selenium 使用要点记录二
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
書接上回,最近項目里邊新的release需要move to uat。然后我很光榮的被委派去給tester執行自動化測試腳本做support,讓我極度遺憾的是tester不是妹子,表示本絲注定單身孤獨終老的命啊。
好吧不扯淡了,在測試的過程中碰到幾個問題導致程序不夠穩定,腳本也被噴不夠robust,我自己也噴page object模式就是shit,維護的人會shi的很難看。
1. 處理popup window問題處理的不夠好?
????a. 切換到新彈出的window
????????public?boolean?switchToWindowAttach(WebDriver?driver,?String?windowTitle,String?frameId)?{boolean?flag?=?false;try?{//記下當前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才能操作內部元素//getDriver().switchTo().defaultContent()?切換回外層driver.switchTo().frame(frameId);}flag?=?true;loggerContxt.info("Switch?to?window:?"?+?windowTitle+?"?successfully!");break;}?else?{//如果當前循環到的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. 關掉處理完成的popup window
2. 需要等待頁面的某個元素加載完成再做后續操作?
Selenium提供了2個等待的操作,一種是隱式的,另一種,er,也不知道是不是叫現實的
a.
public?void?waitForElementLoading(Long?millis)?{driver.manage().timeouts().implicitlyWait(millis,?TimeUnit.MILLISECONDS);}b.
第一個就是隱式的等待啦。第二種我自己隱式的實現了ExceptedCondition,它的apply方法應該會被回調。
ExceptedCondition提供了許多靜態的方法大家可以根據自己的需求來使用。
這兩種等待的區別和具體使用需要本絲研究一把,下次給大家介紹哈。額,表噴我,這準備不足真心講不好。
轉載于:https://my.oschina.net/athhu/blog/272401
總結
以上是生活随笔為你收集整理的Selenium 使用要点记录二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UML 类之间的几种关系
- 下一篇: cisco 2600的密码破解