亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
selenium:一個技術問題解決的全過程
作者:網絡轉載 發布時間:[ 2013/4/7 15:41:40 ] 推薦標簽:

   一個困擾3天的狗血技術問題終于被解決了。記錄下來龍去脈。

  問題起因:

  RobotFramework終于推出了selenium2的Library,垂涎于selenium2性能的大幅度提升和突破瀏覽器沙箱限制這兩個大亮點,下午閑暇之余三下五除二裝上了selenium2Library。裝完后,興沖沖的寫了一個簡單的demo想運行一下,在RIDE上點擊執行后,發現測試通過,但是IE瀏覽器卻沒有能夠啟動。三天的噩夢開始了。。。。。

  過程描述:

  day1:

  1.懷疑寫的腳本有問題,反復查看后發現腳本OK。

  2.懷疑selenium2Library安裝有問題,卸掉重裝,問題依然存在。

  3.仔細閱讀安裝說明,卸掉重裝,問題依然存在。

  4.運行slenium2Library自帶的驗收測試和單元測試腳本,發現有11個用例跑不通,查看用例發現是IEDriver部分有問題。

  5.google問題,沒有答案,在robotframework社區發了技術請求貼。

  6.嘗試FirefoxDriver,能夠打開FirefoxDriver實例,但是無法進行下一步操作,Chrome也無法打開。

  7.切換關鍵詞進行搜索,再切換關鍵詞進行搜索,切換搜索引擎到bing,均沒有答案,在社區更新了一些出錯信息。

  8.設置斷點debug源碼,發現python的webdriver調用的是一個叫做IEdriver.dll的動態鏈接庫。使用工具見識IEdriver.dll,發現python正常調用IEdriver.dll,但是瀏覽器是起不來。

  9.google IEdriver.dll源碼 無果(其實有技術文檔,但是google關鍵詞不對,當時沒有找到)

  10.認為是python問題,將現有python版本切換到2.7.1,問題依然存在。。。這時候已經晚上8點了。只能回家吃飯。

  晚上吃點兒東西后繼續嘗試,把家中的python升級到2.7.2。Bingo!!!問題被解決了。當時確認為python版本問題。高高興興在社區做了回復。

  Day2:

  1.興沖沖打開自己電腦,將python升級到2.7.2,公司電腦上問題依舊。

  2.繼續翻看社區回復,發現沒有人回答。

  3.認為IEDriver.dll版本有問題,從java版的jar包里解壓出一個替換。問題依舊。

  4.懷疑瀏覽器版本有問題,又不能換,把好幾個同事的機子折騰了一個遍,嘗試數個IE版本。同事的機子也是一個也不行。

  5.使用C#調用webdriver,成功了,大興奮,換出來C#的版本的IEdriver.dll在python下還是不行(這里讓我認為不是代理服務器的問題)。

  5.由于當天有很多更重要的工作,只能先停滯下來了。

  6.晚上換了老婆的機子試驗,竟然又成功了。匪夷所思。

  Day3:

  1.下午3點鐘開始有些閑暇,繼續深入思索:家里的機子和單位的機子有什么區別呢?C#和python調用有什么區別呢?。。。苦思冥想后得出:家里的機子與單位機子的一個區別是沒有使用代理服務器。C#與python調用的區別得讀源碼。

  2.嘗試去掉代理,失敗。

  3.嘗試調試C#代碼,發現要下載一堆開源工程的源碼,心里一萬個不愿意。都有一點兒放棄了。

  4.漫無目的的google。發現有人提我一樣的問題,興沖沖的點進去,TMD是我自己提的!臨近崩潰。

  5.后回到社區,突然發現一個國際友人給了回復,她說,你試試把IE恢復默認值看看。

  6.我照做,居然成功了!!!!!

  7.在同事的機子上做。也都成功了!

  刨根問底:

  1.why? Why? Why?

  折騰了3天我不想這么放過去。仔細對比了一下瀏覽器還原后和以前的區別,大的區別是代理服務器

  。為什么剛才我去掉代理還失敗了呢?仔細回想,原來去掉代理后,沒有使用在python中退出webdriver實例,那個dll還在加載中,因此無效!真是分析問題還要更加細致才行!

  2.那為什么代理會影響IE被load呢?回家后在selenium的wiki上進行地毯式搜索,終于找到了下面這篇文章,閱讀大致了解了問題所在:

  InternetExplorerDriverInternals

  原來,IEdriver.dll是一個客戶端-服務器端的結構,服務器端代碼使用COM技術操縱IE,并且會起一個mini的Server,客戶端的代碼通過一種叫做JsonWireProtocol 的協議和服務器端通訊,從而達到操控IE的目的。服務器端的代碼寫的太簡單,根本沒有考慮代理的處理,源碼如下:

  http://code.google.com/p/selenium/source/browse/trunk/jobbie/src/cpp/InternetExplorerDriver/InternetExplorerDriver.cpp?r=8461

   

  一個技術問題解決的全過程(webdriver <wbr>調用IE <wbr>問題)

  3.為什么FireFox和Chorme在IE設置代理時也出現問題呢?

  FireFox沒有嘗試去掉代理的情況;chrome的代理設置則依賴于系統設置,也是IE設置。

  4.為什么C#可以調用成功呢,仔細琢磨,C#下的IEDriver.dll是動態生成的,生成dll的代碼肯定包含了對代理服務器的考慮(搞.net的肯定對IE機制熟透了)。

  5.為什么網上那么少人有跟我一樣的問題? 國內社區還不成熟,案例少,國外社區的家伙們貌似用windows +IE的是小眾。。。。。。 看到n個回帖的哥們說,他們在linux+firefox上工作良好心理感覺還怪怪的。

  終解決方案:

  1.去掉代理。

  2.在社區給作者發信,請他加入對代理服務器的考慮。

  總結:

  1.要相信開源社區的力量,眾人拾柴火焰高,今后也會努力的去幫助別人。

  2.充分利用搜索引擎里的蛛絲馬跡,但是要仔細思考,不要被淹沒在信息中。

  3.真正弄懂原理才能真正解決問題,總是照貓畫虎到關鍵時刻會吃虧。

  ---------------------------------------------------------------------------------------------

  補充:

  @吳穹adam 提供了兩篇文章:

  Webdriver的高級用法:

  給出了用程序顯式設置proxy的方法:

  from selenium import webdriver PROXY = "localhost:8080" webdriver.DesiredCapabilities.INTERNETEXPLORER['proxy'] = { "httpProxy":PROXY, "ftpProxy":PROXY, "sslProxy":PROXY, "noProxy":None, "proxyType":"MANUAL", "class":"org.openqa.selenium.Proxy", "autodetect":False } # you have to use remote, otherwise you'll have to code it yourself in python to # dynamically changing the system proxy preferences driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.INTERNETEXPLORER)

  一個哥們類似問題的解決方法:

  http://passerbyy.iteye.com/blog/1286292

  自己只看了COM互操作的源碼,原來在外層是可以設置Proxy的。得繼續深入學習。

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 午夜影湿院 | 射射射综合网 | 亚色成人 | 欧美日韩一区二区不卡 | 国产黄色影院 | 久久精品18 | 天天看片国产 | 高清国产一区 | 天天综合天天综合色在线 | www.国产一区二区三区 | 国产a级黄色毛片 | 丝袜免费网站 | 男女乱淫真视频免费一级毛片 | 日批在线观看视频 | 色综合天天综合网国产成人 | 欧美成人免费一级人片 | 欧美亚洲综合在线观看 | 精品国产综合成人亚洲区 | www一片黄 | 2021天天躁夜夜燥西西 | 黄色一级毛片在线观看 | 国产高清在线不卡 | 中文字幕一区二区三区四区 | 天天摸天天爽天天碰天天弄 | 欧美末成年videos丨 | 欧美一区二区三区不卡免费观看 | 色天使色婷婷丁香久久综合 | 午夜精品视频在线观看 | 久青草中文字幕精品视频 | 欧美一级黄色片在线观看 | 中文字幕二区 | 看黄网站在线播放 | 一及黄色片| 狠狠插视频 | 免费观看性欧美大片无片纯爱 | 波多野结衣在线观看一区二区 | 国产亚洲一区二区三区不卡 | 黄色欧美在线观看 | 一个人看的免费高清视频www | 在线免费看黄色 | 亚洲欧美h |