handling web tables frames
지난 Selenium WebDriver 튜토리얼에서 우리는 일반적으로 다양한 것을 배웠습니다. 일상적으로 사용되는 Selenium WebDriver 명령 Selenium 스크립트에서 iframe 및 예외 처리와 같은 중요한 주제를 포함합니다.
우리의 포괄적 인 발전 Selenium에 대한 튜토리얼 시리즈 ,이 튜토리얼에서는 다음에 대해 논의 할 것입니다. 웹 테이블, iframe 및 동적 요소 처리 웹 프로젝트의 필수 부분입니다.
이 자습서는 셀레늄 스크립트의 3 가지 다른 주제와 처리 메커니즘으로 구성됩니다.
- 웹 테이블 / HTML 테이블
- 프레임
- 동적 요소
학습 내용 :
# 1) 웹 테이블 / HTML 테이블
이 모듈에서는 웹 페이지의 웹 테이블 또는 HTML 테이블, HTML에서 사용할 수있는 태그 및 웹 테이블을 동적으로 처리하는 방법에 대해 알아 봅니다.
웹 테이블은 기본적으로 행 및 열 형식으로 논리적으로 저장되는 요소 그룹입니다. 웹 페이지에서 유사한 정보를 구성하는 데 사용됩니다.
다음은 Html 테이블의 예입니다.
다음은 HTML 테이블의 HTML 구조 스 니펫입니다.
아래 태그는 일반적으로 html 테이블에 정의되어 있습니다.
1. 'table'태그는 HTML 테이블을 정의합니다.
2.’tbody’태그는 행과 열의 컨테이너를 정의합니다.
3.’tr’은 HTML 테이블의 행을 정의합니다.
4.'td '/'th '는 HTML 테이블의 열을 정의합니다.
웹 테이블의 세부 사항을 찾으십시오.
웹 테이블을 처리 할 수있는 방법에는 여러 가지가 있습니다.
C ++ 바이너리 트리 예제
접근법 # 1 :
아래는 html 테이블에있는 셀 중 하나의 xpath입니다. '이름'이라고 말합시다
// div (@ id =’main’) / table (1) / tbody / tr (1) / th (1)
tr (1)은 첫 번째 행을 정의하고 th (1)은 첫 번째 열을 정의합니다.
많은 행과 열이 항상 일정하다면 HTML 테이블에 항상 5 개의 행과 3 개의 열이 있다고 가정 해 보겠습니다.
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
행 및 열 번호를 제외하고 XPath의 각 구성 요소는 동일하게 유지됩니다. 따라서 위에서 언급 한대로 각 행과 열에 대해 'for 루프'를 사용하여 반복 할 수 있습니다.
접근법 # 2 :
첫 번째 방법은 크기가 변경되지 않고 항상 동일하게 유지되는 테이블에 가장 적합합니다. 위의 접근 방식은 동적으로 변경되는 웹 테이블에 대한 완벽한 솔루션이 아닙니다.
위의 HTML 표를 예로 들어 보겠습니다.
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum 1 단계 : 먼저 전체 HTML 테이블을 가져 와서 웹 요소 유형의 변수 'htmltable'에 저장합니다.
2 단계 : 태그 이름이 'tr'인 모든 행을 가져 와서 모든 요소를 웹 요소 목록에 저장합니다. 이제 'tr'태그가있는 모든 요소가 'rows'목록에 저장됩니다.
3 단계 : 각 행을 반복하고 태그가있는 요소 목록을 가져옵니다. ‘th’. ‘rows.get (0)’ 첫 번째 행을 제공하고 ‘findElements (By.tagName ( 'th' )) ' 행에 대한 열 목록을 제공합니다.
4 단계 : 다음을 사용하여 반복 ‘columns.getsize ()’ 각 셀의 세부 정보를 가져옵니다.
노트 : 위의 접근 방식은 테이블 크기가 동적으로 변경되는 경우 가장 적합합니다.
이것으로 셀레늄에서 웹 테이블을 처리하는 방법에 대한 주제를 마칩니다. 다음으로 프레임 내부의 요소 처리에 대해 배웁니다.
# 2) 프레임
이 섹션에서는 웹 페이지의 프레임과 프레임을 식별하는 방법에 대해 알아 봅니다. 또한 Selenium WebDriver에서 프레임을 처리하는 방법을 알아 봅니다.
많은 개발자가 프레임 안에 요소를 배치하는 것을 좋아합니다. 프레임은 몇 가지 요소를 그룹화 할 수있는 컨테이너와 같습니다.
프레임 식별 :
요소가 프레임 내부에 있는지 여부를 알 수있는 다양한 방법
#1 . 요소를 마우스 오른쪽 버튼으로 클릭합니다. '이 프레임'옵션을 사용할 수 있는지 확인합니다. 이 프레임 옵션을 사용할 수 있으면 요소가 프레임 내부에 있음을 의미합니다.
# 2 . 웹 페이지의 페이지 소스를보고 'iframe'에 사용할 수있는 태그가 있는지 확인합니다.
일할 최고의 게임 개발자

웹 페이지의 프레임 수 확인 :
모든 프레임에는 'iframe'이라는 태그 이름이 있습니다.
목록 frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
위의 예에서 : frameList 모든 프레임 목록이 있고 frameList.size () 프레임 수를 제공합니다.
프레임 내부의 요소 처리 :
요소가 프레임 안에 있으면 컨트롤이 먼저 프레임으로 전환 된 다음 요소에서 작동을 시작해야합니다.
1 단계 : 프레임 내에서 전환하려면 :
driver.switchTo (). frame (1); // 프레임 번호를 매개 변수로 전달합니다.
또는
driver.switchTo (). frame ( '프레임 이름'); // 프레임 이름을 매개 변수로 전달합니다.
또는
driver.switchTo (). frame (“프레임의 xpath”);
2 단계 : 프레임 내부 전환 후 셀레늄은 요소에서 작동 할 수 있습니다.
driver.findElement ( // ********************************************);
driver.findElement ( // *******************************************);
여기서는 프레임 내부의 요소를 처리하는 방법을 배웠고 다음으로 동적 요소를 처리하는 다양한 방법에 대해 다룰 것입니다.
# 3) 동적 요소
이 섹션에서는 동적 요소를 처리하고 일반 Xpath를 구성하는 다양한 방법을 배웁니다.
일부 시나리오에서 요소 속성은 동적으로 변경됩니다. 'ID', '이름'등이 될 수 있습니다.
예 : 사용자 이름 필드의‘id’가‘username_123’이고 XPath가
// * (@ id =’username_123 ′) 그러나 페이지를 다시 열면‘username’필드의‘id’가 변경되었을 수 있고 새 값이‘username_234’일 수 있습니다.
이 경우 필드의 ID가 다른 값으로 변경되어 셀레늄이 이전에 전달한 XPath를 찾을 수 없기 때문에 테스트가 실패합니다.
문제 유형에 따라 다양한 접근 방식이 있습니다.
문제 유형 1: 속성 값의 일부가 변경되는 경우 .
예 : 위의 예와 같이 id 값은 변하지 만 일정한 필드는 거의 없습니다.
‘username_123’은‘username_234’로 변경되었지만‘username’은 항상 일정하게 유지되었습니다.
다음과 같이 xpath를 구성 할 수 있습니다.
driver.findElement (By.xpath ( “// * (contains (@ id,’username’))” )). sendKeys ( '사용자 이름' );
운전사 . findElement (By.xpath ( “// * (starts-with (@ id,’user’))” )). sendKeys ( '사용자 이름' );
'포함' id에 하위 문자열 사용자 이름이 포함되어 있는지 확인하는 Java 메서드입니다.
starts-with () 'user'로 시작하는 속성이 있는지 확인합니다.
문제 유형 2: 속성의 전체 값이 동적으로 변경되는 경우.
일할 비디오 게임 회사
이 경우에도 다른 접근 방식이있을 수 있습니다.
예를 들면 : 'login'필드의 id가 동적으로 변경되고 사용할 상수 값이없는 경우 contains method.
해결책 : sendKeys 사용.
Selenium은 기능 키를 사용하기위한 다양한 API를 제공합니다. 예를 들어 탭 키, Enter 키, F5 등.
1 단계 : 암호를 입력
driver.findElement (By.id ( '암호' )). sendKeys ( 'password'));
2 단계 : 주요 기능을 사용하여 요소로 이동합니다.
driver.findElement (By.id ( '암호' )). sendKeys (키. 시작하다 ));
또는
driver.findElement (By.id ( '암호' )). sendKeys (키. 탭 ));
결론
웹 테이블, 프레임 및 동적 요소는 모든 웹 프로젝트의 필수 부분입니다. 웹 테이블과 동적 요소를 처리하는 효과적인 코드를 작성하는 것은 항상 바람직합니다.
동적 요소를 처리하는 동안 매우 유용한 일반 XPath의 구성을 이해합니다. 프레임의 경우 스크립트는 프레임을 전환 한 다음 요소에서 작동해야합니다.
다음 튜토리얼 # 19 : 다음 Selenium 튜토리얼에서 우리는 예외 유형 및 Selenium 스크립트의 Java에서 예외를 처리하는 방법에 대해 설명합니다.
웹 테이블, 프레임 및 동적 요소 처리와 관련된 쿼리가 있으면 게시하십시오.
추천 도서
- Selenium 스크립트 빌드를 위해 Chrome 및 IE 브라우저에서 요소를 찾는 방법 – Selenium Tutorial # 7
- 웹 페이지에서 드롭 다운 요소를 처리하기위한 Selenium Select 클래스 사용 – Selenium Tutorial # 13
- Selenium 로케이터 : Selenium에서 XPath를 사용하여 웹 요소 식별 (예제)
- CSS 선택기를 사용하여 Selenium 스크립트의 웹 요소를 식별하는 방법 – Selenium Tutorial # 6
- 다양한 유형의 WebDriver 명령을 사용하여 웹 요소의 가시성 확인 – Selenium Tutorial # 14
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- Selenium과 JMeter의 통합
- Selenium WebDriver switchTo () 메서드를 사용하여 iFrame 처리