当前位置: 首页 > news >正文

怎么把自己的网站放到网上校园网站建设调查问卷

怎么把自己的网站放到网上,校园网站建设调查问卷,wordpress 自助广告插件,wordpress minty菜单上一篇博客#xff0c;我写了python自动化框架的一些知识和粗浅的看法#xff0c;在上一篇中我也给自己提出一个需求#xff1a;如果记录在测试过程中接口的调用情况#xff1f;提出这个需求#xff0c;我觉得是有意义的。你在测试过程中肯定会遇到一些莫名其妙的问题我写了python自动化框架的一些知识和粗浅的看法在上一篇中我也给自己提出一个需求如果记录在测试过程中接口的调用情况提出这个需求我觉得是有意义的。你在测试过程中肯定会遇到一些莫名其妙的问题比如web某个页面一直在刷进度条导致你定位元素失败但是你再手动操作一遍可能无法复现....对于我们来说肯定会遇到许多类似的问题。你会发现有时候仅仅靠一张截图你远远找不到bug的原因。这时候我在想如果我能拿到这一系列操作所调用的接口信息多好我就能明白为什么发生这种问题了。比如一直在刷进度条我觉得有几种情况1.后端一直在等待某个接口的响应信息。2.网络原因导致接口响应很慢(局域网一般很少出现这类问题)、3.前端工程师没有动态的把这个进度条displayNone....不论何种原因我拿到相关的接口信息就能对错误逐个排除。比如我发现某个接口的响应时间很长.....或者所有接口的响应的时间多是大于1s的又或者都正常响应原来js没有动态改变进度的属性?反正无论如何我拿到自动化操作的接口信息是没有坏处的吧(小小的缺点我后面提到 那么问题是,我们如何精准的拿到这些信息我开始的想法是通过firebug去拿firebug我们平时用的也比较多可以方便的看到控制台信息(js的执行情况)和网络信息(接口调用情况)但是我查了很多资料都没有办法完整的把这些信息给导出来....但是我很快的想到了Fiddler。Fiddler是目前为止我用的最好最顺手的一款http抓包工具(不要和我提什么wireshark,虽然经过网卡的信息它都能抓但是仅对http协议来说真不如fiddler牛逼谁用谁知道)更重要的是由于它是个代理服务器所以能抓任何设置其为代理的终端包括手机...想到这心中一阵窃喜。下面我先说说思路然后再详细的说明我是怎么做的。我的思路如下 1.设置fiddler过滤一下抓取信息如只抓取host为*.csdn.net的接口信息。 2.测试执行开始前打开fiddler。 3.当执行一个test时先在fiddler控制台输入cls清空当前sessions,防止接口信息过多或混在一起不方便排查错误。 4.当执行test完毕如果有错误则保存此test执行过程中的所有sessions至一个文件夹。无错误不做操作(如果你非要保存也是可以的) 5.重复2-3的步骤直至所有测试结束。 6.测试执行结束后,关闭fiddler。 上面的想法其实也是很简单的我们再一个个看看如何实现 对于步骤1/2/5  用python调用控制台打开fiddler是有问题的(主进程会阻塞其他应用程序没问题)改用AutoIt的run方法关闭没问题。 对于3/4是要想想办法的。对于自动化人员来说AutoIt您应该是接触过了如果没有就去看看吧AutoIt有弊端有优点最大的优点就是编写简单、脚本能转换成exe.最大的缺点windows非标准控件无法获取。万幸的是Fiddler的控制台输入框能被AutoIt识别还有就是如何改写Fiddler的Scripts。(我们的需求很简单别被吓到了) 所以第一步我们编写清除fiddler session的脚本转换成C_interface.exe。脚本简单到不能简单了如下 1 2 3 4 5 6 7 8 Example() Func Example()     Local $hWnd  WinWait([Title:Telerik Fiddler Web Debugger], , 10)     WinActivate($hWnd);激活当前窗口     ControlFocus($hWnd, ,[CLASS:WindowsForms10.EDIT.app.0.141b42a_r6_ad1;NAME:txtExec])     ControlSetText($hWnd, , [CLASS:WindowsForms10.EDIT.app.0.141b42a_r6_ad1;NAME:txtExec],cls)     Send({ENTER})  EndFunc   ; 照顾一下刚开始看AutoIt的同学Title中的Telerik Fiddler Web Debugger与ControlFocus中的CLASS、NAME是通过AutoIt Window info这个工具捕捉的,我们的可能不一样贴图一张 我们写完了了清除session后再来写下保存接口信息的脚本也很简单保存为D_interface.exe Example() Func Example()Local $parment$CmdLine[1];接受控制台数据,$parment为fiddler接口保存路径Local $hWnd WinWait([Title:Telerik Fiddler Web Debugger], , 10)WinActivate($hWnd);激活当前窗口ControlFocus($hWnd, ,[CLASS:WindowsForms10.EDIT.app.0.141b42a_r6_ad1;NAME:txtExec])ControlSetText($hWnd, , [CLASS:WindowsForms10.EDIT.app.0.141b42a_r6_ad1;NAME:txtExec],dump $parment)Send({ENTER})IF WinActive([Title:Cannot Save SAZ]) ThenControlClick([Title:Cannot Save SAZ],,Button1)EndIf EndFunc   ;标红部分的解释是当Fiddler没有session时(虽然不太可能出现这种情况)执行dump命令会弹出个对话框这时候要关闭对话框如果不关闭的话下面对fiddler的操作会出现问题因为这时候弹出框是fiddler的顶级窗口可能导致脚本中使用Enter键无效... 其次由于python调用控制台启动Fiddler有问题(具体问题原因未知)所以我们也用AutoIt编写并转换成S_interface.exe 1 2 3 4 5 Example() Func Example()     Local $parment$CmdLine[1]     Run($parment) EndFunc   ; 最后我们改下Fiddler的Script的从菜单的Rules-Customer Rules打开脚本剪辑器直接拉到script的末端修改方法OnExecAction如下 ......case dump:UI.actSelectAll();var bpMethod sParams[1]//UI.actSaveSessionsToZip(CONFIG.GetPath(Captures) dump.saz);UI.actSaveSessionsToZip(bpMethod)FiddlerObject.StatusText Dumped all sessions to bpMethod;//FiddlerObject.alert(bpMethod);UI.actRemoveAllSessions();return true; 修改case dump的情况bpMethod是由命令bump空格后的参数。对应于上文我们AutoIt脚本中的$parment参数由控制台输入。 上面我们的准备工作的做的差不多了总结一下干了下面的几个事情: 1.用AutoIt生成了清除Fiddler session的一个exe 2.用AutoIt生成了保存Fiddler session的一个exe 3.修改了Fiddler的Script接受一个保存session路径的一个参数 在完成了以上工作后我们来进行测试注意在此之前我们要明白一些事情: 1.用Fiddler做代理后可能影响接口的加载速度毕竟有个第三者。但是我觉得速度影响在web自动化上不是那么重要的事情毕竟现实中的访问速度肯定比你公司内部访问速度更差。(缺点之一) 2.用Fiddler做代理后我们知道在访问https的时候比如访问百度可能显示非安全链接我们平常的做法是把fiddler的证书导入浏览器(具体百度上有说明)但是我们webdriver启动的是个空白的浏览器如何能自动加载Fiddler证书 3.用Fiddler做代理后如果Fiddler崩溃或者没启动起来造成无法联网导致所有脚本无法运行这个风险我们如何规避 第一个问题跳过我们看看第二个问题 在路径C:\Python27\Lib\site-packages\selenium\webdriver\firefox\firefox_profile.py下定义了一个FirefoxProfile类这个类我们平时可能不太用的上但是用不上不代表他不重要这个类是个管理浏览器插件的类。我们说明一下 1.其构造函数传火狐浏览器的插件路径。火狐浏览器的插件一般在C:\Users\***\AppData\Roaming\Mozilla\Firefox\Profiles\****.default-*****这个路径下面。构造函数会把这个路径下的东西copy到c:\\users\\pf-211x3\\appdata\\local\\temp\\***\\webdriver-py-profilecopy这个文件夹下。 2.encoded函数。这个函数的文档属性这样解释A zipped, base64 encoded string of profile directory for use with remote WebDriver JSON wire protocol具体很么意思呢就是这个函数会把上文中我们提到的c:\\users\\pf-211x3\\appdata\\local\\temp\\***\\webdriver-py-profilecopy这个文件夹压缩成ZIP格式文件然后对这个文件进行base64的编码当启动浏览器的时候会将这个编码一同发给服务器服务器再对他base64解码、解压缩将您本地火狐插件完完整整的复制到新启动的空白浏览器上那么我们新启动的浏览器就拥有了本地浏览器所有的插件了。 3.set_preference。传递一个键值对就是设置火狐浏览器的选项比如设置代理等等.... 4.add_extension。传递一个***.xpi的路径,就是设置浏览器加载的插件比如启动浏览器加载firebug,把firebug插件路径传递给add_extension即可 经过我对FirefoxProfile类的说明您大概知道了问题二的解决办法了吧对的就是向FirefoxProfile类中传递插件的路径。但是C:\Users\***\AppData\Roaming\Mozilla\Firefox\Profiles\****.default-*****这个文件是比较大的反正我的是50M将这样一个大的文件经过步骤2的操作是个费事费力的事情。所以你们会发现如果把完整的插件路径传递给FirefoxProfile经过一系列的压缩、传递启动本地浏览器会非常非常慢经过排除和尝试法我发现火狐对证书的控制是由插件文件夹下的cert8.db控制的所有我们把这个文件给拷贝出来放在一个文件夹中单独传这个文件夹路径即可。 第三个问题 浏览器的代理有几下几种1.不使用代理。2.自动检测此网络的代理设置。3.使用系统代理。4.手动配置代理。5,自动代理配置 对于1和4大家都明白对于5也还好就是写一个脚本告诉浏览器什么样的域名我要代理其他的不使用代理(具体百度)对于2和3我多少有点不知道他怎么用对于3使用系统代理我的实践就是如果我启动了fiddler它就使用了fiddler代理如果没有启动就不使用代理看起来挺智能了。我也不太清楚这样为什么...所以对于问题三我也是纠结的第一、如果设置手动代理看起来是没问题的就怕fiddler故障了,然后雪崩...第二、我着实不太了解我使用系统代理对不对这个大家自己看好了。我反正就用系统代理了至少能满足我的想法:万一fiddler故障了也没啥大不了就抓不到接口数据呗其他的还能正常的跑....最后,就是在我们上篇继承unnitest的run方法里面修改一点点代码也很简单红色标识了 ...... def run(self, resultNone):orig_result resultif result is None:result self.defaultTestResult()startTestRun getattr(result, startTestRun, None)if startTestRun is not None:startTestRun()self._resultForDoCleanups resultscreenshot_pathgetattr(result,screenshot_path,False)dir_name os.path.dirname(__file__) # 当前脚本根目录#因为fiddler保存尽量要使用绝对路径,如果使用相对路径会保存到安装目录下这是我们不希望的sessiong_path dir_name / Error_session#默认session保存路径if not screenshot_path:screenshot_pathself.__screenshot_pathelse:if os.path.dirname(screenshot_path):#如果是绝对路径sessiong_pathos.path.dirname(screenshot_path)/Error_session#拿到运行test的根目录FiddlerSessionsresult.startTest(self)testMethod getattr(self, self._testMethodName)if (getattr(self.__class__, __unittest_skip__, False) orgetattr(testMethod, __unittest_skip__, False)):# If the class or method was skipped.try:skip_why (getattr(self.__class__, __unittest_skip_why__, )or getattr(testMethod, __unittest_skip_why__, ))self._addSkip(result, skip_why)finally:result.stopTest(self)returntry:success Falsetry:self.setUp()except SkipTest as e:self._addSkip(result, str(e))except KeyboardInterrupt:raiseexcept:result.addError(self, sys.exc_info())#启动setUp失败直接判断出错else:try:testMethod()except KeyboardInterrupt:raiseexcept (self.failureException,exceptions.WebDriverException):#如果是断言错误或WebDriverException,类型为fail,且增加截图#增加截图browserself.getbrowser()#尝试拿浏览器实例if browser:filenameself.__class__.__name___self._testMethodName.png#格式:类名方面名称browser.get_screenshot_as_file(screenshot_path\\filename)reback_filenamefilenameelse:reback_filenameNone#保存sessions数据sessionfile_nameself.__class__.__name___self._testMethodName_err.saz#注意格式是sazos.popen(dir_name/Tools/D_interface.exe sessiong_path\\sessionfile_name)#控制台运行D_interface.exe由AutoIt生成保存出错的sessionresult.addFailure(self, sys.exc_info(),reback_filename)#回传截图名称给report,以便能显示在报告中except SkipTest as e:#如果为跳过的异常类型为Skip异常 最后我的demo文档结构大概是这样的: 其中Error_session是保存错误的session;FireFox_profile是我们说到的火狐证书插件Tools是我们转换的3个简单的exe程序screen_shot存放错误截图IqunxingTest.py是我们改写的unnitest类我们新建测试demo脚本 #codingutf-8 import IqunxingTest import HTMLTestRunner import sys,os import unittest from selenium import webdriver from selenium.webdriver.firefox import firefox_profile import time dir_name os.path.dirname(__file__) # 拿到根目录 class Mydemo(IqunxingTest.IqunxingTest):u测试CSDN登录classmethoddef setUpClass(cls):profilefirefox_profile.FirefoxProfile(profile_directorydir_name/FireFox_profile)profile.set_preference(network.proxy.type, 5)#将浏览器代理设置为系统代理cls.browserwebdriver.Firefox(firefox_profileprofile)#启动带插件的浏览器cls.browser.implicitly_wait(10)unittest.Myskipdef test1(self):u打开csdnbrowserself.browserbrowser.get(http://www.csdn.net/)unittest.Myskipdef test2(self):ucsdn登录os.popen(dir_name/Tools/C_interface.exe)#在test开始前清空Fiddler session信息browser self.browserbrowser.find_element_by_link_text(u登录).click()time.sleep(1)browser.find_element_by_id(username).send_keys(test)time.sleep(1)browser.find_element_by_id(password).send_keys(test)time.sleep(1)browser.find_element_by_class_name(logging).click()#点击登录if not browser.find_element_by_class_name(phr_first).is_displayed():#如果没有登录成功是找不到这个控件会报错self.assertTrue(False,login failed) if __name__ __main__:fiddler_path C:\Program Files (x86)\Fiddler2\Fiddler.exe#您的Fiddler路径s os.popen(dir_name /Tools/S_interface.exe \ fiddler_path \)#启动Fiddermodule_nameos.path.basename(sys.argv[0]).split(.)[0]module__import__(module_name)runnerHTMLTestRunner.HTMLTestRunner(reprot.html)all_suiteunittest.defaultTestLoader.loadTestsFromModule(module)runner.run(all_suite)os.popen(taskkill /f /im Fiddler.exe)#测试完成后关闭fiddler 因为我们要找一些有用的sesssion信息可喜的是Fiddler能过滤一些你设置完的信息我的过滤信息如下 因为测试CSDN所以我只展示域名为*.csdn.net的会话另外一些cssjs,png等无用信息我也隐藏了(正则表达式隐藏)。好了万事具备我们运行下这个demo:最后在Error_session下保存了我们test2操作的所有http信息文件名为Mydemo_test2_err.saz(过滤的除外)同时在screen_shot下保存错误的截图。我们直接用fiddler打开这个saz文件 从上面的截图可以看出来我们保存的session是完整的过滤的除外。而且我们看到了我们点击登录时使用的接口以及传递的相关信息。当然我们点击Fiddler其他标签事能获取一切我们想获取的信息。
http://www.pierceye.com/news/700938/

相关文章:

  • 网站建设英文文献佛山外贸网站推广
  • wordpress 网站显示ip哪里可以建网站
  • 网站是干嘛用的凡科教育
  • 黄页营销网站南京哪些公司做网站
  • 俄语网站推广工程公司名称大全
  • 怎么知道网站是php什么是网站推广?
  • 温州在线课堂番禺网站建设优化
  • php怎么做网站快大都会app下载最新版本
  • 麻城网站建设公司网络推广公司挣钱吗
  • t型布局网站的样子自己做的网站如何上传
  • 排版设计模板网站百度搜索下载安装
  • 网站页面建设需要ps吗网站建设结单 优帮云
  • 网站建设对我有什么好处网站首页被k 做跳转
  • 美辰网站建设网站建设公司转型做什
  • 创意网站界面怎么查注册公司的名字可不可以用
  • 微友说是做网站维护让帮忙投注中小企业经营管理培训班
  • 网站开发宣传标语虚拟币挖矿网站开发
  • wordpress是否免费网站移动端seo
  • 加盟网站建设服务极简风格 wordpress
  • phpcms v9 网站模板seo优化的技巧
  • 域名备案网站要不要关7k7k网页游戏
  • 虚拟主机发布网站吗汕头建站平台
  • wap站是什么意思啊阿里云建设网站的步骤
  • 网站备案 异地可以做视频的网站
  • 淘宝网站c 设计怎么做安卓手机做网站
  • 嘉兴做网站建设的公司电商网名大全
  • 欢迎访问中国建设银行网站密码重置wordpress wp_parse_args
  • 普通电脑可以做网站服务器吗找人做网站需要什么条件
  • 长沙公司网站的建设网站图片尺寸
  • 高端网站定制费用是多少php网站建设制作