> 기술 주변기기 > IT산업 > 크로스 브라우저 테스트에 셀레늄 웹 드라이버를 사용하는 방법

크로스 브라우저 테스트에 셀레늄 웹 드라이버를 사용하는 방법

Lisa Kudrow
풀어 주다: 2025-02-15 11:08:12
원래의
944명이 탐색했습니다.

크로스 브라우저 테스트에 셀레늄 웹 드라이버를 사용하는 방법 이 기사는 원래 LambDatest에 출판되었습니다. Sitepoint를 가능하게하는 파트너를 지원해 주셔서 감사합니다.

셀레늄은 주로 크로스 브라우저 테스트에 사용되는 인기있는 자동화 테스트 프레임 워크입니다. 오픈 소스이며 Firefox, Chrome, Internet Explorer 및 Microsoft Edge와 같은 다양한 브라우저에서 웹 응용 프로그램 테스트를 자동화하는 데 이상적입니다. Selenium은 유명한 프레임 워크가되었으며 HP QTP (빠른 테스트 전문가) 및 일명 HP UFT (통합 기능 테스트)와 같은 다른 테스트 프레임 워크와 치열한 경쟁을합니다. Selenium Webdriver에 대한이 자습서는 Selenium Suite, Selenium Webdriver Architecture의 구성 요소에 대한 기본적인 이해를 개발하는 데 도움이되며 Google Chrome, Mozilla Firefox 및 Google Chrome 용 Selenium Webdriver를 사용하여 크로스 브라우저 호환성을 테스트하기 위해 자동화를 실행하는 방법을 보여줍니다. 인터넷 익스플로러. 셀레늄은 다양한 도구의 조합이며 각 도구는 웹 테스트 자동화에 중요한 역할을합니다. WebDriver 튜토리얼로 뛰어 들어 봅시다 키 테이크 아웃

셀레늄 구성 요소 이해 : 셀레늄 IDE, 웹 드라이버, 그리드 및 리모컨의 역할을 파악하여 크로스 브라우저 테스트를 효과적으로 자동화하고 관리합니다. 직접 브라우저 커뮤니케이션에 WebDriver 사용 : 셀레늄 웹 드라이버가 중개인없이 브라우저와 직접 상호 작용하는 방법에 대해 알아보십시오. 브라우저 자동화를 위해 더 빠르고 신뢰할 수 있습니다. 셀레늄 그리드로 병렬 테스트 구현 : 다양한 환경에서 병렬로 테스트를 실행하는 데 셀레늄 그리드를 활용하여 테스트 실행 시간을 크게 줄이는 데 도움이됩니다. LambDatest에서 테스트를 구성하고 실행하는 방법 : LambDatest의 Cloud Selenium 그리드를 사용하여 테스트를 원격으로 실행하는 방법을 탐색하여 지역 인프라없이 여러 브라우저 버전 및 운영 체제에 액세스 할 수 있습니다. 실용 테스트 시나리오 처리 : 팝업, 동적 요소 및 기타 Selenium WebDriver 기술을 사용하여 팝업, 동적 요소 및 Ajax 통화와 같은 실제 테스트 시나리오를 처리하기 위해 Selenium 스크립트 작성에 대한 통찰력을 얻으십시오. 병렬 실행으로 테스트 최적화 : LambDatest와 같은 플랫폼에서 병렬 테스트를 활용하여 총 테스트 실행 시간을 최소화하여 더 많은 테스트를 동시에 실행할 수 있습니다. 셀레늄 스위트의 구성 요소 아래는 셀레늄 테스트 스위트의 핵심 구성 요소입니다.

셀레늄 통합 개발 환경 (IDE) 셀레늄 리모컨 (RC) 셀레늄 웹 드라이버 셀레늄 그리드

이제 셀레늄 웹 드라이버 튜토리얼에서 이러한 구성 요소를 자세히 살펴 보겠습니다. 셀레늄 통합 개발 환경 (IDE) Selenium IDE는 간단한 Firefox 플러그인이며 스크립트를 녹음하고 재생하는 데 사용됩니다. 그러나 Selenium IDE는 간단한 사용 사례의 테스트를 자동화하기위한 자동화 스크립트를 작성하는 데만 사용될 수 있습니다. Selenium IDE는 조건부, 예외 처리, 루프, 스크린 샷 캡처 등을 지원하지 않습니다. 복잡한 사용 사례를 자동화하기 위해 대부분의 개발자와 테스터는 레코드 및 재생 테스트 대신 스크립팅 테스트를 선택하는 것을 선호합니다. 셀레늄 테스트 스위트는 셀레늄 리모컨 (RC) 또는 셀레늄 웹 드라이버로 구성됩니다. Selenium IDE는 다른 운영 체제, 즉 Windows, Linux, Mac OS 등에 사용할 수 있습니다. Firefox 용 Selenium IDE는 여기에서 다운로드 할 수 있습니다. 셀레늄 리모컨 (RC) 복잡한 시나리오 테스트의 경우 셀레늄 원격 제어 (RC)를 사용할 수 있습니다. 클라이언트 서버 모델을 기반으로하여 서버에서 제어하는 ​​브라우저에서 테스트를 실행할 수 있습니다. 다양한 프로그래밍 언어의 클라이언트 라이브러리가있어 개발자가 편안하고 전문 지식을 갖춘 프로그래밍 언어로 효과적인 테스트 케이스를 쉽게 작성할 수 있습니다. 버전 2.25.0 이후 RC는 Java, C#, Python, Perl, Ruby 등을 지원합니다. 셀레늄 서버는 셀레늄 RC의 핵심 구성 요소입니다. Selenium RC의 핵심 기능/책임 중 일부는 다음과 같습니다.

는 코어 셀레늄 프레임 워크를 포함하며 주로 브라우저에서 동일한 주입을 담당합니다. 클라이언트 프로그램은 RC에 명령을 보내어 서버에 의해 해석 한 다음 브라우저로 전송됩니다. 실행 후 결과는 클라이언트로 다시 전송됩니다. 클라이언트 및 서버는 HTTP의 일반적인 메커니즘을 통해 통신합니다.

앞에서 언급했듯이 셀레늄 RC는 Mozilla Firefox에서만 사용할 수있는 Selenium IDE와 달리 다른 브라우저를 지원합니다. Selenium RC의 단점은 작업이 반복되는 테스트 케이스의 자동화, 특히 회귀 테스트를 위해 레코드 및 재생 기능을 지원하지 않는다는 것입니다. Selenium RC를 사용하여 테스트를 실행하기 전에 Selenium RC 서버의 인스턴스를 수동으로 호출해야하며 해당 인스턴스가 전체 테스트주기 전체에서 실행되어야합니다. 셀레늄 웹 드라이버 우리는 Selenium IDE가 GUI 기반이라는 것을 알고 있습니다. 여기서 Selenium RC는 HTML 테스트 스위트를 실행할 수있는 독립형 Java 프로그램입니다. Selenium Webdriver 프레임 워크는 Selenium IDE & Selenium RC와 비교할 때 더 널리 사용됩니다. 클라이언트 서버 모델을 기반으로하는 Selenium RC와 달리 Selenium Webdriver 프레임 워크는 브라우저 별 드라이버를 통해 구현됩니다. 각 브라우저에는 자동화 테스트가 수행되는 해당 WebDriver 응용 프로그램이 있습니다. 셀레늄 웹 드라이버는 브라우저와 직접 통신하므로 셀레늄 서버와 같은 별도의 구성 요소가 필요하지 않습니다. C#, Ruby, Java, Python, Perl 등의 소프트웨어 테스터에게 도움이되는 최고의 프로그래밍 언어를 지원합니다. 수행. 아래에 언급 된 링크에서 Selenium Webdriver를 다운로드 할 수 있습니다.

Firefox

크롬 인터넷 익스플로러 Microsoft Edge
    셀레늄 그리드
  • 직렬 테스트는 일부 브라우저, 운영 체제 또는 장치에 한정된 코드를 테스트하는 동안 괜찮습니다. 그러나 여러 조합이있는 환경에서 테스트를 수행 해야하는 방법론이 흔들립니다. 전체 테스트 프로세스를 가속화 할 수 있기 때문에 병렬 테스트가 매우 유용 할 수 있습니다. 병렬 테스트를 통해 다른 테스트 구성에서 동시에 유사한 테스트 케이스를 수행 할 수 있습니다. 동일한 브라우저에서 다른 테스트 케이스를 동시에 실행할 수도 있습니다. 병렬 테스트에는 더 많은 것이 있지만 Selenium Webdriver로부터 우리의 초점을 벗어날 수 있습니다.
  • . 기본 사항으로 돌아 가기 : 셀레늄 그리드는 주로 병렬 테스트에 사용됩니다. 다른 브라우저 및 운영 체제에 대한 다른 기계에서 동시에 테스트를 실행하는 데 도움이되므로 동시에 병렬 테스트에 사용됩니다. 셀레늄 RC와 함께 작업을 수행합니다. 셀레늄 그리드의 사용을 보여주는 예는 다음과 같습니다.
  • 셀레늄 웹 드라이버 아키텍처 셀레늄 웹 드라이버 아키텍처를 구성하는 주요 블록을 살펴보십시오 :
  • 셀레늄 클라이언트 라이브러리 JSON 와이어 프로토콜
  • 브라우저 드라이버 브라우저
  • 각 구성 요소를보다 자세히 살펴 보겠습니다 셀레늄 클라이언트 라이브러리 앞에서 언급 한 바와 같이, 개발자는 셀레늄을 사용하여 C#, Java, Python, Perl 등과 같은 다양한 언어로 테스트 코드를 작성할 수 있습니다. 셀레늄 클라이언트 라이브러리 또는 셀레늄 언어 바인딩으로 인해 다중 언어 지원이 가능합니다. 예를 들어, Python에서 코드를 작성하는 경우 Python 클라이언트 라이브러리가 필요합니다. 다양한 프로그래밍 언어에 대한 셀레늄 클라이언트 드라이버를 여기에서 다운로드 할 수 있습니다.
  • JSON 와이어 프로토콜
  • JSON (JavaScript 객체 표기법) 와이어 프로토콜은 클라이언트와 서버 간의 데이터 전송을 용이하게합니다. 나머지 (표현 상태 전송) 기반 API입니다. 각 브라우저에는 자체 브라우저 드라이버가 있습니다 브라우저 드라이버 브라우저 드라이버는 주로 브라우저와 통신하는 데 사용됩니다. 브라우저의 내부 논리와 그 기능이 공개되지 않기 때문에 브라우저 드라이버는 실행 수준 세부 사항을보다 추상적으로 유지하기 위해 필요한 '캡슐화'계층을 보장합니다. 각 브라우저에는 해당 브라우저 드라이버가 있습니다 브라우저 Chrome, Firefox, Internet Explorer, Safari 및 Microsoft Edge와 같은 인기있는 브라우저에서 브라우저 드라이버를 사용할 수 있으므로 크로스 브라우저 테스트를 수행하는 데 사용할 수 있습니다. 브라우저 드라이버를 공개적으로 사용할 수없는 브라우저에서 웹 사이트의 크로스 브라우저 테스트를 수행 할 수 없다는 점에 유의해야합니다.

    lambdatest는 이제 클라우드 셀레늄 그리드 와 함께 살고 있습니다 실행할 수있는 병렬 세션 수는 전적으로 선택한 동시 세션에 따라 다릅니다. 병렬 테스트를 통해 테스트주기를 크게 다듬는 데 도움이됩니다. 예를 들어, 병렬 테스트없이 60 분이 걸리는 테스트 스위트가 있다고 가정 해 봅시다. 이제 2 개의 동시성이 있으면 2 개의 테스트를 동시에 실행하여 총 테스트 시간을 30 분으로 줄일 수 있습니다. 마찬가지로, 3 개의 동시성이있는 경우 총 테스트 시간은 20 분까지 더 낮게 트림됩니다. LambDatest 동시성 계산기를 사용하여 테스트 스위트에 따라 필요한 동시 세션 수를 계산하십시오. 셀레늄 웹 드라이버 incation 이제 셀레늄 및 브라우저 드라이버의 기본 사항을 알고 있으므로 이제 간단한 웹 드라이버 스크립트를 살펴볼 때입니다. 예제를 살펴보기 전에 프로그래밍 환경이 준비되어 있는지 확인하십시오 (Eclipse Marketplace에서 다운로드 한 모든 필수 패키지와 함께 Eclipse를 사용하고 있음). Eclipse 용 Selenium 플러그인은 여기에서 다운로드 할 수 있습니다. 샘플 코드는 파이썬 언어로 작성되었지만 C#, Java, Perl, Ruby 등으로 테스트 코드를 쓸 수 있습니다. Firefox WebDriver 예 테스트 코드가 브라우저 (Chrome, Firefox, Internet Explorer 등)와 통신하기 때문에 해당 클라이언트 라이브러리/웹 드라이버가 컴퓨터에 설치되어 있는지 확인하십시오. 해당 웹 드라이버를 다운로드하는 방법에 대해서는 섹션 브라우저 드라이버를 참조하십시오. 아래는 셀레늄, Firefox Webdriver를 사용하여 웹 페이지를 여는 샘플 코드입니다.<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;span&gt;from selenium import webdriver &lt;/span&gt;&lt;span&gt;from selenium.webdriver.common.keys import Keys &lt;/span&gt; desired_cap &lt;span&gt;= { &lt;/span&gt;&lt;span&gt;'platform' : 'win10', &lt;/span&gt;&lt;span&gt;'browserName' : 'chrome', &lt;/span&gt;&lt;span&gt;'version' : &quot;67.0&quot;, &lt;/span&gt;&lt;span&gt;} &lt;/span&gt; url &lt;span&gt;= &quot;https://username:acsessToken@{LMABDA GRID URL}/wd/hub&quot; &lt;/span&gt; driver &lt;span&gt;= webdriver.Remote( &lt;/span&gt; desired_capabilities&lt;span&gt;=desired_cap, &lt;/span&gt; command_executor&lt;span&gt;= url &lt;/span&gt;&lt;span&gt;) &lt;/span&gt; driver&lt;span&gt;.implicitly_wait(1) &lt;/span&gt;driver&lt;span&gt;.get(&quot;http://www.google.com/&quot;) &lt;/span&gt;driver&lt;span&gt;.quit() &lt;/span&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <through> 코드를 통과합시다. 조치를 수행하기 전에 필요한 모든 모듈은 ' import '문을 사용하여 가져옵니다 [LINES 2 ~ 4]. 테스트 코드에서는 테스트가 Firefox 브라우저 [Line 7]에 대해 테스트가 수행되기 때문에 Firefox Webdriver를 사용합니다. 코드에서 FF_DRIVER는 Firefox 브라우저와의 상호 작용을 수행하는 데 사용되는 WebDriver 핸들입니다. WebDriver가 설치되지 않았거나 (WebDriver를 통해) 지원이없는 브라우저를 사용하려고하면 아래 오류가 발생합니다. <..> selenium.common.exceptions.webdriverexception : 메시지 : 'Operadriver'실행 파일이 경로에 있어야합니다 <was> 오류 메시지는 오페라 브라우저 용 웹 드라이버를로드하려고 할 때 (웹 드라이버가 시스템에 설치되지 않음) 표시되면 표시되었습니다. 오류를 제거하려면 Opera 용 WebDriver를 설치해야합니다. <p>. <oper> 브라우저의 모든 작업이 완료되면 필요한 청소 및 프리킥 리소스를 수행하기 위해 FF_DRIVER.CLOSE ()가 호출됩니다. <exec> 코드를 실행하려면 Eclipse IDE에서 Ctrl F9를 호출하거나 Python 명령 줄 옵션을 사용하여 코드를 컴파일 할 수 있습니다. <em> </em> Chrome Webdriver 예 <in> 셀레늄 웹 드라이버 튜토리얼의 이전 섹션에서는 Firefox Webdriver를 사용했습니다. 이 섹션에서는 테스트를 위해 Chrome 브라우저를 사용하는 경우 필요한 변경 사항을 살펴 봅니다. 독립형 크롬 크로드 리버 바이너리 (크롬 브라우저 바이너리와 다른)를 올바른 경로에서 사용할 수 있거나 WebDriver.Chrome.driver 환경 변수의 일부로 존재하는지 확인해야합니다. Windows를 사용하는 경우 여기에서 Chrome Webdriver를 먼저 다운로드해야합니다. Python을 설치 한 위치에 Chromedriver.exe를 붙여 넣으십시오 (이 경우 기본 설치 경로, 즉 C : Python27Scripts). 해당 WebDriver [Line 8]를로드해야하며 나머지 코드는 동일하게 유지됩니다. 아래는 코드 스 니펫이며 변경 (Chrome Webdriver에 필요한)이 다른 색상으로 강조 표시됩니다.<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;span&gt;from selenium import webdriver &lt;/span&gt;&lt;span&gt;from selenium.webdriver.common.keys import Keys &lt;/span&gt; desired_cap &lt;span&gt;= { &lt;/span&gt;&lt;span&gt;'platform' : 'win10', &lt;/span&gt;&lt;span&gt;'browserName' : 'chrome', &lt;/span&gt;&lt;span&gt;'version' : &quot;67.0&quot;, &lt;/span&gt;&lt;span&gt;} &lt;/span&gt; url &lt;span&gt;= &quot;https://username:acsessToken@{LMABDA GRID URL}/wd/hub&quot; &lt;/span&gt; driver &lt;span&gt;= webdriver.Remote( &lt;/span&gt; desired_capabilities&lt;span&gt;=desired_cap, &lt;/span&gt; command_executor&lt;span&gt;= url &lt;/span&gt;&lt;span&gt;) &lt;/span&gt; driver&lt;span&gt;.implicitly_wait(1) &lt;/span&gt;driver&lt;span&gt;.get(&quot;http://www.google.com/&quot;) &lt;/span&gt;driver&lt;span&gt;.quit() &lt;/span&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <er> 인터넷 익스플로러 웹 드라이버 예 <our> 지금까지 Selenium Webdriver 자습서에서 Firefox Webdriver & Chrome Webdriver를 사용하여 크로스 브라우저 테스트를 시연했습니다. 이 섹션에서는 테스트를 위해 Chrome 브라우저를 사용하는 경우 필요한 변경 사항을 살펴 봅니다. 여기 또는 여기에서 올바른 Internet Explorer Webdriver (32 비트/64 비트)를 다운로드해야합니다. Python을 설치 한 위치에 InternetexplorerDriver.exe를 붙여 넣으십시오 (우리의 경우 기본 설치 경로, 즉 C : Python27Scriptts) 또는 선택한 다른 위치. 파이썬 실행 파일이있는 경로에서 InternetexPlorer 웹 드라이버를 복사하면 웹 드라이버를로드하는 동안 '절대 경로'를 언급 할 필요는 없습니다 [Line 7]. 다른 경우에는 절대 경로를 지정해야합니다 [Line 9]. 아래는 다른 색상으로 강조 표시된 변경 사항 (IE Webdriver에 필요)과 함께 코드 스 니펫입니다. <h3> <in> 마침내, 셀레늄 웹 드라이버 튜토리얼에서 우리는 강력한 자리를 보장하기 위해 마우스 움직임, 버튼 움직임, 컨텍스트 메뉴 상호 작용 등과 같은 낮은 수준의 상호 작용을 자동화하는 데 사용되는 ActionChains 모듈을 사용하는 다른 예를 살펴볼 것입니다. UI 디자인. 액션 체인에 대한 자세한 내용은 여기를 참조하십시오 </in> </h3> 위의 예제 코드에서 볼 수 있듯이 Firefox WebDriver 인스턴스를 생성하기위한 코드를 유지합니다 [행 9 ~ 16]. ActionCheains 및 Keys와 같은 몇 가지 새로운 모듈이 있습니다. 원하는 웹 페이지 (예 : https://www.lambdatest.com/)가 브라우저에서 열리면 링크 텍스트를 보면 검색 작업이 수행됩니다 (find_element_by_link_text 메서드 사용). 이 예에서는 웹 페이지에서 검색되는 링크 텍스트는 '지원'[행 20 ~ 22]입니다. <cr> 검색 기준이 발생하면 A (Ctrl Click) 작업이 수행되므로 해당 페이지가 '새 탭'[행 26 ~ 30]에서 열립니다. ActionChains 모듈은 해당 작업을 수행하는 데 사용됩니다. 출력은 다음과 같습니다 <p> </p> <use> 우리는 위에서 보여준 예제에 적합한 ActionChains를 사용했습니다. 여기에서 셀레늄 웹 드라이버 모듈 (Python)의 다른 모듈을 살펴볼 수 있습니다. 우리는 구현에 Python 언어를 사용했지만, 당신이 선택한 프로그래밍 언어 (C#, Java, Perl, Ruby, Php)를 사용할 수 있습니다. <iver iver> 로컬 웹 드라이버-너무 좁을 수없는 접근 방식 <the> Local WebDriver를 사용한 테스트는 제한된 수의 '브라우저 운영 체제 장치'조합으로 웹 사이트를 테스트하려는 경우 사용할 수 있습니다. 그러나 조합 수가 많으면 접근 방식이 흔들릴 수 있습니다. 모든 조합에 대한 로컬 설정을 가질 수는 없기 때문에 확장 가능한 접근 방식이 아니며 비용이 많이 드는 것으로 판명 될 수도 있습니다. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;span&gt;# Import the necessary modules for development &lt;/span&gt;&lt;span&gt;import time &lt;/span&gt;&lt;span&gt;import unit test &lt;/span&gt;&lt;span&gt;from selenium import web driver &lt;/span&gt; &lt;span&gt;# Invoke a new Firefox Instance &lt;/span&gt;ff_driver &lt;span&gt;= webdriver.Firefox() &lt;/span&gt; &lt;span&gt;# Blocking wait of 30 seconds in order to locate the element &lt;/span&gt;ff_driver&lt;span&gt;.implicitly_wait(30) &lt;/span&gt;ff_driver&lt;span&gt;.maximize_window() &lt;/span&gt; &lt;span&gt;# Open the required page &lt;/span&gt;ff_driver&lt;span&gt;.get(&quot;http://www.lambdatest.com&quot;) &lt;/span&gt; &lt;span&gt;# Sleep for 10 seconds in order to see the results &lt;/span&gt;time&lt;span&gt;.sleep(10) &lt;/span&gt; &lt;span&gt;# Close the Browser instance &lt;/span&gt;ff_driver&lt;span&gt;.close() &lt;/span&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <would> 더 나은 솔루션은 클라우드에서 크로스 브라우저 테스트를 수행 할 수있는 LambDatest와 같은 플랫폼의 기능을 활용하는 것입니다. LambDatest를 사용하면 2000 개의 다른 브라우저, 운영 체제 및 장치 구성에서 웹 사이트를 확인할 수 있습니다. 시작하려면 LambDatest에 계정을 만들어야합니다. 웹 애플리케이션을 테스트하기 위해 원격 웹 드라이버 (LambDatest에서 Selenium 그리드 사용)를 사용하므로 LambDatest 프로필에서 사용자 이름과 액세스 키에 대한 메모를 작성해야합니다. <ium ium> LambDatest 를 사용하여 원격 웹 드라이버를 사용하여 셀레늄 스크립트 실행 <know> 이제 셀레늄 웹 드라이버의 사용과 해당 접근법 사용의 잠재적 결점에 대해 알았으므로 로컬 웹 드라이버 구현을 원격 웹 드라이버에 포트 할 수있는 방법을 살펴 봅니다. 원격 웹 드라이버의 핵심 원칙은 로컬 웹 드라이버와 유사합니다. 원격 웹 드라이버 코드가 시작된 위치에서 동일한 컴퓨터에서 실행되지 않을 수 있다는 점을 제외하고. 원격 웹 드라이버는 서버가 최신 JEE 앱 서버에서 호스팅되는 간단한 Java 서비스 인 클라이언트 서버 모델을 기반으로합니다. 허브/서버는 실행 해야하는 테스트를로드합니다. 다른 클라이언트로부터 테스트 요청을 받고 요구 사항 (원하는 기능이라고 함)을 기준으로 요청을 최상의 일치/베스트 피트 클라이언트로 라우팅합니다. 예를 들어, Ubuntu OS Chrome에서 테스트를 실행 해야하는 경우 서버/허브는 서버에 등록 된 클라이언트/노드의 기능을 스캔하여 클라이언트에 일치 기능으로 요청을 전환합니다. 셀레늄 그리드 아키텍처에는 서버와 클라이언트 수가 하나뿐입니다. 원격 드라이버 API에 대한 자세한 정보는 LambDatest 웹 사이트의 다른 블로그에서 얻을 수 있습니다. <log> LambDatest에 로그인하면 LambDatest 기능 생성기를 방문하여 노드에서 요구하는 기능을 생성해야합니다. 선호하는 프로그래밍 언어 (우리의 경우 파이썬)와 적절한 OS/브라우저 조합을 선택하십시오. 기능을 설정하는 동안 스크린 샷 및 비디오 녹화 기능을 활성화 할 수 있습니다. 아래와 같이, 우리의 요구 사항은 Windows 10 시스템에 설치된 Firefox (버전 64.0)에서 실행해야합니다. 요구 사항의 기능은 다음과 같습니다 <p> 아래는 LambDatest 기능 생성기의 스크린 샷 : 입니다 </p> <h2> <be> LambDatest 서버에서 셀레늄 그리드를 사용하므로 클라우드 인프라 (원격 URL이라고도 함)에 액세스하려면 코드를 수정해야합니다. 원격 URL은 다음과 같습니다<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;span&gt;from selenium import webdriver &lt;/span&gt;&lt;span&gt;from selenium.webdriver.common.keys import Keys &lt;/span&gt; desired_cap &lt;span&gt;= { &lt;/span&gt;&lt;span&gt;'platform' : 'win10', &lt;/span&gt;&lt;span&gt;'browserName' : 'chrome', &lt;/span&gt;&lt;span&gt;'version' : &quot;67.0&quot;, &lt;/span&gt;&lt;span&gt;} &lt;/span&gt; url &lt;span&gt;= &quot;https://username:acsessToken@{LMABDA GRID URL}/wd/hub&quot; &lt;/span&gt; driver &lt;span&gt;= webdriver.Remote( &lt;/span&gt; desired_capabilities&lt;span&gt;=desired_cap, &lt;/span&gt; command_executor&lt;span&gt;= url &lt;/span&gt;&lt;span&gt;) &lt;/span&gt; driver&lt;span&gt;.implicitly_wait(1) &lt;/span&gt;driver&lt;span&gt;.get(&quot;http://www.google.com/&quot;) &lt;/span&gt;driver&lt;span&gt;.quit() &lt;/span&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <. lambdatest selenium user_name app_key url remote_url api> Parallel_Test_Example-1.py <p> </p> <a> 코드 연습, 특히 주요 변경 사항을 수행하겠습니다 <p> <ame> 사용자 이름 및 AccessToken은 gridurl에 추가됩니다. 조합은 테스트 케이스 실행이 수행되는 원격 URL을 형성합니다. <em> <iver> WebDriver.remote API는 로컬 웹 드라이버 API 대신 사용됩니다. 원격 웹 드라이버 API에는 두 가지 인수가 있습니다. 이러한 기능 요구 사항에 따라 코드가 실행되는 적절한 노드가 선택됩니다. </iver></em> <check> 테스트 상태를 확인하려면 LambDatest 대시 보드를 방문해야합니다. 기능을 형성하는 데 사용되는 빌드 이름을 통해 테스트를 검색 할 수 있습니다. LambDatest 그리드에서 실행되는 위의 테스트의 스크린 샷은 아래입니다. </check></ame></p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;span&gt;# Import the necessary modules for development &lt;/span&gt;&lt;span&gt;import time &lt;/span&gt;&lt;span&gt;import unit test &lt;/span&gt;&lt;span&gt;from selenium import web driver &lt;/span&gt; &lt;span&gt;# Invoke a new Firefox Instance &lt;/span&gt;ff_driver &lt;span&gt;= webdriver.Firefox() &lt;/span&gt; &lt;span&gt;# Blocking wait of 30 seconds in order to locate the element &lt;/span&gt;ff_driver&lt;span&gt;.implicitly_wait(30) &lt;/span&gt;ff_driver&lt;span&gt;.maximize_window() &lt;/span&gt; &lt;span&gt;# Open the required page &lt;/span&gt;ff_driver&lt;span&gt;.get(&quot;http://www.lambdatest.com&quot;) &lt;/span&gt; &lt;span&gt;# Sleep for 10 seconds in order to see the results &lt;/span&gt;time&lt;span&gt;.sleep(10) &lt;/span&gt; &lt;span&gt;# Close the Browser instance &lt;/span&gt;ff_driver&lt;span&gt;.close() &lt;/span&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <options> 출력 패널에는 디버깅하는 동안 도구가 될 수있는 다양한 옵션이 있습니다. 주요 옵션 중 일부는 다음과 같습니다. <p> </p> <s s> 예외 - 테스트 코드 실행 중에 발생하는 예외를 나열합니다. <this> 로그 -이 탭은 셀레늄 로그와 콘솔 로그를 보여줍니다. 코드를 디버깅하는 데 매우 편리 할 수 ​​있습니다 메타 데이터 - 테스트가 수행 된 테스트 환경에 대한 자세한 정보가 포함되어 있습니다. 이 경우 Test는 Windows 10 시스템에 설치된 Firefox 64.0에서 실행됩니다. 브라우저 구성에 대한 세부 정보를 얻을 수도 있습니다 <ul> <li> </li> 병렬 테스트 - 테스트 사이클을 가속화합니다 <l> LambDatest의 전체 테스트 프로세스를 가속화 할 수있는 기능 중 하나는 병렬 테스트입니다. 선택한 가격 책정 모델을 기반으로 전체 테스트 실행 시간이 줄어들도록 동시에 테스트를 실행할 수 있습니다. 우리의 경우, 우리는 두 개의 동시 세션을 가질 수 있습니다. 동시 세션이 많을수록 총 테스트 실행 시간이 짧아집니다. <li> </li> </l> </ul> <the> 병렬화의 특징을 보여주기 위해 동시 방식으로 두 가지 테스트 실행을 수행합니다. 이전 예제 (parallel_test_example-1.py)와 함께 두 번째 테스트 (Parallel_Test_Example-2.py)를 동시에 실행합니다. <p> Parallel_Test_example-2.py </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;span&gt;from selenium import webdriver &lt;/span&gt;&lt;span&gt;from selenium.webdriver.common.keys import Keys &lt;/span&gt; desired_cap &lt;span&gt;= { &lt;/span&gt;&lt;span&gt;'platform' : 'win10', &lt;/span&gt;&lt;span&gt;'browserName' : 'chrome', &lt;/span&gt;&lt;span&gt;'version' : &quot;67.0&quot;, &lt;/span&gt;&lt;span&gt;} &lt;/span&gt; url &lt;span&gt;= &quot;https://username:acsessToken@{LMABDA GRID URL}/wd/hub&quot; &lt;/span&gt; driver &lt;span&gt;= webdriver.Remote( &lt;/span&gt; desired_capabilities&lt;span&gt;=desired_cap, &lt;/span&gt; command_executor&lt;span&gt;= url &lt;/span&gt;&lt;span&gt;) &lt;/span&gt; driver&lt;span&gt;.implicitly_wait(1) &lt;/span&gt;driver&lt;span&gt;.get(&quot;http://www.google.com/&quot;) &lt;/span&gt;driver&lt;span&gt;.quit() &lt;/span&gt;</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div> <two> 파이썬 명령을 호출하여 두 개의 다른 터미널에서 두 테스트를 병렬로 실행합니다. <p> </p> 아래는 LambDatest Automation Logs의 스크린 샷입니다. 여기서 두 개의 테스트가 병렬로 실행됩니다. <p> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173958890965150.png" class="lazy" alt="크로스 브라우저 테스트에 셀레늄 웹 드라이버를 사용하는 방법" > </p> 결론 <of> 전체 테스트 프로세스를 가속화하기 때문에 LambDatest와 같은 클라우드 인프라에서 원격 웹 드라이버 API를 사용하는 데는 여러 가지 장점이 있습니다. 또한 매우 확장 가능한 접근 방식입니다. 동시성, 즉 병렬화를 사용하면 자동화 테스트에 소요되는 전체 시간을 더욱 줄일 수 있습니다. <questions> 크로스 브라우저 테스트를 위해 셀레늄 웹 드라이버에서 자주 묻는 질문 (FAQ) <pr> 크로스 브라우저 테스트를 위해 셀레늄 웹 드라이버를 설정하기위한 전제 조건은 무엇입니까? <p> 크로스 브라우저 테스트를 위해 Selenium Webdriver를 설정하기 전에 특정 전제 조건이 필요합니다. 첫째, 테스트 스크립트를 작성하는 데 사용할 프로그래밍 언어를 기본적으로 이해해야합니다. Selenium은 Java, Python, C#, Ruby 등과 같은 여러 언어를 지원합니다. 둘째, 선택한 언어를 위해 Selenium Webdriver 라이브러리를 설치해야합니다. 셋째, 테스트하려는 브라우저의 브라우저 드라이버를 설치해야합니다. 마지막으로 테스트 사례를 관리하려면 Java 또는 Java의 Testng 또는 Junit와 같은 테스트 프레임 워크 또는 Python의 유닛 테스트 또는 Pytest와 같은 테스트 프레임 워크가 필요합니다. </p> Selenium Webdriver를 사용하여 동적 웹 요소를 어떻게 처리 할 수 ​​있습니까? <p> 셀레늄 웹 드라이버에서는 동적 웹 요소를 처리하는 것이 어려울 수 있습니다. 그러나 다양한 전략을 사용하여 처리 할 수 ​​있습니다. 일반적인 방법 중 하나는 Selenium의 명시적인 대기 기능을 사용하는 것입니다. 이를 통해 DOM의 요소의 존재와 같은 특정 조건이 충족 될 때까지 스크립트가 일정 시간 동안 일시 중지 할 수 있습니다. 다른 방법은 WildCard 문자가있는 XPath 또는 CSS 선택기를 사용하여 요소 속성의 동적 부분과 일치하는 것입니다. <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173958891132332.png" class="lazy" alt="크로스 브라우저 테스트에 셀레늄 웹 드라이버를 사용하는 방법" > 더 빠른 실행을 위해 Selenium WebDriver를 사용하여 병렬 테스트를 어떻게 실행할 수 있습니까? </p> <h2> 병렬 테스트를 실행하십시오. Selenium Webdriver에서는 TestNG 또는 PyTest와 같은 병렬 실행을 지원하는 테스트 프레임 워크를 사용할 수 있습니다. testng에서는 testng.xml 파일의 Suite 태그에서 병렬 속성을 메소드 또는 테스트로 설정하고 사용하려는 스레드 수에 스레드 카운트 속성을 지정할 수 있습니다. Pytest에서는 pytest -xdist 플러그인을 사용하고 -n 옵션이있는 명령 줄에서 프로세스 수를 지정할 수 있습니다.<handle> Selenium WebDriver를 사용하여 팝업 창 또는 경고를 처리하려면 어떻게해야합니까? <h3> Selenium WebDriver는 팝업 창 또는 경고를 처리하는 경고 인터페이스를 제공합니다. switchto (). alert () 메소드를 사용하여 경고로 전환 한 다음 accept (), dismiss (), getText () 또는 sendKeys () 메소드를 사용하여 경고와 상호 작용할 수 있습니다. 경고를 처리 한 후 기본 창으로 다시 전환해야합니다. </h3> Selenium WebDriver를 사용하여 테스트 실패의 스크린 샷을 어떻게 가져갈 수 있습니까? <p> </p> Selenium WebDriver는 스크린 샷 캡처에 대한 TakessCreenshot 인터페이스를 제공합니다. getScreenshotas () 메소드를 사용하여 스크린 샷을 가져 와서 파일에 저장할 수 있습니다. 테스트 실패의 스크린 샷을 캡처하기 위해 Try-Catch 문의 캐치 블록 또는 테스트 프레임 워크의 후 테스트 방법 에서이 메소드를 호출 할 수 있습니다. <h3> Selenium WebDriver를 사용하여 드롭 다운 메뉴를 처리하는 방법? </h3> <web> 셀레늄 웹 드라이버는 드롭 다운 메뉴와 상호 작용하기 위해 선택 클래스를 제공합니다. 드롭 다운 요소를 생성자로 전달하여 선택 클래스의 객체를 만들 수 있습니다. 그런 다음 selectByvisibleText (), selectByValue () 또는 selectByIndex () 메소드를 사용하여 옵션을 선택할 수 있습니다. getOptions () 메소드를 사용하여 드롭 다운에서 모든 옵션을 얻을 수 있습니다. <p> Selenium WebDriver를 사용하여 iframes를 어떻게 처리 할 수 ​​있습니까? </p> <h3> Selenium WebDriver는 switchto를 사용하여 iframes로 전환 할 수 있습니다. ) .frame () 메소드. 인덱스, 이름 또는 ID 또는 iframe 요소를이 메소드로 전달할 수 있습니다. iframe과 상호 작용 한 후 switchto (). defaultContent () 메소드를 사용하여 기본 창으로 다시 전환해야합니다. </h3> <p> Selenium webDriver를 사용하여 쿠키를 처리하는 방법은 무엇입니까? </p> Selenium WebDriver는 방법을 제공합니다. 쿠키와 상호 작용합니다. AddCookie () 메소드를 사용하여 쿠키, getCookiEnamed () 메소드를 추가하여 특정 쿠키, 모든 쿠키를 얻기위한 getCookies () 메소드 및 deleteCookie (), deletecookienamed () 또는 deleteallcookies () 메소드를 추가 할 수 있습니다. 쿠키 삭제. <ies ies> <h3> 셀레늄 웹 드라이버를 사용하여 Ajax 통화를 어떻게 처리 할 수 ​​있습니까? </h3> 셀레늄 웹 드라이버에서 Ajax 통화 처리는 비동기식이기 때문에 까다로울 수 있으며 데이터를 얻는 데 시간이 걸릴 수 있습니다. Ajax 호출이 완료되고 데이터가로드 될 때까지 대기 대기를 위해 명시적인 대기를 사용하여 셀레늄 웹 드라이버를 사용하여 키보드 및 마우스 이벤트를 처리 할 수 ​​있습니까? <p> 셀레늄 웹 드라이버는 작업을 제공합니다. 키보드 및 마우스 이벤트를 처리하는 클래스. 액션 클래스의 객체를 생성하고 Click (), doubleClick (), contextClick (), dragandDrop (), keyup () 등과 같은 메소드를 사용하여 다양한 키보드 및 마우스 작업을 시뮬레이션 할 수 있습니다. 🎜></p></ies></web></handle> </h2></pr></questions></of></two></the></this></s></options></a></.></be> </h2></log></know></ium></would></the></iver></use></cr></our></er></in></exec></oper></p></was></..></through>

위 내용은 크로스 브라우저 테스트에 셀레늄 웹 드라이버를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿