• 自动化测试检测URL的正确性,js获取url并进行校验


    难点2个

    1.webdriver.io框架怎么获取窗口url信息 getWindowHandles 方法

    2.如何校验当前包含有对应的字符串

    一般如果有window对象直接

    window.location.host
    window.location.href      //需要有window这个对象,否则会报window is not define
    document.location.href  //需要有document这个对象,否则会报document is not define
    window.open 

    但是node.js没有window对象,这时候会报window is not define的错误

    所以使用 getBrowserWindowHandles 返回的是一个数组表示当前开的窗口,第一个就是[0],第二个就是[1]以此类推

    方案1:自动化测试检测网页URL的正确性,对获取的网页URL进行截取,当前的页面是否有对应的域名字符,证明网页截取成功并且正确

    if (sharePath == 'facebook'){
            shareHref=shareHref.trim().split('.')[1]
        }else{
             shareHref=shareHref.trim().split('/')[2].split('.')[0]
        }
        ShareResources.verifyShareFirstResource(shareHref,sharePath)

    案例的代码:

    1./feature/share-resources.feature

    Feature:share resources
        Background:
            Given I am login in Resource Library
    
        @121392
        Scenario: Share resources to facebook
            When I share first resource to facebook on home page
            Then The resource is shared to facebook successfully
    
        @178949
        Scenario: Share resources to twitter
            When I share first resource to twitter on home page
            Then The resource is shared to twitter successfully

    2./steps/share-resources.js

    import {Given, When, Then} from 'cucumber';
    import ShareResources from "../../page-objects/resource-library/resources-card-for-share"
    let shareHref = " "
    When(/^I share first resource to (\w+) on home page$/, function (sharePath) {
        shareHref = ShareResources.shareFirstResource(sharePath)
    });
    Then(/^The resource is shared to (\w+) successfully$/, function (sharePath) {
        if (sharePath == 'facebook'){
            shareHref=shareHref.trim().split('.')[1]
        }else{
             shareHref=shareHref.trim().split('/')[2].split('.')[0]
        }
        ShareResources.verifyShareFirstResource(shareHref,sharePath)
    });

    3./pageObejct/share-resources.js

    import DownloadResources from "./resources-card-for-download";
    import assert from  "assert"
    
    class ResourcesCardForShare{
        get resourceListItem(){return $('.ant-list-item')}
        get itemsList(){return $('#ls-app-list')}
        get twitterButton(){return $('.menu-item__twitter')}
        get facebookButton(){return $('.menu-item__facebook')}
    
        shareFirstResource(sharePath){
            this.itemsList.waitForExist()
            this.resourceListItem.waitForExist()
            DownloadResources.operateResourceButton.waitForDisplayed()
            DownloadResources.operateResourceButton.waitForClickable()
            DownloadResources.operateResourceButton.click()
            //avoid getBrowserWindowHandles is none will cause error so  have default value first
            let getBrowserWindowHandles = []
            let shareHref = "";
            if (sharePath == 'facebook'){
                this.facebookButton.click()
            }else{
                this.twitterButton.click()
            }
            getBrowserWindowHandles = browser.getWindowHandles()
    //这边switchWindow 后面跟的一定要是URL,如果是windowHandles返回的则是窗口id 使用switchWindow则会报错找不到窗口只能哟经switchToWinodows
    //browser.switchWindow(getBrowserWindowHandles[1]) browser.switchToWindow(getBrowserWindowHandles[1]); shareHref = browser.getUrl().toString() console.log('**************'+shareHref) browser.closeWindow() //should switch to origin window browser.switchToWindow(getBrowserWindowHandles[0]); return shareHref } verifyShareFirstResource(shareHref,sharePath){ assert.strictEqual(shareHref,sharePath) // expect(shareHref).toHaveText(sharePath) } } export default new ResourcesCardForShare()

    方案2:expect其实是jest的语法,所以jest的相关方法也可以拿来使用,toHaveText这边只能针对页面元素,如果是字符串 则不能使用

    // assert.strictEqual(shareHref,sharePath)
    expect(shareHref).toMatch(sharePath)
    // expect(shareHref).toHaveText(sharePath)
  • 相关阅读:
    背下来就是电脑高手(转)
    split+ Pattern切割字符串
    java中方法中声明三个点“...”作用
    MRUnit测试
    configuration默认设置
    chmod|chown|chgrp和用法和区别
    hadoop 一些文件操作
    关闭SVN服务
    Hadoop如何计算map数和reduce数
    链式mapreduce
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/16086942.html
Copyright © 2020-2023  润新知