WebElement의 Selenium: 텍스트Box, 버튼, sendkeys(), 클릭()
WebElement의 Selenium
양식은 웹사이트 방문자로부터 정보를 수신하는 기본 웹 요소입니다. 웹 양식에는 텍스트 상자, 비밀번호 필드, 체크박스, 라디오 버튼, 드롭다운, 파일 입력 등과 같은 다양한 GUI 요소가 있습니다.
다음을 사용하여 이러한 다양한 양식 요소에 액세스하는 방법을 살펴보겠습니다. Selenium 웹 드라이버 Java. Selenium 모든 양식 요소를 WebElement의 객체로 캡슐화합니다. 텍스트 상자에 텍스트를 입력하거나 버튼을 클릭하는 등 요소를 찾고 해당 요소에 대한 작업을 수행할 수 있는 API를 제공합니다. 각 양식 요소에 액세스하는 데 사용할 수 있는 메서드를 살펴보겠습니다.
WebElement, findElement(), findElements() 소개
Selenium 웹 드라이버는 간단한 양식 요소를 객체로 캡슐화합니다. WebElement.
WebDriver는 ID, 이름, 클래스, XPath, 태그 이름, CSS 선택기, 링크 텍스트 등과 같은 웹 요소의 다양한 속성을 기반으로 양식 요소를 식별하는 다양한 기술이 있습니다.
웹 드라이버는 요소를 찾기 위해 다음의 두 가지 WebElement 메서드를 제공합니다.
- 찾기요소() – 단일 웹 요소를 찾아 WebElement로 반환합니다. Selenium 목적.
- 찾기요소() – 로케이터 기준과 일치하는 WebElement 개체 목록을 반환합니다.
findElement() 메서드를 사용하여 WebElement의 개체로 웹 페이지의 텍스트 필드라는 단일 요소를 가져오는 코드 조각을 살펴보겠습니다. 후속 튜토리얼에서는 여러 요소를 찾는 findElements() 메서드를 다룰 것입니다.
단계 1) Web Elements 개체를 생성하려면 이 패키지를 가져와야 합니다.
단계 2) WebDriver 클래스에서 사용할 수 있는 findElement() 메서드를 호출하고 WebElement 개체를 가져와야 합니다.
어떻게 수행되는지 보려면 아래를 참조하세요.
Selenium 입력 텍스트
입력 상자는 다음 두 유형 중 하나를 나타냅니다.
- 텍스트 필드- Selenium 입력한 값을 그대로 표시하는 입력 텍스트 상자입니다.
- 비밀번호 필드– 입력한 값을 받아들이지만 민감한 값이 표시되지 않도록 이를 일련의 특수 문자(일반적으로 점과 별표)로 마스크하는 텍스트 상자입니다.
로케이터
findElement() 메소드는 요소에 대한 위치 지정자인 하나의 매개변수를 사용합니다. By.id(), By.name(), By.xpath(), By.CSSSelector() 등과 같은 다양한 로케이터는 """ ID, 이름 또는 경로 등과 같은 속성을 사용하여 페이지에서 요소를 찾습니다.
Fire path와 같은 플러그인을 사용하여 요소의 ID, xpath 등을 가져오는 데 도움을 받을 수 있습니다.
예제 사이트 사용 https://demo.guru99.com/test/login.html 아래에는 ID 로케이터를 사용하여 "이메일 주소" 텍스트 필드를 찾고 이름 로케이터를 사용하여 "비밀번호" 필드를 찾는 코드가 나와 있습니다.
- 이메일 텍스트 필드는 ID로 위치합니다.
- 비밀번호 필드는 이름별로 위치합니다.
키를 보내다 Selenium
sendkeys() 의 Selenium 테스트 실행 중에 텍스트 및 비밀번호 필드에 편집 가능한 콘텐츠를 입력하는 데 사용되는 방법입니다. 이러한 필드는 이름, 클래스, ID 등의 로케이터를 사용하여 식별됩니다. 웹 요소에서 사용할 수 있는 방법입니다. type 메서드와 달리 sendkeys() 메서드는 어떤 텍스트 상자의 기존 텍스트도 대체하지 않습니다.
텍스트를 입력하는 방법 Selenium
텍스트 필드와 비밀번호 필드에 텍스트를 입력하기 위해 sendKeys()는 WebElement에서 사용할 수 있는 메소드입니다. Selenium.
동일한 예를 사용하여 https://demo.guru99.com/test/login.html 사이트에서 텍스트 필드와 비밀번호 필드를 찾아 텍스트를 입력하는 방법은 다음과 같습니다. Selenium.
- ID 로케이터를 사용하여 "이메일 주소" 텍스트 필드를 찾으세요.
- 이름 찾기를 사용하여 "비밀번호" 필드를 찾으세요.
- "이메일 주소"에 텍스트를 입력하세요. Selenium sendkeys 메소드.
- sendKeys() 메소드를 사용하여 “Password” 필드에 비밀번호를 입력하세요.
입력 값 삭제 Boxes
The 맑은() 이 방법은 입력 상자의 텍스트를 삭제하는 데 사용됩니다. 이 메소드에는 매개변수가 필요하지 않습니다.. 아래 코드 조각은 이메일 또는 비밀번호 필드의 텍스트를 지웁니다.
Selenium 버튼 클릭
The Selenium click() 메서드를 사용하여 클릭 버튼에 액세스할 수 있습니다.
위의 예에서
- 로그인 버튼 찾기
- 사이트 로그인 페이지에서 '로그인' 버튼을 클릭하여 사이트에 로그인하세요.
Selenium 제출 버튼
제출 버튼은 전체 양식을 서버에 제출하는 데 사용됩니다. 위에서 수행한 것처럼 일반 버튼처럼 웹 요소에 click() 메서드를 사용하거나 양식의 웹 요소 또는 제출 버튼 자체에 submit() 메서드를 사용할 수 있습니다.
submit()을 사용하면 WebDriver는 DOM을 조회하여 요소가 어떤 양식에 속하는지 확인한 다음 제출 기능을 트리거합니다.
완전한 코드
전체 작업 코드는 다음과 같습니다.
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.*; public class Form { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String baseUrl = "https://demo.guru99.com/test/login.html"; driver.get(baseUrl); // Get the WebElement corresponding to the Email Address(TextField) WebElement email = driver.findElement(By.id("email")); // Get the WebElement corresponding to the Password Field WebElement password = driver.findElement(By.name("passwd")); email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); System.out.println("Text Field Set"); // Deleting values in the text box email.clear(); password.clear(); System.out.println("Text Field Cleared"); // Find the submit button WebElement login = driver.findElement(By.id("SubmitLogin")); // Using click method to submit form email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); login.click(); System.out.println("Login Done with Click"); //using submit method to submit the form. Submit used on password field driver.get(baseUrl); driver.findElement(By.id("email")).sendKeys("abcd@gmail.com"); driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl"); driver.findElement(By.id("SubmitLogin")).submit(); System.out.println("Login Done with Submit"); //driver.close(); } }
문제해결
요소를 찾는 동안 NoSuchElementException()이 발생하면 웹 드라이버가 페이지에 액세스한 시점에 해당 요소가 페이지에서 발견되지 않았음을 의미합니다.
- Chrome에서 Firepath 또는 Inspect Element를 사용하여 로케이터를 다시 확인하세요.
- 코드에 사용한 값이 현재 Firepath의 요소 값과 다른지 확인하세요.
- 일부 속성은 몇몇 요소에 대해 동적입니다. 값이 다르고 동적으로 변경되는 경우, 더 안정적이지만 복잡한 방법인 By.xpath() 또는 By.cssSelector()를 사용하는 것을 고려하세요.
- 때로는 대기 문제일 수도 있습니다. 즉, 페이지가 완전히 로드되기 전에 웹 드라이버가 코드를 실행한 경우 등이 있습니다.
- 암시적 또는 명시적 대기를 사용하여 findElement() 앞에 대기를 추가합니다.
제품 개요
- 아래 표는 위에서 논의된 각 유형의 요소에 액세스하기 위한 명령을 요약한 것입니다.
요소 | Command | 상품 설명 |
---|---|---|
입력 Box | sendKeys () | 텍스트 상자에 값을 입력하는 데 사용됨 |
맑은() | 현재 값의 텍스트 상자를 지우는 데 사용됩니다. | |
링크 | 딸깍 하는 소리() | 링크를 클릭하고 다음 명령으로 진행하기 전에 페이지 로드가 완료될 때까지 기다리는 데 사용됩니다. |
버튼 제출 | 제출하다() |
- WebDriver를 사용하면 여러 SELECT 요소에서 둘 이상의 옵션을 선택할 수 있습니다.
- 양식 내의 모든 요소에 submit() 메소드를 사용할 수 있습니다. WebDriver는 해당 요소가 속한 양식의 제출 기능을 자동으로 트리거합니다.