Cuke test 使用chrome模拟mobile 自动化测试

上一篇 / 下一篇  2019-12-12 11:05:49 / 个人分类:Cuke Test

Cuke test 封装得特别好,不需要测试人员再去集成:case管理、测试报告。 非常适合自动化入门

但也正因为如此,假如碰到一些特殊的场景,想要修改框架,同时对他得封装不熟悉就会非常头疼

以下是场景是因为需要在使用浏览器模拟Mobile 的同时还需要对pc的浏览器操作的解决方案

1.web_driver.js 全部替换
require('chromedriver')
const webDriver = require('selenium-webdriver');
const { Options } = require('selenium-webdriver/chrome')
//创建浏览器驱动
function createBrowserDriver() {
    console.log('Create Driver');
    let browserConfig = process.env.BROWSER || 'chrome';
    let browser = browserConfig.toLowerCase();
    if (['chrome', 'firefox', 'ie'].indexOf(browser) < 0) browser = 'chrome'; //default to chrome
    return new webDriver.Builder().forBrowser(browser).build();
}
// 创建手机驱动
function createMobileDriver() {
    const { Options } = require('selenium-webdriver/chrome')
    console.log('Create Mobile Driver');
    let chrome = require('selenium-webdriver/chrome');
    let { Builder } = require('selenium-webdriver');
    return new Builder()
        .forBrowser('chrome')                          
        .setChromeOptions( new Options().setMobileEmulation({ deviceName: 'iPhone 6/7/8' }))
        .build();
}
    
function choose(params) {
    if(params === 1) return createBrowserDriver();
    if(params === 2) return createMobileDriver();
}
 
exports. createDriver= choose;
 
2.hooks.js 文件全部替换
const { After, Before, AfterAll, setDefaultTimeout } = require('cucumber');
const { driver } = require('./web_driver');
 
 
//set default step timeout
setDefaultTimeout(90 * 1000);
3.脚本js 代码演示
const { Given, When, Then } = require('cucumber');
const assert = require('assert');
const { createDriver } = require('../support/web_driver');
const { By, until } = require('selenium-webdriver');
 
 
Then(/^Browser浏览器访问'([^']*)'$/, async function (url) {
    const driver = createDriver(1);
    await driver.get(url);
    console.log("启动浏览器驱动")
    await driver.sleep(3000);
    let screenshot = await driver.takeScreenshot();
    this.attach(screenshot, 'image/png');    
    driver.quit();
});
 
Then(/^\*Mobile 访问百度$/, async function () {
    driver=createDriver(2);
    await driver.get('https://www.jianshu.com/');
    await driver.sleep(3000);
    let screenshot = await driver.takeScreenshot();
    this.attach(screenshot, 'image/png'); 
    driver.quit();
});
 
 
总结:
以上改动会导致hooks 文件不会在每个动作结束后:截图、清除缓存、关闭浏览器
需要在每个脚本中自己选择添加:
1.创建driver

const driver = createDriver(1); //1Mobil  2:browser
2.截图

let screenshot = await driver.takeScreenshot();
this.attach(screenshot, 'image/png');
3.清除缓存

await driver.manage().deleteAllCookies(); 
4.关闭浏览器

driver.quit();

原文链接:https://blog.csdn.net/qq_39806105/article/details/93010104

TAG: test Test Cuke

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2020-08-04  
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

我的存档

数据统计

  • 访问量: 358
  • 日志数: 6
  • 建立时间: 2019-12-04
  • 更新时间: 2019-12-12

RSS订阅

Open Toolbar