Wie kann ich überprüfen, bis ein Element mit Nightwatch js klickbar ist? Ich möchte auf ein Element klicken, aber wenn ich Nightwatch starte, klickt Selen nicht auf das Element, weil es noch nicht anklickbar ist.Wie kann ich überprüfen, bis ein Element mit Nightwatchjs anklickbar ist?
Antwort
Können Sie ein Beispielelement anzeigen, normalerweise sollte ein Attributname "deaktiviert" sein, wenn die Schaltfläche nicht anklickbar ist, sollte dies funktionieren.
browser.assert.attributeEquals(yourCSS, 'disabled', true)
Ich möchte ein Beispiel sehen das wäre das Äquivalent von 'waitUntilElementIsEnabled()'. Es gibt einen Helfer in Selenium, der einen Check für isEnabled mit einem Check für isVisible kombiniert, bevor er 'true' zurückgibt. – Monkpit
So etwas sollte funktionieren. Lassen Sie mich wissen, wenn Sie Fragen haben
var util = require('util');
var events = require('events');
/*
* This custom command allows us to locate an HTML element on the page and then wait until the element is both visible
* and does not have a "disabled" state. It rechecks the element state every 500ms until either it evaluates to true or
* it reaches maxTimeInMilliseconds (which fails the test). Nightwatch uses the Node.js EventEmitter pattern to handle
* asynchronous code so this command is also an EventEmitter.
*/
function WaitUntilElementIsClickable() {
events.EventEmitter.call(this);
this.startTimeInMilliseconds = null;
}
util.inherits(WaitUntilElementIsClickable, events.EventEmitter);
WaitUntilElementIsClickable.prototype.command = function (element, timeoutInMilliseconds) {
this.startTimeInMilliseconds = new Date().getTime();
var self = this;
var message;
if (typeof timeoutInMilliseconds !== 'number') {
timeoutInMilliseconds = this.api.globals.waitForConditionTimeout;
}
this.check(element, function (result, loadedTimeInMilliseconds) {
if (result) {
message = '@' + element + ' was clickable after ' + (loadedTimeInMilliseconds - self.startTimeInMilliseconds) + ' ms.';
} else {
message = '@' + element + ' was still not clickable after ' + timeoutInMilliseconds + ' ms.';
}
self.client.assertion(result, 'not visible or disabled', 'visible and not disabled', message, true);
self.emit('complete');
}, timeoutInMilliseconds);
return this;
};
WaitUntilElementIsClickable.prototype.check = function (element, callback, maxTimeInMilliseconds) {
var self = this;
var promises =[];
promises.push(new Promise(function(resolve) {
self.api.isVisible(element, function(result) {
resolve(result.status === 0 && result.value === true);
});
}));
promises.push(new Promise(function(resolve) {
self.api.getAttribute(element, 'disabled', function (result) {
resolve(result.status === 0 && result.value === null);
});
}));
Promise.all(promises)
.then(function(results) {
var now = new Date().getTime();
const visibleAndNotDisabled = !!results[0] && !!results[1];
if (visibleAndNotDisabled) {
callback(true, now);
} else if (now - self.startTimeInMilliseconds < maxTimeInMilliseconds) {
setTimeout(function() {
self.check(element, callback, maxTimeInMilliseconds);
}, 500);
} else {
callback(false);
}
})
.catch(function(error) {
setTimeout(function() {
self.check(element, callback, maxTimeInMilliseconds);
}, 500);
});
};
module.exports = WaitUntilElementIsClickable;
Fügen Sie diesen Code als eine Datei in Ihren Ordner Befehle. Es sollte waitUntilElementIsClickable.js oder was auch immer Sie wollen, dass Ihr Befehl sein soll.
Verbrauch ist:
var page = browser.page.somePage();
page.waitUntilElementIsClickable('@someElement');
Hey, habe ich versucht, den Code, aber es gibt Syntaxfehler '' 'waitForElementClickable.js: 57 .then ((Ergebnisse) => { ^^ Syntaxerror: Unexpected token => ' '' Sie können bitte helfen Sie mir –
Ahh, der Code ist teilweise in ES6-Format geschrieben, ich aktualisiert, so dass es mit reinem ES5 funktionieren sollte –
Danke für Ihre schnelle Antwort, jetzt funktioniert es .. –
- 1. Element ist nicht anklickbar
- 2. "Element ist nicht anklickbar", weil etwas darüber ist - Wie warte ich darauf, dass es anklickbar ist?
- 3. Python Selen: warte bis Element anklickbar ist - funktioniert nicht
- 4. Web-Element kann nicht mit Hilfe von nightwatchjs hervorgehoben werden
- 5. Selen - Element ist nicht anklickbar
- 6. Wie kann ich in jQuery überprüfen, ob ein Element in einem anderen Element ist?
- 7. Element ist nicht anklickbar Selenium webdriver
- 8. wie überprüft man, ob eine Schaltfläche in Java anklickbar ist, selen webdriver.ps:check, wenn anklickbar nicht warten, bis es klickbar ist
- 9. Element ist nicht anklickbar (215, 251) Fehler
- 10. Webdriver Wie man wartet, bis das Element im Webdriver anklickbar ist C#
- 11. Wie kann ich verhindern, dass ein Hauptmenüelement mit Unterobjekten in Wordpress anklickbar ist?
- 12. Selen Ausnahme: Element ist nicht anklickbar
- 13. Überprüfen Sie, ob Element anklickbar in Selenium Java
- 14. Wie (sonst) kann ich ein SVG zum Verknüpfen anklickbar machen?
- 15. Wie kann man ein UILabel anklickbar machen?
- 16. Ich kann ein Eingabe-Checkbox-Element nicht überprüfen
- 17. inputType macht Element nicht anklickbar
- 18. Wie kann ich mehrere Tests parallel zu JS/nightwatchjs ausführen?
- 19. Wie kann ich einen Hintergrund anklickbar machen?
- 20. NightwatchJS kann nicht innerhalb eines Abschnitts getvalue
- 21. Wie kann ich überprüfen, ob ein Vim-Puffer änderbar ist?
- 22. Wie kann ich überprüfen, ob ein Zertifikat selbstsigniert ist?
- 23. Wie kann ich überprüfen, ob ein Element in einem Satz von Elementen vorhanden ist?
- 24. Make 3d-übersetztes Element anklickbar
- 25. Wie kann ich überprüfen, ob ein Dialog geschlossen ist?
- 26. Wie kann ich überprüfen, ob ein Array leer ist?
- 27. Wie kann ich überprüfen, ob ein AD-Konto gesperrt ist?
- 28. Wie kann ich überprüfen, ob ein Wert eine Zahl ist?
- 29. , wie Sie überprüfen, ob ein Element aktiviert ist
- 30. Wie kann ich überprüfen, wie viel ein Element mit jQuery gescrollt wurde?
Was Sie klickbare meinen wir:
Sie auch Seitenelemente verwenden können? Ist das Element deaktiviert? Ist es versteckt? –
Ich möchte ein Beispiel sehen, das dem 'waitUntilElementIsEnabled()' entspricht. Es gibt einen Helfer in Selenium, der einen Check für isEnabled mit einem Check für isVisible kombiniert, bevor er 'true' zurückgibt. – Monkpit
Siehe [diese Suche auf Selenium Github] (https://github.com/SeleniumHQ/selenium/search?l=python&q=clickable&type=Code&utf8=%E2%9C%93) für Beispiele – Monkpit