ajax가 아닌 페이지에서 셀레늄을 사용할 때 페이지로드를 항상 "대기"해야합니까?

박사

레거시 ASP.Net 응용 프로그램에 대해 Cucumber, Selenium 및 Xunit을 사용하여 BDD 테스트를 작성하고 있습니다. 페이지가 디자인 된 방식에 따라 "클릭"할 때마다 서버에서 새 페이지를 가져옵니다. 특정 페이지에 대한 테스트를 자동화해야하는 경우 "클릭"할 때마다 다음과 유사한 줄이 있어야합니까?

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout));
wait.Until(...); //Wait until something about the page is true

Selenium이 항상 명시 적으로 언급하지 않고 페이지로드를 암묵적으로 기다릴 지 확실하지 않습니다. 이 시나리오를 처리하는 데 권장되는 패턴은 무엇입니까?

항상 "일부 요소"에 대한 아이디어를 가지고 있기 때문에 Until메서드에 넣을 수 있고 그 결과 취성 테스트로 이어진다 는 것은 번거 롭습니다 . ASP.Net 페이지는 많은 동적 컨트롤과 전체 페이지 새로 고침으로 가득 차있어 테스트 코드를 읽을 수 없게 만듭니다.

내 제안 된 솔루션 : 묵시적으로 대기하고 대기 할 element-id의 매개 변수를 취하는 확장 메서드를 작성합니다. 그러나 나는 위의 문제를 더 관리하기 쉬운 곳으로 리팩토링하고 있습니다. 나는 여전히 명시 적으로 기다릴 필요가있다. 그것을 제거 할 방법이 없습니까? 셀레늄에는 그러한 확장 방법이 필요없이이 경우를 처리 할 수있는 명백한 기본값이 있습니까? 아니면 이것이 실제로 수행하는 자연스러운 방법입니까?

Alecxe

테스트를 신뢰할 수 있고 정확히 필요한 시간 간격 만 기다리려면-그렇습니다. Explicit Waits with WebDriverWait는 완벽한 솔루션입니다. 그리고 이것은 실제로 매우 "자연스러운" 해결책입니다. 사용자로서 페이지가로드되었음을 어떻게 정의하는지 생각해보십시오. 일반적으로 원하는 콘텐츠를 볼 때입니다. 맞습니까? 로딩 페이지를 볼 때 원하는 콘텐츠가 표시되었는지 여부를 확인하면서 페이지 상태를 지속적으로 재평가하고 있습니다. 명시 적 대기는 동일한 논리를 따릅니다. 기본적으로 500ms마다 예상 조건이 참인지 아닌지 확인하지만 WebDriverWait.

wait.until()호출을 자주 사용해야 하고 DRY 원칙을 따르고 싶다면 "추출 방법" 또는 기타 리팩토링 방법을 적용하는 것이 좋습니다.

모든 요소 검색에 적용되는 암시 적 대기를 설정하거나 하드 코딩 된 "인공"지연을 도입 할 수 있지만 이는 신뢰할 수없고 시간 낭비입니다. 결국 필요 이상으로 대기하고 가끔 테스트를 받게됩니다. 실패.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ResponseFile을 사용할 때 워프가 200이 아닌 상태 코드를 사용하도록하려면 어떻게해야합니까?

분류에서Dev

www가 아닌 www에 대해 내 홈페이지에서 rel = "canonical"을 사용해야합니까?

분류에서Dev

로드 페이지가 사라질 때까지 Selenium WebDriver에서 사용자 지정 암시 적 대기

분류에서Dev

스레드 풀에서 스레드를 사용할 수있을 때까지이 코드를 대기하려면 어떻게해야합니까?

분류에서Dev

C #을 사용하여 내 페이지가 아닌 페이지를 새로 고치려면 어떻게해야합니까?

분류에서Dev

셀레늄 파이썬을 통해 입력 상자를 선택하려고하지만 페이지를 다시로드 할 때마다 요소의 'id'가 변경됩니다.

분류에서Dev

셀레늄을 사용할 때 삭제 버튼이 멈췄지만 정상적으로 작동합니다.

분류에서Dev

파이썬에서 셀레늄 종료 기능을 사용할 때 Firefox 오류가 발생합니다.

분류에서Dev

셀레늄 웹 드라이버에서 대기 상태로 경고를 선언하고 시작할 때 유형 불일치 : 경고에서 경고로 변환 할 수 없음 오류가 발생합니다.

분류에서Dev

마지막 페이지 (업로드 페이지)가 계속 되돌아갑니다. 셀레늄에서 같은 페이지에 머무르는 방법

분류에서Dev

셀레늄 : 이해 대기

분류에서Dev

셀레늄을 사용하여 페이지를 반복하고 모든 페이지에서 데이터를 얻으려면 어떻게해야합니까?

분류에서Dev

사용자가 로그 아웃했을 때 웹 페이지를 표시하려면 어떻게해야합니까?

분류에서Dev

사용자가 다시 스크롤 할 때까지 페이지를 맨 아래로 스크롤해야합니다.

분류에서Dev

각도가 아닌 페이지의 각도기에서 페이지 로딩 이미지가 사라질 때까지 기다리는 방법

분류에서Dev

셀레늄 드라이버와 함께 behat + mink를 사용하여 페이지 상태 코드를 얻으려면 어떻게해야합니까?

분류에서Dev

HTTP 요청에 페이로드를 보내야 할 때 DELETE 대신 PUT을 사용해야합니까?

분류에서Dev

도메인을 정의 할 때 null이 아닌 제약 조건을 언제 추가해야합니까?

분류에서Dev

사용자가 페이지를 변경할 때 Flipview에서 항목을 제거하고 싶습니다. 제가 뭔가할만한 일이 있을까요?

분류에서Dev

셀레늄 IE11에서 다른 페이지로 이동할 때 닫힌 창에서 요소를 찾을 수 없습니다.

분류에서Dev

셀레늄 자동 테스트는 페이지의 모든 요소를로드하거나 필요한 항목 만로드 할 때까지 기다려야합니까?

분류에서Dev

페이지 다시로드가 예상 될 때 AngularJS 라우팅이 기본이 아닌 URL을 하이재킹합니다.

분류에서Dev

사용자 지정 섹션을 사용할 때 web.config가 아닌 app.config에서 어셈블리를 지정해야하는 이유

분류에서Dev

RouterLink는 상위 페이지 템플릿에서 처음로드 할 때 href를 추가하지 않습니다.

분류에서Dev

자바 스크립트 / CSS 만 사용하는 대기 이미지로 페이지가로드 될 때까지 UI를 차단하는 방법

분류에서Dev

셀레늄을 사용하여 두 가지 깊이에서 항목을 긁는 데 문제가 있습니다.

분류에서Dev

Entity Framework Core에 기본 키가있을 때 항상 .FirstOrDefault () 대신 .Find ()를 사용해야합니까?

분류에서Dev

jsp 페이지에서 메소드를 실행할 때 주 메소드가 아닌 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

ajax를 통해 페이지를로드 할 때 서버 값을 가져 와서 선택 메뉴 드롭 다운에 표시 할 수 없습니다.

Related 관련 기사

  1. 1

    ResponseFile을 사용할 때 워프가 200이 아닌 상태 코드를 사용하도록하려면 어떻게해야합니까?

  2. 2

    www가 아닌 www에 대해 내 홈페이지에서 rel = "canonical"을 사용해야합니까?

  3. 3

    로드 페이지가 사라질 때까지 Selenium WebDriver에서 사용자 지정 암시 적 대기

  4. 4

    스레드 풀에서 스레드를 사용할 수있을 때까지이 코드를 대기하려면 어떻게해야합니까?

  5. 5

    C #을 사용하여 내 페이지가 아닌 페이지를 새로 고치려면 어떻게해야합니까?

  6. 6

    셀레늄 파이썬을 통해 입력 상자를 선택하려고하지만 페이지를 다시로드 할 때마다 요소의 'id'가 변경됩니다.

  7. 7

    셀레늄을 사용할 때 삭제 버튼이 멈췄지만 정상적으로 작동합니다.

  8. 8

    파이썬에서 셀레늄 종료 기능을 사용할 때 Firefox 오류가 발생합니다.

  9. 9

    셀레늄 웹 드라이버에서 대기 상태로 경고를 선언하고 시작할 때 유형 불일치 : 경고에서 경고로 변환 할 수 없음 오류가 발생합니다.

  10. 10

    마지막 페이지 (업로드 페이지)가 계속 되돌아갑니다. 셀레늄에서 같은 페이지에 머무르는 방법

  11. 11

    셀레늄 : 이해 대기

  12. 12

    셀레늄을 사용하여 페이지를 반복하고 모든 페이지에서 데이터를 얻으려면 어떻게해야합니까?

  13. 13

    사용자가 로그 아웃했을 때 웹 페이지를 표시하려면 어떻게해야합니까?

  14. 14

    사용자가 다시 스크롤 할 때까지 페이지를 맨 아래로 스크롤해야합니다.

  15. 15

    각도가 아닌 페이지의 각도기에서 페이지 로딩 이미지가 사라질 때까지 기다리는 방법

  16. 16

    셀레늄 드라이버와 함께 behat + mink를 사용하여 페이지 상태 코드를 얻으려면 어떻게해야합니까?

  17. 17

    HTTP 요청에 페이로드를 보내야 할 때 DELETE 대신 PUT을 사용해야합니까?

  18. 18

    도메인을 정의 할 때 null이 아닌 제약 조건을 언제 추가해야합니까?

  19. 19

    사용자가 페이지를 변경할 때 Flipview에서 항목을 제거하고 싶습니다. 제가 뭔가할만한 일이 있을까요?

  20. 20

    셀레늄 IE11에서 다른 페이지로 이동할 때 닫힌 창에서 요소를 찾을 수 없습니다.

  21. 21

    셀레늄 자동 테스트는 페이지의 모든 요소를로드하거나 필요한 항목 만로드 할 때까지 기다려야합니까?

  22. 22

    페이지 다시로드가 예상 될 때 AngularJS 라우팅이 기본이 아닌 URL을 하이재킹합니다.

  23. 23

    사용자 지정 섹션을 사용할 때 web.config가 아닌 app.config에서 어셈블리를 지정해야하는 이유

  24. 24

    RouterLink는 상위 페이지 템플릿에서 처음로드 할 때 href를 추가하지 않습니다.

  25. 25

    자바 스크립트 / CSS 만 사용하는 대기 이미지로 페이지가로드 될 때까지 UI를 차단하는 방법

  26. 26

    셀레늄을 사용하여 두 가지 깊이에서 항목을 긁는 데 문제가 있습니다.

  27. 27

    Entity Framework Core에 기본 키가있을 때 항상 .FirstOrDefault () 대신 .Find ()를 사용해야합니까?

  28. 28

    jsp 페이지에서 메소드를 실행할 때 주 메소드가 아닌 오류가 발생하는 이유는 무엇입니까?

  29. 29

    ajax를 통해 페이지를로드 할 때 서버 값을 가져 와서 선택 메뉴 드롭 다운에 표시 할 수 없습니다.

뜨겁다태그

보관