首页 > 其他分享 >跨浏览器兼容性和调试技巧

跨浏览器兼容性和调试技巧

时间:2024-02-18 16:25:39浏览次数:19  
标签:兼容性 浏览器 不同 应用程序 测试 自动化 调试

一、简介

       不同的浏览器再解释和渲染网页代码时存在差异,可能导致网页在不同的浏览器上呈现出不同的效果,或者在某些浏览器上根本无法正常显示。所以需要进行浏览器兼容性调试。

二、溯源

      跨浏览器兼容性的定义:指网页在不同浏览器中能够正确显示并保持一致的能力。

      原因:不同浏览器的实现代码和渲染引擎存在差异,导致网页在不同浏览器上呈现效果不同。主要浏览器包括:Chrome/Firefox/Edge/Safari/Opera等。

      2.1、常见分类

    1. 软件+硬件平台兼容:操作系统(windows、macos、Android、IOS);
    2. 软件+软件之间兼容:依赖第三方软件、Web应用浏览器兼容性;
    3. 软件版本兼容:APP升级,老用户和老数据问题。               

三、常见的浏览器兼容问题

      3.1、CSS问题

    1. 盒模型差异:不同浏览器对于盒模型的解释存在差异,导致元素的宽度和高度计算不一致。
    2. 浮动和清楚浮动:浏览器对浮动元素的解释不同,可能导致布局混乱。
    3. CSS3属性兼容性:某些浏览器不支持某些新的CSS3属性,需要使用厂商前缀或者降级处理。

     3.2、JavaScript问题

    1.  DOM操作差异:不同浏览器对于DOM操作的实现存在差异,可能导致代码出错。
    2. 时间处理差异:不同的浏览器对于时间的处理存在差异。
    3. XMLHttpRequest对象:不同浏览器对于XMLHttpRequest对象的实现存在差异,可能导致Ajax请求的代码兼容性问题。

     3.3、HTML问题

    1. HTML5新元素兼容性:某些浏览器不支持HTML5的新元素,需要使用JavaScript进行兼容性处理。
    2. 表单袁术兼容性:不同浏览器对于表单元素的样式和行为存在差异,需要进行相应的处理。
    3. HTML标签语义化:不同浏览器对于HTML标签的解释存在差异,可能导致页面结构出错。

四、解决办法

  1. 使用重置样式表或者normalize.css:重置样式表可以将不同浏览器的默认样式统一,减少差异。
  2. 浏览器嗅探和特性检测:通过浏览器嗅探和特性检测,根据不同的浏览器来使用不同的JavaScript和CSS代码,从而实现兼容性。
  3. 使用CSS Hack或者条件注释:某些特定的CSS Hack和条件注释可以针对不同浏览器或者版本来应用不同的样式。
  4. 使用CSS预处理器和前端框架:可以使用CSS预处理器(如SASS或者LESS)以及前端框架(如Bootsrap)来简化开发过程并提高兼容性。
  5. 不依赖于特定浏览器的功能:尽可能避免使用某个特定浏览器支持的功能,以免在其他浏览器上出现兼容性问题。        

五、跨浏览器测试

       5.1、手动测试

                应用程序只能在有限的网络浏览器上扩展,从而限制了应用程序的效能,且这个过程既费时又费钱。

       5.2、自动化测试

               跨浏览器测试要求在不同的浏览器上运行相同的测试套件。自动化测试更具成本效益,同时可以有许多工具支持。

    1.  HeadSpin:业内领先的跨浏览器测试平台之一。它针对移动和网络应用程序,允许用户同时执行手动和自动化的测试工作。HeadSpin可以同时运行多个测试用例,从而有利于资源优化。HeadSpin 具有专用的设备部署模型,可提高测试过程的安全性和性能。HeadSpin 平台的高级 AI/ML 功能能够对各种参数深入了解,包括网络性能、CPU 负载和电池消耗等设备相关因素、网络优化问题以及音频和视频问题等等。
    2. Cross-browser Testing:Cross-browser Testing是跨平台的测试工具,它功能强大,可以基于云环境针对2050 多个真实的桌面和移动浏览器强制执行手动、视觉和 Selenium 测试。Cross-browser Testing具有惊人的记录重放( Record & Replay )属性,允许记录实时测试并在相应的快速测试中运行记录的测试。
    3. Experitest:Experitest 允许在不同的浏览器和移动设备上实施相应的测试。
    4. Selenium:Selenium 与浏览器事务合作可以帮助测试 Web 应用程序,并毫不费力地解决应用程序之间的不一致问题。它是正在快速发展的浏览器测试自动化工具。
    5. LambdaTest:LambdaTest 用于在各种 Web 浏览器和操作系统的 2000 多种组合上测试 Web 应用程序。它是一个基于云的跨浏览器测试平台,允许在 Selenium 网格上实现 Selenium 自动化测试。LambdaTest有助于对云上的网站和 Web 应用程序进行实时交互式跨浏览器测试。
    6. Browserling:Browserling 是一种用于快速测试的实时交互工具。Browserling 提供了对所有标准浏览器和流行操作系统的快速访问。

    六、   跨浏览器兼容性自动化测试的好处

    1. 无缝的用户体验和质量保证:最直接的好处是为最终客户提供理想的用户体验,而这可以进而转化为持续的业务增长,同时降低客户流失率,并让员工的智慧得到更好利用。公司人员无需被跨浏览器调试损坏的用户界面困扰,而是可以将注意力放在开发独特的解决方案上。
    2. 降低风险:QA 小组报告显示,自动化为人们节省了 70% 的时间。通过自动化测试,可用性及功能错误可比手动测试更快地关联起来。这种方式使测试人员能够正确评估对市场的威胁或责任,确定危害的优先级,从而解决它们 。
    3. 缩短发布周期并更快的交付代码:随着新开发路径的推出,测试形势也得到了增强。应用程序测试人员进行无休止的测试几乎是家常便饭,而Selenium 等自动化应用程序可以轻松集成到 DevOps 自动化策略中。测试是 CI/CD 流水线执行的关键阶段,开发团队可以通过永久自动化测试快速交付代码,并缩短新功能的发布周期。

六、实际处理·

          6.1、小众浏览器出现问题,需要做兼容性测试吗?

    1. 用户是狗为主要甲方用户:如果是,需要做测试。
    2. 普通用户,考虑性价比,小众不需要做测试。

                 Tips:项目发布后,在发布文档中,文档应该明确支持的 系统或者浏览器类型和版本,建议用户使用官方浏览器。

          6.2、如果一个网站分为前台访问系统、后台管理系统,是否都需要做  兼容性测试?

    1. 针对内部人员,有时间的话,做兼容性测试;时间不足不做也没关系;
    2. 面向用户,需要做。                                          

 

标签:兼容性,浏览器,不同,应用程序,测试,自动化,调试
From: https://www.cnblogs.com/xiaobaicai12138/p/18019354

相关文章

  • Streamlit输出可下载xlsx文件到浏览器
    Streamlit以及业界给出的示例大多为针对csv文件的,但在实践中,数据经过处理后以xlsx文件输出的需求也不少。xlsx文件更接地气,更接近最终用户的需求。openpyxl是我最喜爱的xlsx文件处理工具,速度快功能强大,在使用Streamlit自作网站的时候自然优先选用。base64可理解为一种加密工具,将......
  • stm32芯片的SPI接口调试总结之轮询模式
    一概念1组成SPI系统可直接与各个厂家生产的多种标准外围器件接口,它只需4条线:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选择线(NSS)。(1)MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数......
  • Mac arm 调试 maui 提示 iOS 构建没有“net8.0-ios/iossimulator-x64”的目标解决办法
    在arm芯片mac调试,使用macforvs,出现以下错误obj/project.assets.json”没有“net8.0-ios/iossimulator-x64”的目标。确保已运行还原,且“net8.0-ios”已包含在项目的TargetFrameworks中。可能需要在项目RuntimeIdentifiers中包括“iossimulator-x64”。(NETSDK1047......
  • 编译调试kube-apiserver
    k8sv1.19.0cdkubernetes&&makegenerated_filescdcmd/kube-apiserver&&gobuild报错app/server.go:467:87:undefined:openapi.GetOpenAPIDefinitionscdkubernetes&&makegenerated_files#vscodelaunch.json{"name":......
  • gdb调试
    break(简写b):格式b行号,在某行设置断点;infobreakpoints:显示断点信息Num:断点编号Disp:断点执行一次之后是否有效kep:有效dis:无效Enb:当前断点是否有效y:有效n:无效Address:内存地址What:位置 单步执行使用continue、step、next命令查看变量使用print、whatis命令......
  • Win10用资源管理器打开ftp站点跳转IE浏览器解决方法
    WindowsRegistryEditorVersion5.00[HKEY_CLASSES_ROOT\ftp]@="URL:FileTransferProtocol""EditFlags"=dword:00000002"ShellFolder"="{63da6ec0-2e98-11cf-8d82-444553540000}""SourceFilter"="{......
  • PHP项目&TP框架&SQL&XSS&架构&路由&调试&写法
    开发基础-TP框架-入口&调试&路由&写法等参考手册-TP5开发手册-为了掌握了解框架首页文件看APP_PATH定义-为了后期分析核心代码全局搜索:THINK_VERSION,为了后期分析此版本是否存在漏洞。参考手册-本地代码案例对比,为了后期分析定位代码块或测试漏洞。配置文件开关(app_debug,a......
  • 07-反调试和周杰伦下载
    本节目标:解决无限反调试,下载周杰伦歌曲https://zz123.com1.反调试2.搜索列表importrequestsres=requests.post(url="https://zz123.com/ajax/",data={"act":"search","key":"周杰伦","lang&q......
  • 2.1.4 程序基本概念——编辑、编译、解释、调试的概念
    编辑概念C++程序的编辑即为,对代码的编写过程,完成这种过程需要借助相关软件,该类软件叫做C++代码编辑器。编译和解释概念计算机只能识别由0、1组成的二进制代码,称为机器码。所以我们现在使用高级编程语言编写的程序就需要一个翻译过程,将其转换成计算机认识的二进制代码,而这个翻......
  • 【调试】pstore原理和使用方法总结
    什么是pstorepstore最初是用于系统发生oops或panic时,自动保存内核logbuffer中的日志。不过在当前内核版本中,其已经支持了更多的功能,如保存console日志、ftrace消息和用户空间日志。同时,它还支持将这些消息保存在不同的存储设备中,如内存、块设备或mtd设备。为了提高灵活性和可扩......