Jak mogę sprawdzić, czy element jest klikalny za pomocą js? Chcę kliknąć element, ale gdy uruchomię noktowizor, selen nie kliknie tego elementu, ponieważ nie można go jeszcze kliknąć.Jak mogę sprawdzić, czy element jest klikalny za pomocą aplikacji nocnych?
Odpowiedz
Czy możesz pokazać przykładowy element, zazwyczaj powinna być nazwa atrybutu "wyłączona", jeśli przycisk nie jest klikalny, to powinno działać.
browser.assert.attributeEquals(yourCSS, 'disabled', true)
Chciałbym zobaczyć przykład będzie to odpowiednik 'waitUntilElementIsEnabled()'. W Selenium znajduje się pomocnik, który łączy sprawdzanie isEnabled z sprawdzeniem isVisible przed zwróceniem "true". – Monkpit
Coś takiego powinno działać. Daj mi znać, jeśli masz pytania:
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;
Dodaj ten kod jako plik do swojego folderu poleceń. Powinien on nazywać się waitUntilElementIsClickable.js lub cokolwiek chcesz, aby twoje polecenie było.
użycia:
browser.waitUntilElementIsClickable('.some.css');
Można także użyć elementów strony:
var page = browser.page.somePage();
page.waitUntilElementIsClickable('@someElement');
Hej, starałem swój kod, ale to daje błąd składni '' 'waitForElementClickable.js: 57 .Następnie ((wyników) => { ^^ SyntaxError: Nieoczekiwany token => ' '' Można proszę mi pomóc? –
Ahh, kod jest częściowo napisany w formacie ES6, zaktualizowałem go tak, aby działał z czystym ES5 –
Dziękuję za szybką odpowiedź, teraz działa. –
- 1. Sprawdź, czy element jest klikalny w selenie
- 2. Jak mogę sprawdzić, czy metoda jest statyczna za pomocą odbicia?
- 3. Jak sprawdzić, czy element istnieje za pomocą wyrażenia lambda?
- 4. jQuery: jak mogę sprawdzić, czy element jest ostatnim rodzeństwem?
- 5. Element nie jest klikalny w punkcie - kątomierz
- 6. Jak sprawdzić, czy element jest poza ekranem?
- 7. Selenium IDE - Jak sprawdzić, czy element jest (CSS) widoczny?
- 8. Rozwiń klikalny obszar ImageView za pomocą wypełnienia?
- 9. Jak sprawdzić element CheckListBox za pomocą jednego kliknięcia?
- 10. Jak sprawdzić element div, czy istnieje?
- 11. Jak mogę sprawdzić, czy element istnieje w krotce?
- 12. Jak sprawdzić, czy funkcja jest wywoływana za pomocą połączenia/zastosowanie
- 13. Czy mogę animować element pozycjonowany absolutnie za pomocą przejścia CSS?
- 14. Jak mogę sprawdzić, czy element pasuje do selektora?
- 15. Jak mogę sprawdzić, czy kolejka jest pusta?
- 16. Jak mogę sprawdzić, czy funkcja jest częściowa?
- 17. Jak mogę sprawdzić, czy Dispatcher.DisableProcessing jest aktywny?
- 18. Jak mogę sprawdzić, czy scenarzysta jest zamknięty?
- 19. Jak mogę sprawdzić, czy wartość jest liczbą?
- 20. Jak sprawdzić poprawność XHTML za pomocą nokogiri?
- 21. Jak mogę sprawdzić, czy element istnieje w zestawie elementów?
- 22. Jak mogę sprawdzić, czy ArrayList zawiera element innego ArrayList?
- 23. Czy mogę stwierdzić, czy właściwość jest zabrudzona za pomocą nhibernate?
- 24. Jak sprawdzić, czy element jest zrzucany, przeciągalny lub inny "ble"?
- 25. Jak mogę sprawdzić, czy inna aplikacja w systemie jest oryginalna?
- 26. Jak sprawdzić, czy element jest w widoku użytkownika z jquery
- 27. Jak mogę sprawdzić czy blokada jest włączona bez czekania na wpisanie znaku za pomocą JavaScript?
- 28. Jak mogę sprawdzić, czy pole formularza jest poprawnie wypełnione za pomocą kapibara?
- 29. Jak mogę sprawdzić, czy aplet java jest ładowany za pomocą javascript?
- 30. Jak mogę sprawdzić certyfikat klienta za pomocą Snap'a
Co masz na myśli klikania? Czy element jest wyłączony? Czy to jest ukryte? –
Chciałbym zobaczyć przykład, który byłby odpowiednikiem 'waitUntilElementIsEnabled()'. W Selenium znajduje się pomocnik, który łączy sprawdzanie isEnabled z sprawdzeniem isVisible przed zwróceniem "true". – Monkpit
Zobacz [to wyszukiwanie w Github Selenium] (https://github.com/SeleniumHQ/selenium/search?l=python&q=clickable&type=Code&utf8=%E2%9C%93) dla przykładów – Monkpit