如何使用 webdriverIO 为 Web 自动化启动特定的 chrome 配置文件?

How to launch specific chrome profile for Web automation using webdriverIO?

提问人:Dhrumil Soni 提问时间:4/18/2023 最后编辑:Dhrumil Soni 更新时间:4/19/2023 访问量:363

问:

如何使用 webdriverIO 为 Web 自动化启动特定的 chrome 配置文件?

要求:我的网站是使用“使用Google选项登录”启动的,因此我想通过自动化启动它,并已将配置文件存储在chrome浏览器中。因此,它将绕过登录并直接在应用程序内启动。

工具:使用 JavaScript 的 WebDriverIO Web 自动化

框架:摩卡

登录.spec.js文件:

const { Options } = require('webdriverio/build/ChromeOptions');
const { remote } = require('webdriverio');

const options = new Options();
options.addArguments("user-data-dir=/Users/dhrumilsoni/Library/Application Support/Google/Chrome/");
options.addArguments("--profile-directory=Profile 2");
options.addArguments("--start-maximized");

describe('App Admin Portal', () => {

let browser;

  before(async () => {
    browser = await remote({
      capabilities: {
        browserName: 'chrome',
        'goog:chromeOptions': {
          args: options.args,
        },
      },
    });
    await new Promise(resolve => setTimeout(resolve, 5000));
  });

  beforeEach(async () => {
    // Wait for the browser to load the URL before each test case
    await browser.url('https://google.com');
  });

  afterEach(async () => {
    await browser.deleteSession();
  });
    
  it.only('login title verification',async () => {

        browser.pause(3000);

        try {
            const title = await browser.getTitle();
            expect(title).toEqual("TL");
          } catch (error) {
            console.error(error);
          }
    });
});

但是我在运行“npx wdio”命令后出现错误。

Error:  Unable to load spec files quite likely because they rely on `browser` object that is not fully initialised.`browser` object has only `capabilities` and some flags like `isMobile`.
JavaScript webdriver-io 浏览器自动化 chrome-options chrome-profile

评论


答:

0赞 Dhrumil Soni 4/19/2023 #1

工具:使用 JavaScript 的 WebDriverIO Web 自动化

框架:摩卡

是的,可以使用 webdriverIO 启动特定的 chrome 配置文件。

根据我的项目要求,我想每次都绕过登录。因此,我创建了 chrome 配置文件并存储了我的 URL 和凭据,以确保它在我启动应用程序时自动登录到应用程序。

解决方法:

wdio.conf.js

capabilities: [{
    maxInstances: 5,
    browserName: 'chrome',
    'goog:chromeOptions': {
        args:[
        'disable-web-security',
        'allow-running-insecure-content',
        'user-data-dir=/Users/dhrumilsoni/Library/Application Support/Google/Chrome/',
        'profile-directory=Profile 27'
]},

在您的测试中,

describe("Master Test Plan", ()=>{
    
before(async ()=>{
       await browser.url('https://google.com');
       await browser.pause(5000);
    })

after(async () => {
    await browser.deleteSession();
});

it("Chrome profile launch to bypass login screen", async ()=>{

      try {
        const title = await browser.getTitle();
        expect(title).toEqual("XXXX");
      } catch (error) {
        console.error(error);
      } 
});
});