Jsdom: Ein Formular veröffentlichen.

Erstellt am 6. Jan. 2011  ·  6Kommentare  ·  Quelle: jsdom/jsdom

Probleme beim Posten eines Formulars mit jsdom und jquery. Ist das möglich?

var-Form = '

';
$(form).appendTo('body');
$('Formular').submit();

Das obige funktioniert bei mir nicht, oder mache ich etwas falsch?

feature

Hilfreichster Kommentar

Es sieht so aus, als ob die Formularübermittlung teilweise implementiert ist. Es löst ein HTMLEvent aus, unterstützt jedoch nicht die Submit-Methode.

Minimale Reproduktion

Als Mokka + Chai-Test:

import {JSDOM} from 'jsdom'
import {assert} from 'chai'
import sinon from 'sinon'

describe('JSDOM Form', () => {

    it('submit form with button', () => {
        const dom = new JSDOM(`
  <form id="my-form">
    <button type="submit" id="submit-button">Submit Button</button>
  </form>
`, {})
        const listener = sinon.stub()
        dom.window.document.getElementById('my-form').addEventListener('submit', listener)

        dom.window.document.getElementById('submit-button').click()

        assert.isTrue(listener.called)
    })

})

Was wird erwartet?

Senden funktioniert ohne Fehler.

Was geschieht?

Der Test ist erfolgreich, gibt aber diesen Fehler zurück:

Fehler: Nicht implementiert: HTMLFormElement.prototype.submit

Alle 6 Kommentare

noch nicht, es gibt derzeit keine Standardaktionen.

Dies ist wahrscheinlich viel einfacher zu implementieren, da ich den Formulardatenalgorithmus (in FormData-impl.js) implementiert habe. Allerdings würde die Navigation nach dem Absenden des Formulars natürlich trotzdem nicht funktionieren.

Wie kann der Antworttext nach dem Absenden des Formulars gelesen werden? Zum Beispiel hat resourceLoader nach einem gesendeten Formular in einem iframe nichts ausgelöst.

Die Formularübermittlung ist derzeit nicht implementiert und daher nicht möglich.

Irgendwelche Änderungen damit?

Es sieht so aus, als ob die Formularübermittlung teilweise implementiert ist. Es löst ein HTMLEvent aus, unterstützt jedoch nicht die Submit-Methode.

Minimale Reproduktion

Als Mokka + Chai-Test:

import {JSDOM} from 'jsdom'
import {assert} from 'chai'
import sinon from 'sinon'

describe('JSDOM Form', () => {

    it('submit form with button', () => {
        const dom = new JSDOM(`
  <form id="my-form">
    <button type="submit" id="submit-button">Submit Button</button>
  </form>
`, {})
        const listener = sinon.stub()
        dom.window.document.getElementById('my-form').addEventListener('submit', listener)

        dom.window.document.getElementById('submit-button').click()

        assert.isTrue(listener.called)
    })

})

Was wird erwartet?

Senden funktioniert ohne Fehler.

Was geschieht?

Der Test ist erfolgreich, gibt aber diesen Fehler zurück:

Fehler: Nicht implementiert: HTMLFormElement.prototype.submit

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen