最近在使用IATA執行CASE的時候發現在chrome瀏覽器下處理一些類似所見即所得的富文本框,頁面元素在switchintoframe后無法正常切換回來,針對這個問題給出一個解決方案供大家交流。
具體如下
如圖所示,這是一個比較常見的富文本編輯框,在chrome下使用默認的處理方式即switch 進FRAME然后編輯完內容可能會發生無法切換回當前操作的window的問題,原因是chromedriver中switch操作元素的函數對富文本框的支持不是很好。
下面給出一種可行的思路大家交流一下,首先我們看一下這個頁面的源碼,找到這個編輯框的定義,操作方法,firefox 可以右鍵頁面空白處選擇 view page source ,搜索這個page source的 編輯框所定義的頁面代碼,上圖中的輸入框在頁面中定義的代碼為:
如圖中所示,我們發現這個textarea的id為 apf_id_1_f31 , 然后因為我們知道這個輸入框是一個富文本編輯框,我們可以全文搜索下apf_id_1_f31的定義,發現如下信息
從page source中,我們發現 KE.show({id:”apf_id_1_f31”…..
KE.show是神馬內?
GOOGLE一下,在GOOGLE搜索框中輸入KE.show 搜索出來的第一條信息,
當然 具體搜索出來的記錄可能會有略微變化,從搜索框中我們發現這是一個叫kindeditor的東東。從圖片中我們發現了和我們page source相似的KE.show({id:’content_1’…..。
試試在pagesource中查找下kindEditor~
神奇的發現頁面中有加載了kindeditor的js代碼,原來頁面中這個描述的輸入框是一個使用kindeditor的福本文框。
接下來 如果我們不希望調用selenium自己的切入富文本框的方式來做,我們就可以使用kindeditor提供的默認API來達到對文本框輸入信息的目的。
從上面的定義kindeditor的文本框加載JS中,我們還知道了 這個KE使用3.5.3版本。
Google搜索KE官網,查看其3.x版本的API。
http://www.kindsoft.net/doc.php
點API
里面很詳細的描述了這個KE富文本框的使用方法,包括初始化加載,函數等等等。
看看KE的函數里有啥?
找到了這個方法。
這下就好辦了,selenium提供執行javascript的方法。
這里對這個文本框輸入值,我們可以直接使用 selenium執行JS。
runScript的代碼為
通過拼裝一個js為String后執行這個JS就可以達到對這個文本框的編輯效果。并且不存在switchframe的問題。:)
總結,上面所說的東西只是給大家一個思路當我們碰到這種問題的時候可以嘗試看一下page source里面的信息,或許里面就會有解決的方法了。當然其實還有一個更好的辦法~ 那就是~~~~
把做這個頁面的開發抓過來直接請教一下,那樣就更快啦。:)
PS 找開發問適合于需要快速堆出測試CASE來的情況,建議空閑的時候自己研究下類似問題的解決方案,可以增加很多相關知識喔~
原文轉自:http://www.anti-gravitydesign.com