Selenium操作聯動菜單
一個問題就是二級聯動菜單,比如選擇省市的二級聯動菜單,在第一個菜單中選擇省份后會觸發二級菜單的load事件去 裝載市區的option label。可如果單獨用selenium.select(locator,label='xxx');的操作是無法觸發二級菜單的load事件的,從而執行時無法找到相應的label。大家的建議都是用fireEvent、mouseUp、mouseDown之類的API進行調試,可這些方法仍沒有解決我的問題。后來是通過先focus,再click,最后select的步驟進行操作才能觸發事件并選到相應的label。實例如下:
selenium.focus(provinceCode); selenium.click(provinceCode); selenium.select(provinceCode,label='Beijing'); selenium.focus(cityCode); selenium.click(cityCode); selenium.select(cityCode,label='Beijing'); |
可感覺這種方式畢竟繁瑣,不知道有沒有更好的方法可以直接觸發事件,直接通過select進行操作。其間我還看到了這篇文章http://blog.csdn.net/honglei915/archive/2009/11/16/4815513.aspx,可是沒有成功,不知道是不是我用的框架沒有繼承SeleniumTestCase。因為我們的框架是結合TestNG,通過@Factory和@Test標注進行測試Case文件解析,文件以htm形式存在,將tr/td標簽解析為selenium可執行的命令執行自動化操作。如果大家有什么好的辦法請留言告訴我吧,謝謝!
其次就是對頁面上js事件的處理,現在我能想到的就是用fireEvent()這個API。一個參數是要觸發這個js的控件的xpath,另一個參數就是要觸發的事件, 大家給的建議一般都是blur或focus,可嘗試了很多次都沒有成功。不知大家有沒有更好的方法?或者了解這個API的大蝦能不能給具體講講,為啥用blur/focus,這倆有什么區別?還有沒有什么其他event可以用呢?謝謝!
posted on 2014-02-28 10:52 順其自然EVO 閱讀(2868) 評論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動化測試學習