Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Porting pure webdriver based test to CodeceptJs test adds URL encoding

Offen
#3,072 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
32/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
javascript, node.js
Bereich
testing-qa

Rechercherichtung

Beginne mit dem I.amOnPage-Aufruf im bereitgestellten Test und den WebDriver-Hilfseinstellungen in der Konfiguration; vergleiche dessen Navigationsverhalten mit dem Selenium-Beispiel driver.get. Verfolge, wie das URL-Fragment übergeben und codiert wird, und füge anschließend einen Regressionstest mit der gemeldeten URL hinzu. Die Aufgabe ist erledigt, wenn CodeceptJS das vom ursprünglichen webdriver-Test erwartete URL-Verhalten beibehält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

What are you trying to achieve?

call this url by selenium via webdriver:

https://host.docker.internal:8000/payroll/#company/1-250|project|projectViewState/{%22type%22:%22event%22,%22date_range%22:%221%20WEEK%22,%22eventid%22:1,%22eventdb%22:250,%22regularcheckin%22:true}|listViewOpen/2-250

What do you get instead?

but this got sent instead (|, { and } are got encoded):

https://host.docker.internal:8000/payroll/#company/1-250%7Cproject%7CprojectViewState/%7B%22type%22:%22event%22,%22date_range%22:%221%20WEEK%22,%22eventid%22:1,%22eventdb%22:250,%22regularcheckin%22:true%7D%7ClistViewOpen/2-250

Provide test source code if related

Scenario('change the company', async ({ I }) => {
    I.amOnPage('https://host.docker.internal:8000/payroll/#company/1-250|project|projectViewState/{%22type%22:%22event%22,%22date_range%22:%221%20WEEK%22,%22eventid%22:1,%22eventdb%22:250,%22regularcheckin%22:true}|listViewOpen/2-250');
    let url = await I.grabCurrentUrl();
    console.log(`Current URL is [${url}]`);
})```

the original test works well 

````js
// Generated by Selenium IDE
const { Builder, By, Key, until} = require('selenium-webdriver')
const  chrome  = require('selenium-webdriver/chrome')
const  logging  = require('selenium-webdriver/lib/logging')
const assert = require('assert')
const BASEURL = 'https://host.docker.internal:8000/payroll/';

describe('Payroll', function() {
  this.timeout(30000)
  let driver
  let options
  beforeEach(async function() {
    builder = new Builder();
    options = (new chrome.Options()).setAcceptInsecureCerts(true);
    prefs = new logging.Preferences();
    prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL);
    options.setLoggingPrefs(prefs);
    driver = await builder.forBrowser('chrome').usingServer('http://localhost:4444/wd/hub').setChromeOptions(options).build()
    vars = {}
  })
  afterEach(async function() {
    //await driver.manage().logs().get(logging.Type.BROWSER).then((logs) => console.log(logs))
    await driver.takeScreenshot().then((image) => require('fs').writeFileSync('captured_image_3.png', image, 'base64'));   
    await driver.quit();
  })

  async function openBrowser(driver, url) {
    await driver.get(BASEURL + url);
    let username = await driver.wait(until.elementLocated(By.id("login-username-inputEl")));
    username.sendKeys("arthur");
    let password = await driver.wait(until.elementLocated(By.id("login-password-inputEl")));
    password.sendKeys("hwzsyx5h$");
    let loginButton =  await driver.wait(until.elementLocated(By.id("login-button")));
    loginButton.click();
    await driver.manage().window().setRect(1924, 768) 
  }

  it('open and save the contract editor', async function() {
  await openBrowser(driver, "#company/1-250|project|projectViewState/{%22type%22:%22event%22,%22date_range%22:%221%20WEEK%22,%22eventid%22:1,%22eventdb%22:250,%22regularcheckin%22:true}|listViewOpen/2-250")
  await driver.wait(until.elementLocated(By.id("firstname-inputEl")), NaN)
  await driver.findElement(By.id("open-editor")).click()
  await driver.findElement(By.id("overtimeunitAsMinutes-inputEl")).click()
  await driver.findElement(By.id("overtimeunitAsMinutes-inputEl")).sendKeys("30")
  await driver.findElement(By.id("save-editor")).click()
})

})

Details
  • CodeceptJS version: 3.13
  • NodeJS Version:16.9.1
  • Operating System: WSL Ubuntu 20
  • webdriverio: 6.12.1
  • Configuration file: ?
exports.config = {
  tests: './tests/acceptance/codeceptjs/*.co.js',
  output: './output',
  helpers: {
    WebDriver: {
      url: 'https://localhost',
      browser: 'chrome',
      host: '127.0.0.1',
      port: 4444,
      restart: true,
      windowSize: '1920x1680',
      smartWait: 5000,
      desiredCapabilities: {
        chromeOptions: {
          args: [ /*"--headless",*/ "--disable-gpu", "--no-sandbox", "--ignore-certificate-errors" ]
        }
      }
    }
  },
  include: {
    I: './steps_file.js'
  },
  bootstrap: null,
  mocha: {},
  name: 'payroll',
  plugins: {
    pauseOnFail: {},
    retryFailedStep: {
      enabled: true
    },
    tryTo: {
      enabled: true
    },
    screenshotOnFail: {
      enabled: true
    }
  }
}```
Vorherrschende Sprache
JavaScript
Sterne
4.2k
Forks
756
Ø Merge
2 T. 9 Std.
Gemergte PRs (30 T.)
19

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus codeceptjs/CodeceptJS

Alle Issues in codeceptjs/CodeceptJS

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.