트랙터, isDisplayed() NoSuchElementError:로케이터를 사용하는 요소를 찾을 수 없습니다.
트랙터 2.0에서, 나는 체크인을 하고 있습니다.expect()
하나의 요소가 표시되는 경우.저는 거짓을 예상하지만, 이상한 것은 제가 다음과 같은 오류를 범한다는 것입니다.
해당 요소 없음 오류:로케이터를 사용하는 요소를 찾을 수 없습니다: By.id ("userForm")
내 코드는:
describe('closeModal', function() {
it('should close the alert that appears after registration.', function(){
element(by.id('closeAlertModalButton')).click();
expect(element(by.id('userForm')).isDisplayed()).toBeFalsy();
});
});
페이지에 요소가 더 이상 없어서 그런 오류가 발생하는 것은 이해하지만(확인하고 싶은 것은) 오류가 아니라 거짓이 나와야 하는 것 아닌가요?
isDisplayed()
는 요소가 표시되는지 여부를 검사하지만, 요소가 DOM에 있는지 여부를 검사하거나 를 사용합니다.
expect(browser.isElementPresent(element(by.id('userForm')))).toBe(false);
expect(element(by.id('userForm')).isPresent()).toBe(false);
참고 항목:
이 오류는 WebDriver 동작의 일부입니다.이러한 경우는 Present 또는 elementPresent를 사용하는 것이 좋습니다.
보이는 요소가 보이지 않으면 A, 보이지 않으면 B, 발견되지 않으면 예외를 무시합니다.
element.isDisplayed().then(function(visible){
if (visible) {
// do A when element visible
}else{
// do B when element not visible
}
}, function () {
//suppress exception if element is not found on page
});
.isDisplayed()
요소가 존재한다고 가정합니다(DOM에 존재).
그렇다면
expect($('[ng-show=saving]').isDisplayed()).toBe(true);
하지만 그 요소는 존재하지 않습니다. 단아한 실패한 기대 대신에,$('[ng-show=saving]').isDisplayed()
나머지를 야기하는 오류를 던질 것입니다.it
블록 미실행
해결책
만약 당신이 확인하고 있는 요소가 페이지에 어떤 이유로도 존재하지 않을 수 있다고 가정한다면, 아래의 안전한 방법으로 이동합니다.
/**
* element is Present and is Displayed
* @param {ElementFinder} $element Locator of element
* @return {boolean}
*/
let isDisplayed = function ($element) {
return (await $element.isPresent()) && (await $element.isDisplayed())
}
사용.
expect(await isDisplayed( $('[ng-show=saving]') )).toBe(true);
언급URL : https://stackoverflow.com/questions/30099903/protractor-with-isdisplayed-i-get-nosuchelementerror-no-element-found-using
'programing' 카테고리의 다른 글
파서 차단, 교차 사이트(즉, 다른 eTLD+1) 스크립트 워드프레스 (0) | 2023.10.02 |
---|---|
iOS KeyChain이 백그라운드에서 값을 검색하지 않음 (0) | 2023.10.02 |
우커머스 | 워드프레스 - WC_Cart ::set_quantity - (0) | 2023.10.02 |
값 변경 수신기가 프라임페이스 일정관리에서 작동하지 않습니다. (0) | 2023.10.02 |
3디브마다 디브로 포장합니다. (0) | 2023.10.02 |