자동화테스트/Selenium2018. 12. 2. 08:00

간단한 XPath 가 테스트 스크립트를위한 복잡한 웹 요소를 찾을 수 없다면 XPath 1.0 라이브러리의 함수를 사용해야합니다. 이러한 함수를 조합하여 더 구체적인 XPath를 만들 수 있습니다. 그런 3 가지 기능에 대해 논의 해 보겠습니다.

  1. 내용
  2. 형제
  3. 선조

자세히 연구 해 봅시다.

포함 : XPath에서 'contains'함수를 사용하여 특정 텍스트 값과 일치하는 모든 요소를 ​​추출 할 수 있습니다.

전의. 여기서 우리는 앵커를 찾고 있습니다. 텍스트는 'SAP M'으로 포함됩니다.

"// h4 / a [contains (text (), 'SAP M')]"

XPath에는 Selenium WebDriver의 형제, 조상 함수가 포함되어 있습니다.

Sibling : 형제 키워드를 사용하여 다른 요소와 관련된 웹 요소를 가져올 수 있습니다.

예 : 'a'의 형제 요소를 기준으로 'h4'를 찾습니다.

"//div[@class='canvas- graph']//a[@href='/accounting.html'][i[@class='icon-usd']]/following-sibling::h4"

XPath에는 Selenium WebDriver의 형제, 조상 함수가 포함되어 있습니다.

Ancestor : 부모 요소를 기반으로 요소를 찾으려면 XPath의 ancestor 특성을 사용할 수 있습니다.

XPath에는 Selenium WebDriver의 형제, 조상 함수가 포함되어 있습니다.

예제를 사용하여이 3 가지 기능을 이해할 수 있습니다.

테스트 단계

참고 : 튜토리얼 제작 날짜 이후 Guru99 홈페이지가 업데이트되어 테스트를 실행하기 위해 데모 사이트를 사용하십시오.

  1. http://demo.guru99.com/test/guru99home/으로 이동  하십시오.
  2. '가장 인기있는 코스'섹션에서 텍스트가 'SELENIUM'인 WebElement의 형제 인 모든 웹 요소를 검색합니다.
  3. 우리는 contains, ancestor 및 형제 함수를 사용하여 요소를 찾습니다.

    XPath에는 Selenium WebDriver의 형제, 조상 함수가 포함되어 있습니다.

USING 포함 및 형제

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class SiblingAndParentInXpath {

    @Test

    public void testSiblingAndParentInXpath(){

    	WebDriver driver;
    	String driverPath = "C:\\geckodriver.exe";
    	System.setProperty("webdriver.firefox.marionette", driverPath);
        driver = new FirefoxDriver();        
        
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://demo.guru99.com/test/guru99home/");

        // 'SELENIUM'컨트롤의 형제 인 'Popular course'내의 검색 요소. 먼저 'h2'라는 텍스트가 '가장 인기있는 코스'중 몇 가지를 찾은 다음 부모 요소 인 ' div '라고 입력하면이 div에서 텍스트가'SELENIUM '인 링크를 찾은 다음 마침내이 링크의 모든 형제 요소 ('SELENIUM ')를 찾습니다.
        List <WebElement> dateBox = driver.findElements(By.xpath("//h2[contains(text(),'A few of our most popular courses')]/parent::div//div[//a[text()='SELENIUM']]/following-sibling::div[@class='rt-grid-2 rt-omega']"));

        // '인기 코스'에서 'SELENIUM'으로 명명 된 요소의 형제 인 모두를 인쇄하십시오.
        for (WebElement webElement : dateBox) {
            System.out.println(webElement.getText());
        }     

        driver.close();
    }
}

출력은 다음과 같습니다.

XPath에는 Selenium WebDriver의 형제, 조상 함수가 포함되어 있습니다.

조상 함수(Ancestor function) 사용하기

우리는 '조상'이라는 함수를 사용하여 동일한 기능을 수행 할 수 있습니다.

이제 'SELENIUM'이라는 앵커의 조상의 도움으로 '인기 코스'섹션의 모든 요소를 ​​검색해야한다고 가정합니다.

여기에 우리의 xpath 쿼리는 다음과 같습니다.

"//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega '] / following-sibling :: div"

완전한 코드

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class AncestorInXpath{

@Test

    public void testAncestorInXpath(){

        WebDriver driver = new FirefoxDriver();             
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://demo.guru99.com/test/guru99home/");

        // '인기 코스'섹션의 모든 요소 검색 
		// 텍스트가 'SELENIUM'인 앵커의 조상의 도움으로

        List <WebElement> dateBox = driver.findElements(By.xpath("//div[.//a[text()='SELENIUM']]/ancestor::div[@class='rt-grid-2 rt-omega']/following-sibling::div"));

               // '인기 코스'에서 'SELENIUM'으로 명명 된 요소의 형제 인 모두를 인쇄하십시오.

        for (WebElement webElement : dateBox) {
            System.out.println(webElement.getText());
        }
     
        driver.quit();
    }
}
   

출력은 다음과 같이 보입니다.

XPath에는 Selenium WebDriver의 형제, 조상 함수가 포함되어 있습니다.

개요:

  • 일반 xpath를 사용하여 요소를 찾을 수없는 경우가 있습니다. 이러한 상황에서 우리는 xpath 질의와 다른 함수가 필요하다.
  • contains, parent, ancestors, following-sibling 등과 같은 몇 가지 중요한 xpath 함수가 있습니다.
  • 이러한 함수의 도움으로 복잡한 xpath 표현식을 만들 수 있습니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터