웹 테이블을 처리하는 방법 Selenium 웹드라이버

웹 테이블이란? Selenium?

A 웹 테이블 in Selenium 데이터나 정보를 표 형식으로 표현하는 데 사용되는 WebElement입니다. 데이터 또는 정보 표시yed 정적이거나 동적일 수 있습니다. 웹 테이블과 해당 요소는 WebElement 함수와 로케이터를 사용하여 액세스할 수 있습니다. Selenium. 웹 테이블의 일반적인 예는 제품 사양 표시입니다.yed 전자상거래 플랫폼에서.

HTML 웹 테이블 읽기

HTML 테이블 내에 있는 요소(일반적으로 텍스트)에 액세스해야 하는 경우가 있습니다. 그러나 웹 디자이너가 테이블의 특정 셀에 ID 또는 이름 속성을 제공하는 경우는 거의 없습니다. 따라서 “By.id()”, “By.name()”, “By.cssSelector()”와 같은 일반적인 방법을 사용할 수 없습니다. 이 경우 가장 신뢰할 수 있는 옵션은 "By.xpath()" 메서드를 사용하여 액세스하는 것입니다.

웹 테이블을 처리하는 방법 Selenium

웹 테이블을 처리하려면 아래 HTML 코드를 고려하세요. Selenium.

테이블에 대한 XPath를 작성하는 방법 Selenium

우리는 xpath "네 번째 셀"이라는 텍스트가 포함된 셀의 내부 텍스트를 가져옵니다.

테이블에 대한 XPath를 작성하는 방법 Selenium

1단계 – 상위 요소 설정(표)

WebDriver의 XPath 로케이터는 항상 다음으로 시작합니다. double 슬래시 "//" 다음에 상위 요소가 옵니다.. 우리는 웹 테이블을 다루고 있기 때문에 Selenium, 상위 요소는 항상 꼬리표. 우리의 첫 번째 부분 Selenium 따라서 XPath 테이블 로케이터는 "//table"로 시작해야 합니다.

Selenium 웹 테이블 예

2단계 - 하위 요소 추가

바로 아래에 있는 요소 ~이다 그래서 우리는 그렇게 말할 수 있습니다 의 "자식"이다 . 그리고 또한, 의 "부모"입니다 . XPath의 모든 하위 요소는 아래 표시된 코드처럼 하나의 슬래시 "/"로 구분되어 상위 요소의 오른쪽에 배치됩니다.

Selenium 웹 테이블 예

3단계 - 조건자 추가

그만큼 요소에는 두 개가 포함됩니다. 태그. 이제 우리는 이 두 가지를 말할 수 있습니다. 태그는 다음의 "하위"입니다. . 결과적으로 우리는 다음과 같이 말할 수 있습니다. 둘 다의 부모입니다. 강요.

우리가 결론 내릴 수 있는 또 다른 사실은 두 가지입니다. 요소는 형제입니다. 형제는 동일한 상위 요소를 갖는 하위 요소를 참조합니다..

에 도착하려면 ("네 번째 셀"이라는 텍스트가 있는 셀) 액세스하려면 먼저 그리고 처음은 아닙니다. 간단히 "//table/tbody/tr"이라고 쓰면 첫 번째 항목에 액세스하게 됩니다. 꼬리표.

그럼 두 번째 항목에 어떻게 액세스하나요? 그 다음에? 이에 대한 대답은 다음을 사용하는 것입니다. 술어.

술어는 numbers 또는 한 쌍의 정사각형으로 둘러싸인 HTML 속성 brackets 하위 요소를 형제 요소와 구별하는 "[ ]". 이후 우리가 액세스해야 하는 것은 두 번째 항목이므로 “[2]”를 조건자로 사용하겠습니다.

Selenium 웹 테이블 예

조건자를 사용하지 않으면 XPath는 첫 번째 형제에 액세스합니다. 그러므로 우리는 첫 번째로 접근할 수 있다. 이러한 XPath 코드 중 하나를 사용합니다.

Selenium Xpath를 사용하는 웹 테이블

4단계 - 적절한 조건자를 사용하여 후속 하위 요소 추가

우리가 액세스해야 할 다음 요소는 두 번째 요소입니다. . 2단계와 3단계에서 배운 원칙을 적용하여 XPath 코드를 아래와 같이 완성합니다.

웹 테이블 Selenium Xpath 사용

이제 올바른 XPath 로케이터가 있으므로 아래 코드를 사용하여 원하는 셀에 이미 액세스하고 내부 텍스트를 얻을 수 있습니다. 위의 HTML 코드를 C 드라이브에 “newhtml.html”로 저장했다고 가정합니다.

웹 테이블 Selenium Xpath 사용

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(
		By.xpath("//table/tbody/tr[2]/td[2]")).getText(); 	
        System.out.println(innerText); 
	driver.quit();
	}
}

웹 테이블 Selenium Xpath 사용

중첩 테이블에 액세스

위에서 설명한 동일한 원칙이 중첩 테이블에 적용됩니다. 중첩 테이블은 다른 테이블 내에 위치한 테이블입니다.. 아래에 예가 나와 있습니다.

중첩된 테이블에 액세스하는 방법 Selenium

"//parent/child" 및 조건자를 사용하여 텍스트 "4-5-6"이 있는 셀에 액세스하려면 concepts 이전 섹션에서 우리는 아래의 XPath 코드를 생각해 낼 수 있을 것입니다.

중첩된 테이블에 액세스하는 방법 Selenium


아래 WebDriver 코드는 우리가 액세스하는 셀의 내부 텍스트를 검색할 수 있어야 합니다.

중첩된 테이블에 액세스 Selenium

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(
		By.xpath("//table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]")).getText(); 		
        System.out.println(innerText); 
	driver.quit();
}

아래 출력은 내부 테이블에 성공적으로 액세스되었음을 확인합니다.

중첩된 테이블에 액세스 Selenium

속성을 조건자로 사용

요소가 HTML 코드 내에 깊게 작성되어 조건자에 사용할 숫자를 결정하기가 매우 어려운 경우 해당 요소의 고유 속성을 대신 사용할 수 있습니다.

아래 예에서 "뉴욕에서 시카고까지" 셀은 Mercury Tours 홈페이지의 HTML 코드 깊숙한 곳에 위치합니다.

Selenium 속성을 조건자로 사용하는 웹 테이블 예

Selenium 속성을 조건자로 사용하는 웹 테이블 예

이 경우 테이블의 고유 속성(너비=”270″)을 조건자로 사용할 수 있습니다. 속성은 앞에 @ 기호를 붙여서 조건자로 사용됩니다.. 위의 예에서 “뉴욕에서 시카고까지” 셀은 첫 번째 위치에 있습니다. 네번째 , 따라서 XPath는 아래와 같아야 합니다.

Selenium 속성을 조건자로 사용하는 웹 테이블 예

Java에 XPath 코드를 넣을 때 이스케이프 문자 백슬래시 "\"를 사용해야 한다는 점을 기억하십시오. double By.xpath()의 문자열 인수가 조기에 종료되지 않도록 "270" 양쪽에 따옴표를 붙입니다.

Selenium 속성을 조건자로 사용하는 웹 테이블 예

이제 아래 코드를 사용하여 해당 셀에 액세스할 준비가 되었습니다.

Selenium 속성을 조건자로 사용하는 웹 테이블 예

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/newtours/";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(By
		.xpath("//table[@width=\"270\"]/tbody/tr[4]/td"))
		.getText(); 		
	System.out.println(innerText); 
	driver.quit();
}

Selenium 속성을 조건자로 사용하는 웹 테이블 예

바로 가기: Inspect 요소를 사용하여 테이블에 액세스 Selenium

요소의 수나 속성을 얻기가 매우 어렵거나 불가능한 경우 XPath 코드를 생성하는 가장 빠른 방법은 요소 검사를 사용하는 것입니다.

Mercury Tours 홈페이지에서 아래 예를 살펴보세요.

Selenium 속성을 조건자로 사용하는 웹 테이블 예

1단계

Firebug를 사용하여 XPath 코드를 얻으세요.

Selenium 속성을 조건자로 사용하는 웹 테이블 예

2단계

첫 번째 "테이블" 상위 요소를 찾아 그 왼쪽에 있는 모든 항목을 삭제합니다.

Selenium 속성을 조건자로 사용하는 웹 테이블 예

3단계

코드의 나머지 부분 앞에 다음을 붙입니다. double 슬래시 "//"를 붙여서 WebDriver 코드에 복사하세요.

Selenium 속성이 포함된 웹 테이블 예

아래 WebDriver 코드는 우리가 액세스하는 요소의 내부 텍스트를 성공적으로 검색할 수 있습니다.

Selenium 속성이 포함된 웹 테이블 예

public static void main(String[] args) {
	String baseUrl = "http://demo.guru99.com/test/newtours/";
	WebDriver driver = new FirefoxDriver();

	driver.get(baseUrl);
	String innerText = driver.findElement(By
		.xpath("//table/tbody/tr/td[2]"
		+ "//table/tbody/tr[4]/td/"
		+ "table/tbody/tr/td[2]/"
		+ "table/tbody/tr[2]/td[1]/"
		+ "table[2]/tbody/tr[3]/td[2]/font"))
		.getText(); 		
	System.out.println(innerText); 
	driver.quit();
}

요약

  • By.xpath()는 일반적으로 WebTable의 요소에 액세스하는 데 사용됩니다. Selenium.
  • 요소가 HTML 코드 내에 깊게 작성되어 조건자에 사용할 숫자를 결정하기가 매우 어려운 경우 대신 해당 요소의 고유 속성을 사용할 수 있습니다. Selenium 테이블 요소를 가져옵니다.
  • 속성은 앞에 @ 기호를 붙여서 조건자로 사용됩니다.
  • WebTable에 액세스하기 위해 Inspect 요소 사용 Selenium