相信有模擬微信頁面請求的測試都有看到過這個頁面,簡單點說就是爬蟲爬微信頁面,進行回放的時候會出現這個頁面。大概在1年前,專門安排了一我的去解決這個技術問題,遺憾的是當時沒有找到解決方案,接下來全部微信端的接口測試和性能測試都沒法進行,今天和你們分享下咱們的解決方案,但願你們能夠繞過微信的坑。javascript
我這裏以JMeter來舉例,咱們能夠經過在JMeter上開啓代理,手機上設置代理來錄製微信端的請求,如下爲在微信端的業務對應生成的腳本:css
錄製完成後,咱們進行回放,你會發如今查看結果樹
中,會重定向到微信受權,接着就開始提示:請在微信客戶端打開連接。java
一、每一個組放入一個新的控制器:在手機端上作的一次操做所產生的請求會被放在一個控制器中,很是方便;
二、選中記錄HTTP信息頭、添加斷言、Regex matching :自動添加信息頭和斷言;android
這裏咱們看一下請在微信客戶端打開連接
頁面對應的代碼:微信
<script type="text/javascript"> var ua = navigator.userAgent.toLowerCase(); var isWeixin = ua.indexOf('micromessenger') != -1; var isAndroid = ua.indexOf('android') != -1; var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1); if (!isWeixin) { document.head.innerHTML = '<title>抱歉,出錯了</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css">'; document.body.innerHTML = '<div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">請在微信客戶端打開連接</h4></div></div>'; } </script>
重點看:微信開發
var ua = navigator.userAgent.toLowerCase(); var isWeixin = ua.indexOf('micromessenger') != -1;
說明微信的這個提示是經過判斷userAgent中是否包含micromessenger
確認是否從微信中打開。
好了,咱們查看如下HTTP頭中的userAgent:iphone
錄製的時候自動添加了錄製HTTP請求頭的,那麼爲何在JMeter打開會仍然會提示呢?這裏懷疑是微信故意留的坑或者是微信開發這個頁面的人英語四級沒過。性能
通過和咱們程序猿哥哥陳丹明
和陳建清
一番討論,一開始沒有解決方案;此時丹明
懷疑MicroMessenger這個單詞寫錯了,應該是:micromessage!一試,果真!
好吧,程序猿
你贏了,看來懂英語是多麼的重要。測試
在HTTP請求頭裏面將MicroMessenger
修改爲 micromessage
。ui
一、請在微信客戶端打開連接 這個問題困擾了咱們好久,今天總算解決,完美解決;二、感謝程序猿的大膽懷疑,給他們點贊;三、自動化測試過程當中若是遇見了技術瓶頸,不妨多和研發溝通,他們總能給你一些指導。