forms(양식)은 웹 사이트 방문자로부터 정보를받는 기본 웹 요소입니다. web forms(웹 양식)에는 텍스트 상자, 암호 필드, 체크 상자, 라디오 단추, 드롭 다운, 파일 입력 등과 같은 다른 GUI 요소가 있습니다.
우리는 자바와 함께 Selenium Web Driver를 사용하여 이러한 다양한 폼 요소에 액세스하는 방법을 볼 것입니다. Serenium은 모든 양식 요소를 WebElement의 객체로 캡슐화합니다. 요소를 찾고 텍스트 상자에 텍스트를 입력하고 버튼을 클릭하는 등의 작업을 수행하는 API를 제공합니다. 각 양식 요소에 액세스하는 데 사용할 수있는 메소드가 표시됩니다.
이 자습서에서는 다음 양식 요소를 식별하는 방법을 설명합니다
WebElement 소개, findElement (), findElements ()
Selenium Web Driver는 WebElement 의 객체로 간단한 양식 요소를 캡슐화합니다 .
WebDriver가 ID, 이름, 클래스, XPath, Tagname, CSS 선택자, 링크 텍스트 등과 같은 웹 요소의 다양한 속성을 기반으로 양식 요소를 식별하는 다양한 기술이 있습니다.
웹 드라이버는 요소를 찾기 위해 다음 두 가지 방법을 제공합니다.
- findElement () - 단일 웹 요소를 찾아 WebElement 객체로 반환합니다.
- findElements () - 로케이터 기준과 일치하는 WebElement 객체의 목록을 반환합니다.
findElement () 메소드를 사용하여 웹 페이지의 텍스트 필드를 WebElement의 객체로 가져 오는 코드 스 니펫을 살펴 보겠습니다. 후속 튜토리얼에서 여러 요소를 찾는 findElements () 메소드를 다룰 것이다.
1 단계 : 웹 요소의 개체를 만들려면이 패키지를 가져와야합니다.
2 단계 : WebDriver 클래스에서 사용할 수있는 findElement () 메서드를 호출하고 WebElement의 객체를 가져와야합니다.
어떻게 수행되는지 보려면 아래를 참조하십시오.
입력 상자
입력 상자는 다음 두 가지 유형 중 하나를 나타냅니다.
- 텍스트 필드 - 입력 된 값을 받아들이고 그대로 표시하는 텍스트 상자입니다.
- 암호 필드 - 입력 된 값을 받아들이지 만 민감한 값이 표시되지 않도록 일련의 특수 문자 (일반적으로 점 및 별표)로 마스킹하는 텍스트 상자입니다.
로케이터
findElement () 메소드는 요소에 대한 위치 지정자 인 하나의 매개 변수를 취합니다. By.id (), By.name (), By.xname (), By.xpath (), By.CSSSelector () 등의 다른 로케이터는 페이지의 요소를````id, name 또는 path와 같은 속성을 사용하여 찾습니다.
Fire path와 같은 플러그인을 사용하면 요소의 id, xpath 등을 얻는 데 도움을받을 수 있습니다.
ID 로케이터와 이름 로케이터를 사용하여 "비밀번호"필드를 사용하여 "이메일 주소"텍스트 필드를 찾을 수 있습니다.
- 이드는 이메일 텍스트 필드를 찾았습니다.
- 암호 필드는 이름으로 위치합니다.
입력란에 값 입력하기
텍스트 필드 및 암호 필드에 텍스트를 입력하려면 sendKeys ()가 WebElement에서 사용할 수있는 메서드입니다.
텍스트 입력란과 비밀번호 입력란을 찾고 값을 입력하는 방법은 다음과 같습니다.
- 아이디 로케이터를 사용하여 "전자 메일 주소"텍스트 필드를 찾습니다.
- 이름 찾기를 사용하여 "비밀번호"입력란을 찾으십시오.
- sendKeys () 메소드를 사용하여 "Email Address"에 텍스트를 입력하십시오.
- sendKeys () 메소드를 사용하여 "비밀번호"필드에 비밀번호를 입력하십시오.
입력란에서 값 삭제
분명 () 메서드는 입력 상자의 텍스트를 삭제하는 데 사용됩니다. 이 메서드에는 매개 변수가 필요하지 않습니다 . 아래의 코드 스 니펫은 이메일 또는 비밀번호 입력란의 텍스트를 지 웁니다.
버튼
단추는 click () 메소드를 사용하여 액세스 할 수 있습니다.
위의 예에서
- 로그인 버튼을 찾아 로그인하십시오.
- 사이트의 로그인 페이지에서 "로그인"버튼을 클릭하여 사이트에 로그인하십시오.
제출 버튼
제출 단추는 전체 양식을 서버에 제출하는 데 사용됩니다. 위에 설명한 것처럼 일반 버튼처럼 web 요소에서 click () 메서드를 사용하거나 양식의 모든 웹 요소 또는 submit 버튼 자체에서 submit () 메서드를 사용할 수 있습니다.
submit ()을 사용하면 WebDriver가 DOM을 검색하여 요소가 속한 양식을 확인한 다음 제출 기능을 트리거합니다.
라디오 버튼(Radio Button)
라디오 버튼도 click () 메소드를 사용하여 토글 할 수 있습니다.
연습을 위해 http://demo.guru99.com/test/radio.html 을 사용하여 radio1.click ()이 "Option1"라디오 버튼을 토글하는지 확인하십시오. radio2.click ()은 "Option1"을 선택하지 않은 상태에서 "Option2"라디오 버튼을 토글합니다.
체크박스(Check Box)
체크 박스를 켜기 / 끄기로 전환하는 작업은 click () 메서드를 사용하여 수행 할 수도 있습니다 .
아래의 코드는 페이스 북의 "로그인 상태 유지"체크 상자를 두 번 클릭 한 다음 토글 한 경우 TRUE, 토글 한 경우 FALSE로 결과를 출력합니다.
isSelected () 메서드는 Checkbox가 켜지거나 꺼져 있는지 여부를 확인하는 데 사용됩니다.
다른 예가 있습니다 :
Complete Code
다음은 완전한 작업 코드입니다.
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) { // 객체 / 변수의 선언 및 인스턴스화 System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String baseUrl = "http://demo.guru99.com/test/login.html"; driver.get(baseUrl); // 전자 메일 주소 WebElement에 해당하는 (TextField) WebElement 가져 오기 WebElement email = driver.findElement(By.id("email")); // Password 필드에 해당하는 (TextField) WebElement 가져 오기 WebElement password = driver.findElement(By.name("passwd")); email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); System.out.println("Text Field Set"); // 텍스트 상자에서 값 삭제 email.clear(); password.clear(); System.out.println("Text Field Cleared"); // 제출 버튼 찾기 WebElement login = driver.findElement (By.id ( "SubmitLogin")); // 클릭 메서드를 사용하여 email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); login.click(); System.out.println("Login Done with Click"); //양식을 제출하는 방법을 제출하여 암호 필드에 submit합니다. 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.get("http://demo.guru99.com/test/radio.html"); WebElement radio1 = driver.findElement(By.id("vfb-7-1")); WebElement radio2 = driver.findElement(By.id("vfb-7-2")); // Radio Button1이 선택되었습니다. radio1.click(); System.out.println("Radio Button Option 1 Selected"); // Radio Button1이 선택 해제되고 Radio Button2가 선택되었습니다. radio2.click(); System.out.println("Radio Button Option 2 Selected"); // CheckBox WebElement 선택 WebElement option1 = driver.findElement(By.id("vfb-6-0")); //이 옵션은 체크 박스를 토글합니다 . option1.click (); // 체크 박스가 켜져 있는지 확인 if (option1.isSelected()) { System.out.println("Checkbox is Toggled On"); } else { System.out.println("Checkbox is Toggled Off"); } // Checkbox를 선택하고 isSelected 메소드를 사용하기 driver.get("http://demo.guru99.com/test/facebook.html"); WebElement chkFBPersist = driver.findElement(By.id("persist_box")); for (int i=0; i<2; i++) { chkFBPersist.click (); System.out.println("Facebook Persists Checkbox Status is - "+chkFBPersist.isSelected()); } //driver.close(); } }
문제 해결
요소를 찾는 동안 NoSuchElementException ()이 발생하면 웹 드라이버가 페이지에 액세스 한 시점의 요소가 페이지에서 발견되지 않음을 의미합니다.
- Firepath 또는 Chrome의 요소 검사를 사용하여 로케이터를 다시 확인하십시오.
- 코드에서 사용한 값이 Firepath의 요소 값과 다른지 확인하십시오.
- 일부 속성은 몇 가지 요소에 대해 동적입니다. 값이 다르며 동적으로 변경되는 경우에는 더 신뢰할 만하지만 복잡한 방법 인 By.xpath () 또는 By.cssSelector ()를 사용하는 것이 좋습니다.
- 때로는 대기 문제 일 수도 있습니다. 즉, 페이지가 완전히로드되기 전에 웹 드라이버가 코드를 실행했습니다.
- 암시 적 또는 명시 적 대기를 사용하여 findElement () 전에 대기 시간을 추가하십시오.
개요
- 아래 표는 위에 논의 된 각 요소 유형에 액세스하는 명령을 요약 한 것입니다
Element | Command | Description |
---|---|---|
Input Box | sendKeys() | 텍스트 상자에 값을 입력하는 데 사용됩니다. |
clear() | 현재 값의 텍스트 상자를 지우는 데 사용됩니다. | |
Check Box,Radio Button, | click() | 요소를 켜기 / 끄기로 전환하는 데 사용됩니다. |
Links | click() | 링크를 클릭하고 다음 명령으로 진행하기 전에 페이지로드가 완료되기를 기다리는 데 사용됩니다. |
Submit Button | submit() |
- WebDriver를 사용하면 여러 SELECT 요소에서 둘 이상의 옵션을 선택할 수 있습니다.
- 양식 내의 모든 요소에 대해 submit () 메소드를 사용할 수 있습니다. WebDriver는 해당 요소가 속한 양식의 제출 기능을 자동으로 트리거합니다.
'자동화테스트 > Selenium' 카테고리의 다른 글
Selenium Webdriver를 사용하여 링크 및 웹 테이블에 액세스 (0) | 2018.11.22 |
---|---|
Selenium Webdriver를 사용하여 DropDown에서 Option을 선택하는 방법 (0) | 2018.11.21 |
첫 번째 Selenium Webdriver 스크립트 : 자바 코드 예제 (0) | 2018.11.19 |
Selenium WebDriver를 다운로드하고 설치하는 방법 (0) | 2018.11.18 |
WebDriver 소개 및 Selenium RC와의 비교 (0) | 2018.11.17 |