人生贵在坚持!

发布新日志

  • 【每日一积累】web端和app端自动化测试

    2019-01-21 09:20:27

    appnium:是一个移动端的自动化框架

    appnium工作原理:appnium会首先开启一个监听4723端口的server,接收测试脚本(WebDriver script:我们的测试脚本(java or python))发送过来的对应请求,再将对应的请求发送给中间件Bootstrap.jar(注意这里的请求不是整个脚本文件,而是对应的命令请求)。

    Bootstrap.jar监听4724端口由appium发送过来的相关请求,并且将请求转换成UiAutomator可以识别的命令发给UiAutomator进行处理。

    Android上使用了instrumentation和uiautomator两套技术。iOS使用uiautomation。所以appnium可以同时支持Android和iOS。

    -------------------------------------------------

    -------------------------------------------------

    selenium:Selenium是ThoughtWorks公司的一个强大的开源Web功能测试工具系列,采用Javascript来管理整个测试过程,包括读入测试套件、执行测试和记录测试结果。

    Selenium 是一种 Web 应用的自动测试工具,通过模拟用户对 Web 页面的各种操作,可以精确重现软件测试人员编写的 Test Cases 步骤。Selenium 包含三个工具:Selenium-IDE,Selenium-RC 以及 Selenium-Core。

    其中,Selenium-Core 是驱动 Selenium 工作的核心部分,作为一个用 JavaScript 编写的测试引擎,它可以操作 Web 页面上的各种元素,诸如:点击按钮、输入文本框,以及断言 Web 页面上存在某些文本与 Web 元素等。

    Selenium-IDE 是一个 Firefox 插件,能够录制回放用户在 Firefox 中的行为,并把所记录的 Selenese (Selenium Commands) 转化为Java/C#/Python/Ruby 等语言,在 Selenium-RC 中修改复用。对于较为复杂的 Test Cases,Selenium-IDE 的功能有限,往往用它录制大致的步骤,再转化为测试人员熟悉的编程语言,在此基础上完善,形成更为强大且灵活的 Selenium-RC Test Cases。

    Selenium-RC(Selenium Remote Control)在 Web 浏览器与需要测试的 Web 应用间架设代理服务器(Selenium Server),使得 javascript 引擎与被测 Web 应用同源,绕开同源策略的限制(Same Origin Policy),进而取得对 Web 页面进行各种操作的权限。

     Selenium Grid 允许用户将测试案例分布在几台机器上并行执行。用户可以在一个集中控制点控制不同的环境。在不同的浏览器 / 系统组合上面更为容易的运行测试案例。允许用户更多的利用虚拟资源减少了维护测试环境的成本。

    -------------------------------------------------

    -------------------------------------------------

    WebDriver的工作原理:

    从技术上讲,有三个角色:

    1. WebDriver API(基于Java、Python、C#等语言):对于java语言来说,就是下载下来的selenium的Jar包,比如selenium-java-3.8.1.zip包,代表Selenium3.8.1的版本

    2. 浏览器的驱动(browser driver):每个浏览器都有自己的驱动,均以exe文件形式存在。比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe

    3. 浏览器:浏览器当然就是我们很熟悉的常用的各种浏览器。

    那在WebDriver脚本运行的时候,它们之间是如何通信的呢?

    1 对于每一条Selenium脚本,一个http请求会被创建并且发送给浏览器的驱动;

    2 浏览器驱动中包含了一个HTTP Server,用来接收这些http请求;

    3 HTTP Server接收到请求后根据请求来具体操控对应的浏览器;

    4 浏览器执行具体的测试步骤;

    5 浏览器将步骤执行结果返回给HTTP Server;

    6 HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息。

    -------------------------------------------------
    -------------------------------------------------
    WSDL: Web Service Description Language
    XML: Extensible Makeup Language
    SOAP: Simple Object Access Protocal



  • 【每日一积累】元素定位及操作

    2018-12-28 15:55:42

    -常用来识别页面元素的工具包括:
    1 uiautomator: Android SDK自带的工具;
    2 monitor:Android SDK自带的工具;
    3 Appium Inspector: Appium自带的功能;

    -元素定位
    1 通过accessibility
    例如:driver.find_element_by_accessibility_id("天猫超市").text

    Using XPath locators is not recommended and can lead to fragile tests. Ask your development team to provide unique accessibility locators instead!

    2 通过ID
    例如:driver.find_element_by_id("com.pay:id/show_transaction").clear()

    3 通过xpath
    例如:driver.find_element_by_xpath("//android.widget.TextView[@text='JavaScript']").click()

    4 通过className
    例如:driver.find_element_by_class_name("android.widget.LinearLayout").send_key("1111")


    -元素操作
    1 click():点击
    2 clear():清空输入框内容
    3 send_keys(xx):输入框内输入内容
    4 text:获取元素的text内容


Open Toolbar