1 對於元素的外層包括frame/iframe標簽的。一定要先select frame name=xxx,然后再操作元素。
Select frame name=新建個案
click element id= xxxxx


2 對於window.showModalDialog()模式打開的新窗口
Eg.點擊“支付詳情”的“詳情”,出來一個新頁面。如何定位呢?單純的select window title=payDetail page 是定位不到新窗口的。解決辦法如下:




第一句話取的Id就是要點擊按鈕的Id,已經實驗過,網上的經驗也說明,直接click element id=xxx 是沒有效果的。要用上面的第一句javascript執行點擊按鈕。
3 對於例子2 新打開的窗口沒有title,用url不能定位到,如何解決呢?
比如:點擊“充值退款”出現如圖窗口。Select window url=xxxx 根本定位不了。

網上有大神在selenium的源碼里添加了幾個關鍵字。這樣我們就可以使用了。操作如下:
D:\Python27\Lib\site-packages\robotframework_selenium2library-1.1.0-py2.7.egg\Selenium2Library\locators (根據自身情況而定)
中的windowmanager.py 增加了方法
def select_by_handle(self, browser, toHandle):
browser.switch_to_window(toHandle)
def get_window_handles(self, browser):
return [ window_info[0] for window_info in self._get_window_infos(browser) ]
def get_current_window_handle(self, browser):
return browser.get_current_window_handle()
D:\Python27\Lib\site-packages\robotframework_selenium2library-1.1.0-py2.7.egg\Selenium2Library\keywords
中的_browsermanagement.py 增加如下方法
def select_window_by_handle(self, locator=None):
self._window_manager.select_by_handle(self._current_browser(), locator)
def get_window_handles(self):
"""Returns and logs handles of all windows known to the browser."""
return self._log_list(self._window_manager.get_window_handles(self._current_browser()))
def get_current_window_handle(self):
"""Returns and logs handle of current window known to the browser."""
return self._log_list(self._window_manager.get_current_window_handle(self._current_browser()))
==============================分割線==================================
按上述添加上,然后可以使用他新添加的關鍵字了。
網上大神只寫了辦法,沒有說明他的關鍵字的使用方法。
我研究了下用法,實驗成功。具體腳本如下。

解釋:
@{b} get window handles //@{b}變量保存當前所有的窗口。@符號表示這個變量是集合。
Select window by handle ${b[1]}//這個是取變量b里面的第二個窗口。(下標從0開始)。
4 特殊下拉框的選擇
對於這種下拉框,一拉啥沒有。


代碼中也沒有任何可操作的select option標簽等。如何是好。
既然下拉框,那就總可以選擇。我們輸入一個名“王XX”,下拉框自動出現這樣。


但是怎么選擇上?代碼實在沒有相應的元素來操作啊。
不過,我們操作鍵盤,向下鍵,enter鍵,即可成功選擇。
那問題就變成如何在robotframework+selenium2library中操作鍵盤。api給的很簡單,press key xxxx。
查了向下鍵的ascii為40,enter鍵的為13.但是久經試驗都不對。網上說可以考慮看下selenium的源碼中向下鍵的標識用“\ue015”,好奇怪,我也不懂,就用了,果真對了。
相應腳本:

有了鍵盤操作,一系列的特殊下拉框應該沒有問題了。
對於一些不能用ascii碼操作鍵盤的,可以查下selenium的源碼,看看源碼里對某個鍵的表示到底是什么。
5 對於頁面彈個框
類似於網頁彈出的這樣的框。應該更准確的說,是alert(“”)彈出的對話框。


兩步即可:


6 對於在jenkins上運行出現奇怪錯誤。
對於一些測試用例,明明本地和遠程robotframework都跑的很順暢,在jenkins上構建就一直出這樣的錯誤:
WebDriverException: Message: u'unknown error: Element is not clickable at point (69, 444). Other element would receive the click:
這種鬼錯誤,很煩躁。
解決辦法:
Click element xxx 換成 execute javascript document.getElementById('xxx').click()
基本換成javascript執行,都會輕松通過。如果元素沒有ID的話,要用css定位的話,我用的jquery來執行。
Execute javascript $(“css”).click()。
7 對於上傳下載的操作
網上有個AutoItLibrary,跟selenium2library類似,可以找下網上的安裝方法,網上也有簡單例子。本測試過程沒有用到,不再詳述。
