Python 및 Playwright를 사용하여 Iframe 처리

Microsoft의 자동화 라이브러리를 사용하여 iframe 및 중첩 된 iframe으로 작업하는 방법을 알아 봅니다.

Unsplash의 소나무 와트 사진

인라인 프레임 (일반적으로 iframe이라고 함)은 타사 콘텐츠를 표시하거나 웹 페이지 콘텐츠 내에 새 페이지를 포함하는 데 사용됩니다. 테스트 자동화의 세계에서 iframe은 작업하기 어려울 수 있습니다.

Selenium은 엔지니어가이 switch_to방법을 사용하여 운전자의 초점을 프레임 자체로 변경해야합니다. 작업을 수행 한 후에는을 사용하여 드라이버를 기본 페이지로 다시 집중해야합니다 switch_to.default_content(). 이것은 어려운 작업 흐름은 아니지만 작업을 수행해야 할 때마다 프레임간에 계속 전환하는 것은 번거로울 수 있습니다.

Cypress는 기본적으로 iframe을 처리하지 않습니다. 이는 cy모든 Cypress 명령에 사용 된 접두사가 a #document를 찾을 때까지 DOM을 통과하기 때문 입니다. 일단 찾으면 순회가 종료됩니다. Cypress를 iframe과 함께 사용하려면 사용자 정의 코드 (또는 cypress-iframe 플러그인)가 필요합니다.

반면 극작가는 iframe 작업을 간단하고 직관적으로 만듭니다. 이 튜토리얼에서는 기존 iframe과 중첩 된 iframe 모두에서 Playwright를 사용하는 방법을 배웁니다. DemoQA 프레임 및 중첩 프레임 페이지를 테스트의 초점으로 사용할 것입니다.

시작하기

이 자습서를 위해 다음 패키지를 설치해야합니다.

  • Pytest
  • 극작가

선택기 방법

Playwright는 엔지니어에게 iframe 선택을위한 세 가지 옵션을 제공합니다.

  • element_handle.content_frame ()
  • page.frame ()
  • page.frames [i]

이 page.frames[i]속성은 iframe에 고유 한 속성이나 상위 요소가없는 인스턴스에서 사용해야합니다. 속성은 특정 프레임에 대해 인덱싱 될 수있는 페이지의 모든 활성 프레임을 나열합니다. 응용 프로그램 소스 코드에 액세스 할 수없고 앞의 두 가지 방법을 사용할 수없는 경우가 아니면이 방법을 사용하지 않는 것이 좋습니다.

Iframe에 집중

DemoQA 프레임 페이지에는 두 개의 iframe이 있습니다. 하나는 페이지의 왼쪽 중앙에, 다른 하나는 왼쪽 하단에 있습니다.

DemopQA 프레임 페이지.

DemoQA 프레임 페이지의 iframe에는 고유 한 url속성이 없으며 속성도 없습니다 name. element_handle.content_frame()부모 요소에 대한 고유 한 선택기가 있으므로 위치를 찾는 방법을 사용합니다 .

이제 페이지의 첫 번째 프레임에 액세스 할 수 있습니다. 극작가 주장을 ElementHandles frame_one와 함께 사용하여 headingPytest 주장을 작성할 수 있습니다 .

중첩 된 프레임

Playwright는 frame.child_frame[i]속성을 사용하여 기존 iframe 내에서 프레임을 선택하는 추가 방법을 제공합니다 . 이 속성은 페이지의 iframe 내에있는 모든 하위 프레임 목록을 반환합니다. page.frames[i]속성과 유사하게 하위 iframe에 고유 name또는 url속성이 없거나 고유 한 로케이터 전략이있는 상위 요소 가 없을 때 유용합니다 .

데모 QA 중첩 프레임 페이지.

DemoQA Nested Frames 페이지의 자식 iframe에는 고유 한 로케이터 전략이 없으므로 frame.child_frame[i]선택하려면 속성을 사용해야 합니다.

하위 iframe에는 '하위 Iframe'이라는 텍스트가 body있는 단일 p요소와 요소 가 포함 됩니다. Pytest 단언 문을 작성하기 위해 극작가 단언을 만드는 데 사용할 수 있습니다.

확인

위의 테스트는 다음 명령을 사용하여 터미널에서 실행할 수 있습니다 (사용하는 경우 pytest-playwright).

  • pytest 머리없는 달리기
  • pytest --headful 머리를

browser = {browser_type}.launch(headless=False)

이 자습서를 완료하면 디렉터리가 다음과 유사해야합니다.

tests
    |__ test_frames.py
.gitignore
README.md
requirements.txt

Playwright를 통해 엔지니어는 iframe을 찾고 조치를 취하기위한 깔끔하고 읽기 쉬운 테스트 코드를 작성할 수 있습니다. 자동화 분야에서 Playwright의 경쟁자와 달리 엔지니어는 인라인 프레임 요소로 작업 할 때 사용자 정의 코드를 작성하거나 운전자 초점을 추적 할 필요가 없습니다.

Jonathan Thompson 은 테스트 자동화를 전문으로하는 선임 품질 엔지니어입니다. 그는 현재 노스 캐롤라이나 주 롤리에서 아내와 Winston이라는 Goldendoodle과 함께 살고 있습니다. LinkedIn 에서 그와 연결 하거나 Twitter ( @jacks_elsewhere ) 또는 Github ( ThompsonJonM )에서 그를 팔로우 할 수 있습니다 .

Suggested posts

Langchain을 사용하여 ChatGPT 플러그인을 무료로 실행하는 방법

Langchain을 사용하여 ChatGPT 플러그인을 무료로 실행하는 방법

브라우저, 코드 해석기 등과 같은 새롭고 강력한 ChatGPT 플러그인에 대해 들어보셨을 것입니다. 그러나 문제가 있습니다. 플러그인에 대한 액세스는 대기자 명단으로 제한되어 있으므로 많은 사람들이 액세스할 수 없습니다.

내가 가장 많이 사용하는 코딩 리소스

내가 가장 많이 사용하는 코딩 리소스

이번 주에 저는 일일 이메일 목록의 회원으로부터 이메일을 받았습니다. 그들은 알고 싶어했습니다. 매일, 매주, 매월 어떤 리소스를 방문합니까? 좋은 질문입니다! 제 작업 흐름과 제가 사용하는 주요 리소스에 대한 통찰력을 공유하게 되어 기쁩니다.

Related posts

대명사는 정말 무섭다

너무 자주 그렇듯 갑자기 와닿는다 다시 중간쯤이야 <아니, 태평양에 있는 사람 말고 마룬, 카니발에 있는 사람> 모든 헤드라인이 시끄러워…..

그 위협 아카이브: Vol 7 블랙 바스타

그 위협 아카이브: Vol 7 블랙 바스타

오늘날의 상호 연결된 세계에서 사이버 공격의 위협은 그 어느 때보다 만연해 있습니다. 사이버 범죄자와 국가 행위자는 지속적으로 취약점을 악용하고 귀중한 데이터를 도용하여 모든 규모의 조직에 상당한 위험을 초래합니다.

네트워크 TV 트위터

네트워크 TV 트위터

낡은 것이 다시 새 것이 되고, 번쩍이던 것이 이제는 무디게 느껴진다. JNCO 청바지가 1990년대 후반의 다른 패션과 함께 시내의 쿨한 아이들 사이에서 컴백하는 것에 대해 말하는 것이 아닙니다.

Goodreads 읽기 챌린지는 독성이 있습니다.

Goodreads 읽기 챌린지는 독성이 있습니다.

지역 서점과 또 다른 책을 흥정하면서 손에 가려움증이 퍼졌습니다. 내가 최근에 구입한 나머지 책과 같은 이 책은 내 'To Be Read'(TBR) 더미에서 왕좌를 찾을 것입니다. 그러나 나는 그것을 샀다.