Selenium i WSL1

  • Författare
  • Meddelande

Faxity

html-kodare

  • Inlägg: 13
  • Blev medlem: 03 sep 2018, 12:14

Selenium i WSL1

Inlägg27 sep 2019, 14:11

Förord

Först och främst detta är ett hack kan man säga, eftersom WSL kan exekvera .exe filer i WSL så fungerar detta.

Men med detta kan du säkert jobba i WSL och köra dina tester med selenium.

Har bara provat detta i Chrome och Firefox, eftersom det är dem webbläsarna jag använder.


Selenium Setup


För Chrome:

1. Ladda ner en driver som passar din chrome version: https://chromedriver.chromium.org/downloads
Kolla i intällningarna i chrome för vilken version du använder.

Ladda sedan ner .exe versionen (chromedriver_win32.zip).

2. Unzippa chromedriver.exe till en mapp du kommer ihåg. I mitt fall använde jag min nedladdat mapp:

C:\Users\Christian\Downloads\chromedriver.exe

3. Öppna WSL i en terminal.

4. Flytta geckodriver.exe till din /usr/local/sbin mapp, utan .exe som filändelse.

$ sudo mv /mnt/c/Users/Christian/Downloads/chromedriver.exe /usr/local/sbin/chromedriver


För Firefox:

1. Ladda ned den senaste drivern ifrån här: https://github.com/mozilla/geckodriver/releases

Om du har en 32 bitars windows välj geckodriver-<version>-win32.zip. Annars välj geckodriver-<version>-win64.zip.
Är du osäker ta 32 bitars versionen, borde fungera.

2. Unzippa geckodriver.exe till en mapp du kommer ihåg. I mitt fall använde jag min nedladdat mapp:

C:\Users\Christian\Downloads\geckodriver.exe

3. Öppna WSL i en terminal.

4. Flytta geckodriver.exe till din /usr/local/sbin mapp, utan .exe som filändelse.

$ sudo mv /mnt/c/Users/Christian/Downloads/geckodriver.exe /usr/local/sbin/geckodriver


Test setup

Exempel integrationstest fil med selenium-webdriver version 3.6.0 och Mocha.

Fungerar det inte på första försöket att köra ditt test prova igen efter det.
Fick fel på firefox första gången men fungerare 5 gånger på raken efter det.
För chrome så fungerade direkt.

Kod: Markera allt
const assert = require('assert').strict;
const test = require('selenium-webdriver/testing');
const { Builder, By } = require('selenium-webdriver');

// Ändra till ditt tycke.
const URL = 'http://localhost:1234';

let browser;

// Helper functions
async function matchUrl(target) {
  const url = await browser.getCurrentUrl();
  assert.equal(url, URL + target);
}

// Test case
test.describe('Page', () => {
  test.beforeEach(async function () {
    this.timeout(20000);

    // För chrome
    //browser = await new Builder().forBrowser('chrome').build();
    // För firefox
    //browser = await new Builder().forBrowser('firefox').build();

    await browser.get(URL);
  });

  test.afterEach(() => browser.quit());

  // Test case
  test.it("Test index", async () => {
    await matchUrl('/');
  });
});

Vilka är online

Användare som besöker denna kategori: Bing [Bot] och 5 gäster