반응형
요소가 표시되지 않음 오류(요소를 클릭할 수 없음)
웹 페이지에 표시되는 라디오 버튼을 클릭합니다.코드는 다음과 같습니다.
HTML 코드:
<div class="small-checkbox red-theme raleway-regular text-muted2 position-relative">
<div class="city-checkbox inline-block position-relative" ng-class="{'rounded-checkbox': main.current_city_id == 1, 'mb-20': main.ifDeviceIsPhone}">
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect mh-20" for="mumbaiCity" ng-class="{'is-checked' : main.current_city_id == 1}">
<input type="radio" id="mumbaiCity" class="mdl-radio__button position-relative vertical-middle" name="city" value="1" ng-click="main.setCity('Mumbai', 1)">
<span class="mdl-radio__label position-relative font15"><img class="city-icon" src="../../../assets/img/cities/mumbai-icon.png">Mumbai</span>
</label>
</div>
</div>
테스크케이스:
// demo-test.js
describe('Protractor Demo App', function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000000;
it('check item count', function() {
browser.get('<link>');
element(by.id('mumbaiCity')).click();
});
});
이 테스트 스루 에러는 다음과 같습니다.
1) 굴절기 데모 앱 체크 항목 수
메시지:
실패: 요소가 표시되지 않음
또, 다음과 같이 시도했습니다.
element(by.css('[ng-click="main.setCity('Mumbai', 1)"]')).click();
에러가 발생합니다.
[16:16:26] E/launcher - 인수 목록 후 오류: SyntaxError: missing )
라디오 버튼을 클릭하는 방법을 제안해 주세요.
이것은 셀레늄에 의한 테스트 자동화에서 비교적 일반적인 문제입니다.
일반적인 솔루션은 다음과 같습니다.
- 클릭할 요소가 실제로 표시되는지 확인합니다.경우에 따라서는 요소를 표시하기 위해 페이지에서 추가 작업을 수행해야 합니다.예를 들어, 옵션이 나타나도록 드롭다운을 열거나 하위 메뉴가 나타나도록 메뉴를 엽니다.
요소가 표시될 때까지 기다립니다.
var EC = protractor.ExpectedConditions; var mumbaiCity = element(by.id('mumbaiCity')); browser.wait(EC.visibilityOf(mumbaiCity), 5000); mumbaiCity.click();
같은 것을 가진 다른 요소가 있다
id
사실 보이지 않는 거죠.이 경우 이 특정 요소와 일치하도록 로케이터를 개선해야 합니다.예:element(by.css(".city-checkbox #mumbaiCity")).click(); element(by.css(".city-checkbox input[ng-click*=Mumbai]")).click();
또는 동일한 로케이터와 일치하는 요소가 여러 개 있는 경우 표시되는 요소를 "필터링"할 수 있습니다.
var mumbaiCity = element.all(by.id('mumbaiCity')).filter(function (elm) { return elm.isDisplayed().then(function (isDisplayed) { return isDisplayed; }); }).first(); mumbaiCity.click();
요소로 이동한 후 via를 클릭합니다.
var mumbaiCity = element(by.id('mumbaiCity')); browser.actions().mouseMove(mumbaiCity).click().perform();
-
var mumbaiCity = element(by.id('mumbaiCity')); browser.executeScript("arguments[0].scrollIntoView();", mumbaiCity.getWebElement()); mumbaiCity.click();
javascript를 통해 클릭(다름의 차이점 제외):
var mumbaiCity = element(by.id('mumbaiCity')); browser.executeScript("arguments[0].click();", mumbaiCity.getWebElement());
브라우저 창을 최대화하기만 하면 되는 경우가 있습니다.
browser.driver.manage().window().maximize();
언급URL : https://stackoverflow.com/questions/37809915/element-not-visible-error-not-able-to-click-an-element
반응형
'programing' 카테고리의 다른 글
Oracle 테이블 또는 보기 이름 변경 (0) | 2023.02.26 |
---|---|
Woocommerce ph 코드 get_price_html() (0) | 2023.02.26 |
역직렬화 중 JSON.Net 무시 속성 (0) | 2023.02.26 |
Moment.js 와 ReactJS (ES6) (0) | 2023.02.26 |
Play 2.2 라이브러리로 밀봉된 특성을 위한 노이즈 프리 JSON 형식 (0) | 2023.02.26 |