어떻게 셀렌 원소의 텍스트를 얻습니까?

36371 단어 automationseleniumjava
Selenium은 가장 광범위하게 응용되는 자동화 테스트 도구로 인력을 줄이고 우리가 매일 만나는 장면 테스트를 효과적으로 처리할 수 있다.이 장면 중 하나는 Selenium에서 요소의 텍스트를 가져오는 방법입니다.Selenium은 요소의 텍스트를 가져오는 데 사용되는 getText() 방법을 제공합니다.그것은 웹 페이지에서 요소의 텍스트 값을 읽는 데 사용할 수 있다.
이 문서에서는 Selenium WebDriver에서 제공하는 getText () 방법으로 요소의 텍스트를 가져오는 방법을 이해할 것입니다.웹 요소에 존재할 수 있는 웹 페이지에서 텍스트를 가져오는 방법을 알 것입니다.getText () 방법의 다양한 응용 프로그램을 배울 것입니다. 본고가 끝날 때 Selenium WebDriver 텍스트를 검증할 수 있고, 심지어는 텍스트를 읽고 실행할 수 있습니다.
먼저 용어를 정의해 보겠습니다.

getText () 방법은 무엇입니까?


Selenium WebDriver 인터페이스는 getText () 방법을 미리 정의했습니다. 이 방법은 특정한 웹 요소의 텍스트를 검색하는 데 도움이 됩니다.이 방법은 웹 요소의 보이는 내부 텍스트를 가져옵니다. (CSS는 숨기지 않습니다.)
각 용어에 대해 자세히 살펴보겠습니다.

내부 텍스트


내부 텍스트는 모든 태그의 열기와 닫기 사이에 나타나는 텍스트입니다.예를 들어, 다음 HTML 코드 세그먼트를 고려합니다.
<p> Let us begin! </p>
<span> Hello World.. </span>
<button> Click Me! </button>
위 코드를 HTML(.HTML 파일)로 저장하면 다음과 같은 컨텐트가 포함된 창이 열립니다.

그래서 여기서부터 시작합시다!안녕, 세상...나를 클릭해!는 위 태그 사이의 텍스트입니다.따라서 이것들은 내재된 텍스트이다.

CSS에 의해 숨겨지지 않음


위 정의에서 CSS가 숨겨지지 않았다는 점도 언급했다.우리도 이 점을 알게 하다.다음 HTML 세션 고려 -
<p> Let us begin! </p>
<span style = “display:none”>This text will be hidden </span>
<button> Click Me! </button>
위 코드에서는 CSS에 의해 숨겨졌기 때문에 span 태그 내의 텍스트가 UI에 표시되지 않습니다.

내부 텍스트와 CSS의 숨겨진 의미를 알고 있습니다. Selenium의 getText () 방법으로 요소의 내부 텍스트를 가져옵니다. 이 요소는 CSS에 숨겨지지 않고 문자열 값으로 되돌아옵니다.간단하게 말하면 브라우저에 텍스트로 표시된 내용은 getText () 방법으로 되돌아옵니다.웹 요소와 대응하는 텍스트가 없으면 빈 문자열을 되돌려줍니다.
지금까지, 우리는 웹 페이지에서 어떻게 요소의 텍스트를 얻는지 이미 이해했다.이제 getText () 방법의 실제 응용부터 시작합시다.

getText () 방법으로 제목이나 단락 가져오기


우리는 모두 제목이나 단락의 내용이 없는 사이트는 완전하지 않다는 것을 안다.때때로 우리가 로그인한 웹 페이지의 텍스트를 검증해야 한다.Selenium의 getText () 방법은 텍스트를 검색하고 필요한 작업을 수행하는 데 도움을 줍니다.다음 코드에서, 우리는 웹 페이지에서 제목 텍스트를 읽고, 예상 값과 비교한 다음 결과를 인쇄합니다.여기서 우리는 this demo website를 사용하여 이 자동화 예시를 실천할 것이다.
package getText;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;


public class TextThruHeading {

    WebDriver driver;

    @BeforeTest
    public void setUp(){
    System.setProperty("webdriver.chrome.driver","E:\\Softwares\\chromedriver.exe");
          driver = new ChromeDriver();
    }

    @Test
    public void headingText(){
          driver.get("https://phptravels.com/demo/");
          driver.manage().window().maximize();
          String expectedHeading = "APPLICATION TEST DRIVE";

          //Storing the text of the heading in a string
          String heading = driver.findElement(By.xpath("//div[@class='text']//h2")).getText();
          if(expectedHeading.equalsIgnoreCase(heading))
                System.out.println("The expected heading is same as actual heading --- "+heading);
          else
                System.out.println("The expected heading doesn't match the actual heading --- "+heading);
    }
    @AfterTest
    public void tearDown(){
          driver.quit();
    }
}
상기 코드를 실행하면 다음과 같은 결과를 볼 수 있습니다 -

이와 유사한 방법으로 모든 단락 요소의 XPath를 작성하고 요소의 텍스트를 검색할 수 있습니다.

getText() 방법을 사용하여 드롭다운 텍스트 가져오기


많은 경우, 우리는 특정한 하단 목록 값을 선택하거나, 하단 목록에서 텍스트 값을 가져와야 한다.우리도 getText () 방법을 사용하여 이런 상황을 처리할 수 있다.이제 드롭다운 목록에서 값을 가져오고 콘솔에서 같은 값을 인쇄하는 방법을 볼 수 있습니다.아래 메뉴의 스크립트를 실행하기 위해서 this demo website 를 사용했습니다.
package getText;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TextThruDropdown {

WebDriver driver;

    @BeforeTest
    public void setUp(){
        System.setProperty("webdriver.chrome.driver","E:\\Softwares\\chromedriver.exe");
          driver = new ChromeDriver();
    }

    @Test
    public void headingText(){
          driver.get("https://demoqa.com/select-menu");
          driver.manage().window().maximize();
          // Working on the third dropdown, viz, Old Style Select menu
          WebElement drpdn = driver.findElement(By.id("oldSelectMenu"));
          System.out.println("Clicking on the drop down");
          Select se = new Select(drpdn);
          List<WebElement> opt = se.getOptions();
          System.out.println("The total number of options in the dropdown is : " +opt.size());

          //Iterate through the list of options
          System.out.println("The dropdown values are--- ");
          for(WebElement options : opt){
                System.out.println(options.getText());
          }

    }
    @AfterTest
    public void tearDown(){
          driver.quit();
    }
}
코드를 실행할 때, 우리는 인쇄 밑에 있는 내용 값의 결과를 볼 수 있다 -

getText () 방법으로 경보 텍스트 가져오기


단락 및 드롭다운 목록처럼 사용자가 경고 텍스트를 검색할 수도 있습니다.경보는 많은 응용 프로그램에서 흔히 볼 수 있기 때문에 그 중의 텍스트를 검사해야 할 수도 있다.다음 코드는 경고에서 텍스트를 추출하여 인쇄합니다this demo website.
package getText;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class AlertText {
    WebDriver driver;

          @BeforeTest
          public void setUp(){
              System.setProperty("webdriver.chrome.driver","E:\\Softwares\\chromedriver.exe");
                driver = new ChromeDriver();
          }

          @Test
          public void alertText(){
                driver.get("https://demoqa.com/alerts");
                driver.manage().window().maximize();
                driver.findElement(By.id("confirmButton")).click();
                String txt = driver.switchTo().alert().getText();
                System.out.println("The text is - " +txt);
          }
          @AfterTest
          public void tearDown(){
                driver.quit();
          }
}
코드를 실행하여 컨트롤러 창에 경보의 텍스트가 인쇄되었는지 확인하십시오.

getText() 방법을 사용하여 빈 텍스트 값을 가져오려면 어떻게 합니까?


어떤 경우 웹 요소는 텍스트 값을 포함하지 않을 수도 있습니다.만약 우리가 getText () 방법을 이런 요소에 적용한다면, 무슨 일이 일어날 것 같습니까?앞에서 말한 바와 같이, 우리는 빈 문자열을 보답할 것이다.다음 예를 살펴보겠습니다.
제목 그림을 가져왔습니다. 텍스트가 없습니다. 요소에 getText () 방법을 사용할 것입니다.콘솔에서 반환된 빈 문자열에 오류가 없는 것을 볼 수 있습니다.

코드는 다음과 같다-
package getText;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class NullText {

WebDriver driver;

    @BeforeTest
    public void setUp(){
        System.setProperty("webdriver.chrome.driver","E:\\Softwares\\chromedriver.exe");
          driver = new ChromeDriver();
    }

    @Test
    public void headingText(){
          driver.get("https://demoqa.com");
          driver.manage().window().maximize();
          WebElement ele = driver.findElement(By.xpath("//header//img"));
          System.out.println("The header text is - " +ele.getText());

    }
    @AfterTest
    public void tearDown(){
          driver.quit();
    }
}
상기 코드를 실행할 때, print 문장은 getText () 방법으로 되돌아오는 빈 문자열을 보여 줍니다.

Selenium WebDriver에서 getText () 와 getattribute () 사이의 차이


사람들은 보통 getText와 getAttribute 방법에 대해 곤혹스러움을 느낀다.이 두 가지 방법은 완전히 다르고 되돌아오는 값도 다르다는 것을 주의하세요.

getText () 방법


getText () 방법은 웹 요소의 보이는 내부 텍스트를 되돌려줍니다.getText () 방법을 이해하려면 위의 예시를 참고하십시오.

getattribute () 방법


다른 한편 getattribute () 방법은 우리가 검색하고자 하는 속성의 값을 가져옵니다.getattribute() 방법을 실행하는 예제에서 알아봅니다.

위의 그림에서 id, 유형, 클래스, 자리 차지 문자와 같은 입력 표시의 여러 속성을 볼 수 있습니다.getattribute() 메서드는 매개변수로 전달되는 속성에 해당하는 값을 읽어들입니다.코드를 통해 알아봅시다 -
package getText;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class GetAttribute {
          WebDriver driver;

@BeforeTest
public void setUp(){
    System.setProperty("webdriver.chrome.driver","E:\\Softwares\\chromedriver.exe");
    driver = new ChromeDriver();
}

@Test
public void attributeText(){
    driver.get("https://www.lambdatest.com/");
    driver.manage().window().maximize();
// This line would store the attribute value as String variable   
String attributeValue = driver.findElement(By.id("useremail")).getAttribute("placeholder");
    System.out.println("The value is - " + attributeValue);
}
@AfterTest
public void tearDown(){
    driver.quit();
}     
}
코드를 실행할 때, 자리 차지 문자 속성의 값이 인쇄되는 것을 볼 수 있습니다.

getText () 방법 및 getattribute () 방법


다음과 같은 HTML 구성 요소가 있다고 가정합니다.
<input name="Title" value="LambdaTest">https://www.lambdatest.com/</input>
현재 이 HTML 구성 요소에서 getText () 방법을 사용하면
“https://www.lambdatest.com/“ 

// Below code will give https://www.lambdatest.com/ as output
driver.findElement(By.name("Title")).getText();
getattribute () 방법을 사용하여 속성 “value” 의 값을 얻으면 “LambdaTest” 을 얻을 수 있습니다.
// Below code will give LambdaTest as output
driver.findElement(By.name("Title")).getAttribute("value");
두 값 모두 문자열 값이지만 완전히 다릅니다.
따라서 GetText () 방법으로 HTML 태그의 내부 텍스트를 가져오고, getattribute () 방법으로 자리 차지 속성의 속성 값을 가져옵니다.
Selenium에서 요소의 텍스트를 가져오는 방법, getText () 와 getattribute () 방법의 차이점, 그리고 어떤 방법을 사용하는지 알 수 있기를 바랍니다.

LambdaTest Selenium 그리드를 사용하여 동시에 테스트 수행


자동화 작업을 진행할 때는 여러 브라우저에서 동시에 테스트를 실행해야 한다.LambdaTest는 Selenium 격자에 같은 코드를 사용하여 브라우저 간 테스트를 수행하는 플랫폼을 제공합니다.코드에 속성을 설정하고 사용자 이름을 사용하여 lambda 격자 호스트에 연결하고 접근 키를 변수로 합니다.
이제 병렬 테스트를 사용하여 Selenium의 요소에 대한 텍스트를 가져오는 방법을 살펴보겠습니다.다음과 같이 BeforeTest 메서드에서 코드를 편집하면 됩니다.
package getText;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestClass {

      public String username = "YOUR_USERNAME";
      public String accesskey = "YOUR_ACCESS_KEY";
      public static RemoteWebDriver driver = null;
      public String gridURL = "@hub.lambdatest.com/wd/hub";
      boolean status = false;

@BeforeTest
public void setUp(){
    //You need to set desired capabilities which you can generate from Capability Generator from Lambda Test as per your requirements
    DesiredCapabilities capabilities = new DesiredCapabilities();
  capabilities.setCapability("browserName", "chrome");
  capabilities.setCapability("version", "81.0");
  capabilities.setCapability("platform", "win10"); // If this cap isn't specified, it will get any available one
  capabilities.setCapability("build", "LambdaTestProject");
  capabilities.setCapability("name", "LambdaTestGetTextProject");
  capabilities.setCapability("network", true); // Enables network logs
  capabilities.setCapability("visual", true); // Enables step by step screenshot
  capabilities.setCapability("video", true); // Enables video recording
  capabilities.setCapability("console", true); // Captures console logs
  try {
      driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
  } catch (MalformedURLException e) {
      System.out.println("Invalid grid URL");
  } catch (Exception e) {
      System.out.println(e.getMessage());
  }
  }

@Test
public void testMethod(){
    driver.get("https://www.lambdatest.com/");
    driver.manage().window().maximize();
    System.out.println("The title of  the page is - "+driver.getTitle());
}
@AfterTest
public void tearDown(){
    driver.quit();
}

}
테스트를 실행하면 모든 세부 정보가 포함된 실행 결과가 Lambda test Automation 메뉴에 표시됩니다.

이 작업을 완료하면 Lambda 테스트 격자를 사용하여 브라우저 간 병렬 테스트를 할 수 있으며 더욱 효율적으로 실행할 수 있습니다.

그것을 싸라!


getText () 방법을 알고 자동화 테스트에서 쉽게 사용할 수 있기를 바랍니다.또한 LambdaTest 플랫폼을 사용하여 2000개 이상의 실시간 브라우저와 온라인 운영체제에서 실시간 상호작용과 자동화Cross Browser Testing를 실행할 수 있습니다.
질문이 있으시면 언제든지 아래 의견 섹션을 통해 연락 주시기 바랍니다.테스트 유쾌!

좋은 웹페이지 즐겨찾기