firefox

Python+Selenium基础篇之5-第一个完整的自动化测试脚本

笑着哭i 提交于 2020-08-10 20:17:57
前面文章,我们介绍了如何采用XPath表达式去定位网页元素,在掌握了如何抓取或者如何书写精确的XPath表达式后,我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本,就相当于,你在学习Python,如何在控制台打印Hello,Python! 一样。 我们的测试用例是:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium这个官网链接选项。 在写自动化脚本之前,需要明确手动脚本的步骤,然后去拆分到具体没一个步骤做什么,考虑好了之后,才开始动手去写脚本。我把这个测试场景分拆如下步骤: 1) 启动后浏览器,这里我们用Chrome 2) 打开百度首页,https://www.baidu.com 3) 定位搜索输入框,记录下输入框元素的xpath表达式://*[@id='kw'] 4) 定位搜索提交按钮(百度一下这个按钮),获取xpath表达式://*[@id='su'] 5) 在搜索输入框输入“Selenium”,点击百度一下这个按钮。 6) 在搜索结果列表去判断是否存在Selenium官网这个链接。 7) 退出浏览器,结束测试。 如果,还不会通过火狐浏览器上插件firepath获取元素的表达式,请看上一篇文章。如果你没有安装Chrome,那就用Firefox。 1) 桌面新建一个记事本,命名并保存为FirstScript.py 2)

利用stylist插件,简单两步屏蔽新浪微博上的广告

邮差的信 提交于 2020-08-10 18:34:08
以前新浪微博只是在侧栏有几块小小的广告,还算可以接受,想着忍忍就算了,可最近真是越来越不厚道了,自从和淘宝合作之后,侧栏就开始有一大块广告根据你在淘宝的搜索记录推荐商品,更可恶的是信息流里的祛痘微博现在连认证用户都不能幸免。于是我开始研究屏蔽微博广告的方法,试用了几款移除广告的浏览器插件,效果均不太理想。看来不能偷懒,只能自己动手了。思路是想办法把自己的 CSS 样式加到微博页面里去,这样就能随心所欲的通过修改页面来屏蔽广告了。Google 了一圈之后,终于找到了一些方法,还能顺便美化一下界面,效果见图。 屏蔽微博广告教程 Chrome / Firefox 第一步 下载 Stylist 插件并安装激活。下载地址: http://www.cnplugins.com/devtool/stylist/ 第二步 以 Chrome 为例,依次点击 “选项” – “设置” – “扩展程序” 和 Stylist 旁的 “选项”。 点击选项卡中的 “Style” 页签; 点击 “Add New Style”; 在顶部的黑色输入框里输入 “Weibo”; 把 Style set 下方的下拉框选择为 “domain”,在旁边的输入框里输入 “weibo.com”; 将以下代码复制到最大的文本框里,然后点击 “Save” 保存。 .W_rightModule, __regexoperators___/*

Web前端兼容性指南

Deadly 提交于 2020-08-10 18:04:17
一、Web前端兼容性问题 一直以来,Web前端领域最大的问题就是兼容性问题,没有之一。 前端兼容性问题分三类: 浏览器兼容性 屏幕分辨率兼容性 跨平台兼容性 1、浏览器兼容性问题 第一次浏览器大战发生在上个世纪90年代,微软发布了IE浏览器,和网景公司的Netscape Navigator大打出手,1998年网景不得不将公司卖给AOL。没有了对手的IE不思进取,W3C标准支持发展缓慢,为以后的IE兼容性灾难埋下了伏笔。到2004年,IE的市场份额达到95%,但在此之后IE的份额逐步遭其他浏览器蚕食,主要包括Firefox,Chrome,Safari和Opera。. 2001年8月27日,微软发布IE6,时隔五年直到2006年才发布了IE7。2009年3月19日,经历了众多测试版后,IE8最终发布,虽然IE8针对旧版IE在多方面做了很大改进,但在HTML5、CSS 3等标准支持方面仍落后于其他浏览器对手。这三个版本的IE是所有兼容性问题的最大根源,堪称前端噩梦。 IE6、7、8不支持HTML5、CSS3、SVG标准,可被判定为“极难兼容” IE9不支持Flex、Web Socket、WebGL,可被判定为“较难兼容” IE10部分支持Flex(-ms-flexbox)、Web Socket,可被判定为“较易兼容” IE11部分支持Flex、WebGL,可被判定为“较易兼容” IE6

大多数Web浏览器中都可以使用PUT,DELETE,HEAD等方法吗?

三世轮回 提交于 2020-08-10 17:00:19
问题: I've seen a couple questions around here like How to debug RESTful services , which mentions: 我在这里看到了几个问题,例如 如何调试RESTful服务 ,其中提到: Unfortunately that same browser won't allow me to test HTTP PUT, DELETE, and to a certain degree even HTTP POST. 不幸的是,同一浏览器不允许我测试HTTP PUT,DELETE,并且在某种程度上甚至无法测试HTTP POST。 I've also heard that browsers support only GET and POST, from some other sources like: 我还听说其他一些来源的浏览器仅支持GET和POST: http://www.packetizer.com/ws/rest.html http://www.packetizer.com/ws/rest.html http://www.mail-archive.com/jmeter-user@jakarta.apache.org/msg13518.html http://www.mail-archive.com

python爬虫:XPath语法和使用示例

你。 提交于 2020-08-10 14:12:45
python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历。 选取节点 XPath使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。 常用路径表达式: 表达式 描述 nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点。 .. 选取当前父节点。 @ 选取属性。 text() 选取文本内容。 实例 在下面的表格中,列出一些路径表达式以及表达式的结果: 路径表达式 结果 bookstore 选取bookstore元素 /bookstore 选取根元素bookstore。注释:假如路径起始于(/),则此路径始终代表到某元素的绝对路径。 bookstore/book 选取属于bookstore的子元素的所有book元素。 //book 选取所有book子元素,而不管他们在文档中的位置。 bookstore//book 选择属于bookstore元素的后代的所有book元素,而不管它们位于bookstore之下的什么位置。 //book/title/@lang 选择所有的book下面的title中的lang属性的值。 /

客户端FTP软件,三个非常好使客户端FTP软件

↘锁芯ラ 提交于 2020-08-10 09:34:46
推荐一 : 服务器管理工具 IIS7服务器管理工具是一款windows全系、Linux系统下链接并操控VPS、VNC、FTP等远程服务器、云服务器。 界面简单明了,操作易上手,功能强大,支持批量导入服务器,并批量打开,多窗口化管理,除此之外,加载本地硬盘、硬盘映射、加载服务器的声音,远程声卡读取等,完全实现各类场景使用,对于FTP链接界面,朋友FTP定时上传,定时下载(也可以说定时上传下载 定时备份),对于经常使用FTP的小伙伴来说,非常适用。 工具支持自动更新,压缩包只有7.62M,方便简洁,一步到位。 推荐二:WinSCP WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。.winscp也可以链接其他系统,比如linux系统。 推荐三:FireFTP 这是一个火狐的插件,必须在火狐Mozilla Firefox浏览器上面才能使用。 FireFTP是出品 LiteServe/LiteWeb/LiteFTP 等工具的公司新出的又一个简单小巧且容易上手的 FTP 客户端工具,支持多线程文件传输。 来源: oschina 链接: https://my.oschina.net/u/4516883/blog/4317802

dom渲染流程(cssdom和dom)

萝らか妹 提交于 2020-08-10 07:37:41
渲染引擎——webkit和Gecko Firefox使用Geoko——Mozilla自主研发的渲染引擎 Safari和Chrome都使用webkit,Webkit是一款开源渲染引擎 dom渲染流程:    1、浏览器解析html源码,然后创建一个DOM树。 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点)。DOM树的根节点就是documentElement,对应的是html标签。    2、浏览器解析CSS代码,计算出最终的样式数据。 对CSS代码中非法的语法它会直接忽略掉。解析CSS的时候会按照如下顺序来定义优先级:浏览器默认设置,用户设置,外联样式,内联样式,html中的style(嵌在标签中的行间样式)。   3、创建完DOM树并得到最终的样式数据之后,构建一个渲染树。 渲染树和DOM树有点像,但是有区别。DOM树完全和html标签一一对应,而渲染树会忽略不需要渲染的元素(head、display:none的元素)。渲染树中每一个节点都存储着对应的CSS属性。   4、当渲染树创建完成之后,浏览器就可以根据渲染树直接把页面绘制到屏幕上。 渲染树和Dom树的关系   渲染对象和Dom元素相对应,但这种对应关系不是一对一的,不可见的Dom元素不会被插入渲染树,例如head元素。另外

CSS 的 :is()和 :where() 即将在浏览器中和大家见面

孤者浪人 提交于 2020-08-10 07:23:50
现在,Safari(技术预览版106)和Firefox(版本78)的预览版均支持新的CSS :is() 和 :where() 伪类。 Chrome的实施仍然落后。 使用 :is() 减少重复 你可以使用 :is() 伪类来删除选择器列表中的重复项。 /* BEFORE */ .embed .save-button:hover, .attachment .save-button:hover { opacity : 1 ; } ​ /* AFTER */ :is(.embed, .attachment) .save-button:hover { opacity : 1 ; } 此功能主要在未处理的标准CSS代码中有用。如果使用Sass或类似的CSS预处理程序,则可能更喜欢嵌套。 注意 :浏览器还支持非标准的 :-webkit-any() 和 :-moz-any() 伪类,它们与 :is() 相似,但限制更多。WebKit在2015年弃用了 :-webkit-any() ,Mozilla已将Firefox的用户代理样式表更新为使用 :is() 而不是 :-moz-any() 。 使用 :where() 来保持低特殊性 :where() 伪类与 :is() 具有相同的语法和功能。它们之间的唯一区别是 :where() 不会增加整体选择器的特殊性(即某条CSS规则特殊性越高

获取内网Ip

吃可爱长大的小学妹 提交于 2020-08-10 06:24:39
Chrome44 - 72 亲测可用,利用 webRTC 特性实现。 //get the IP addresses associated with an account function getIPs(callback){ var ip_dups = {}; //compatibility for firefox and chrome var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var useWebKit = !!window.webkitRTCPeerConnection; //bypass naive webrtc blocking using an iframe if(!RTCPeerConnection){ //NOTE: you need to have an iframe in the page right above the script tag // //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe> //<script>...getIPs called in here..

html5视频文件上传前,预览video

你说的曾经没有我的故事 提交于 2020-08-10 05:37:04
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文档标题</title> </head> <body> <video style="height:auto;" src="" id="video0" controls="controls"></video> <input class="form-control" type="file" style="height:auto;" id="video" name="video"/> </body> <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script type="text/javascript"> $("#video").change(function(){ var objUrl = getObjectURL(this.files[0]) ; console.log("objUrl = "+objUrl) ; if (objUrl) { $("#video0").attr("src", objUrl) ; } }) ; //建立一个可存取到该file的url function getObjectURL(file) { var