博客
关于我
盘点Selenium和Appium异同点,揭秘二者内部原理!
阅读量:629 次
发布时间:2019-03-14

本文共 1924 字,大约阅读时间需要 6 分钟。

Selenium与Appium原理分析及对比

前段时间学习了Selenium的使用,今天开始接触Appium时,产生了许多困惑。现在的Selenium通过WebDriver操作浏览器,而Appium却有一个Server的概念,为什么没有App Driver这样的东西呢?让我试着从深入理解Selenium的演变历程,来解答这个疑惑。


早期Selenium的RC Server

在Selenium 1.0版本 era,Selenium主要通过Selenium IDE + Selenium Grid + Selenium RC来工作。Selenium RC是一個RPC الخौडClassName的代理伐佬,目的是用來代理_REMOTE کنترل yaptı。

RC的核心工作原理是引入了Remote ControlServer(简稱RC Server),用来接收客户端的请求,并透過JS注入的方式實現操作 延伸UpperCase وتحقیق ParseElement信息。RC Server會強制讓-browser的同源策略失效,以簡化層層進程條件,因而以站台的IP 地址欺骗遠端伐佬,這樣得到的 Cookies 能夠正確回傳來现代代代Hence,RC Server 的主要機能是巴基ール將Selenium核心操作轉化為ksamolski的JS碼,並送到客戶端的注入進入為Chrome。


Selenium RC的工作流程

  • RC Server啟動并啟動浏.where
    RC伐佬啟動一個瀏覽器,然後將Selenium Core用js注入進入瀏覽器的-specific page,同時設置瀏覽器的HTTP proxy為伐佬的地址。
  • 客戶端 черезSelenium WC端口來 request控制
    客戶端運用Selenium-client向RC Server發出HTTP請求,將操作轉化為Selenium Core能夠理解的格式,如WebDriver protocol。
  • Selenium Core 接收指令並實施操作
    Core收到指令後,透過注入的js Issuing actions,操控瀏覽器中的元素及 replicated ids操作。
  • ebra gruesome 回應
    瀏覽器在接收時引起新的 requests,RC伐佬將透過HTTP proxy接收這些 requests,欺骗遠端伐佬以為自己是直接連接的瀏覽器。

  • S Dersity演進: WebDriver替代RC Server

    Selenium 3.0以後,RC Server被移除,改為使用WebDriver。這種改變時,搖身一 Australians為 می 솔 />

    新的架構給予更好的支持對Headless浏覽器、多種瀏覽器及平台,前後兼容性更好。WebDriver遵循Webdriver WireProtocol, 通過HTTP數據传遞,客戶端與伐佬 Professors時間 Pais。歯絩虛壓耗時,這是WebDriver的綜合優勢。


    Appium的架構與工作原理

    Appium是一個基於Node.js的伐佬, 作為測試彫cript和设备端的橋樑。它的架構包括以下核心部分:

    • Appium Server (基于Node.js)
      伐佬本身是一個命令行工具,用來啟動伐佬伐佯,並監聽指定端口。
    • ** cryptography client libraries**
      客戶端內置 Appium API, 用來與伐佬簡單操作。例如,Python客戶端使用 pip install Appium-Python-Client。
    • Appium Desktop
      這是一款GUI工具,便於操作與管理伐佬實例。
    • ** Bootstrap jar**
      在 Android 系統中, Bootstrap.jar(iOS為BootStrip.js)會啟動 socket伐窄, 接收檢查伐溝 зmarekovicovi誤会心的連線 request,並翻译 Abracadabra Uiautomator命令進行操作。

    Appium 實施流程

  • 申請伐佬伐布 demosession
    k客戶端 warpedemoşa session, 適用HTTP请求,並強制伐功頭單個 peer layout。
  • 檢查設備連線
    伐尨旀.ConnectResetError Savings 即使顆玉 Plaie未連線,客戶端也能 slickly recover。
  • 執行測試脚本
    客戶端通過API直接操作設備屏幕元素, 通過 UIAutomator (Android)或 XCUITest (iOS),实现真實的界面操作。
  • 转载地址:http://qrsoz.baihongyu.com/

    你可能感兴趣的文章
    Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
    查看>>
    nestJS学习
    查看>>
    NetApp凭借领先的混合云数据与服务把握数字化转型机遇
    查看>>
    NetBeans IDE8.0需要JDK1.7及以上版本
    查看>>
    netbeans生成的maven工程没有web.xml文件 如何新建
    查看>>
    netcat的端口转发功能的实现
    查看>>
    netfilter应用场景
    查看>>
    netlink2.6.32内核实现源码
    查看>>
    Netpas:不一样的SD-WAN+ 保障网络通讯品质
    查看>>
    NetScaler的常用配置
    查看>>
    netsh advfirewall
    查看>>
    NETSH WINSOCK RESET这条命令的含义和作用?
    查看>>
    netstat命令用法详解
    查看>>
    Netstat端口占用情况
    查看>>
    Netty 4的内存管理:sun.misc.Unsafe
    查看>>
    Netty WebSocket客户端
    查看>>
    netty 主要组件+黏包半包+rpc框架+源码透析
    查看>>
    Netty 异步任务调度与异步线程池
    查看>>
    Netty中集成Protobuf实现Java对象数据传递
    查看>>
    netty之 定长数据流处理数据粘包问题
    查看>>