페이지 요소 포지셔닝은 자동화에서 가장 중요한 것이며 Selenium Webdriver는 요소 포지셔닝을위한 많은 방법을 제공합니다. 테스터는 다양한 포지셔닝 방법에 능숙해야합니다. 가장 쉽고 가장 안정적인 포지셔닝 방법이 사용됩니다.
읽기 내용
자동 테스트 단계
자동 테스트 중에 프로그램의 페이지 요소의 일반적인 작동을 테스트하십시오.
1. 웹 페이지 요소를 찾아 스토리지 개체 (WebElement)에 할당하십시오.
2. 예 : 페이지 요소를 저장하는 개체의 작업 : 링크를 클릭하고 입력 상자에 문자를 입력하십시오.
3. 페이지의 요소가 기대치를 충족하는지 확인하십시오.
이 세 단계를 통해 페이지 요소의 작동을 완료 할 수 있으며 페이지 요소를 찾는 것이 매우 중요한 단계입니다. 페이지 요소를 찾을 수 없으며 나중에 수행 할 수 없습니다.
웹 페이지 기술의 실질적인 복잡성으로 인해 많은 페이지 요소를 찾기가 어렵습니다. 사람들은 종종 그것을 찾는 방법을 모릅니다.
전체 위치 방법
WebDriver 개체의 FindElement 함수를 사용하여 웹 페이지 요소 정의
FindElements 함수를 사용하여 페이지의 여러 요소를 찾으십시오.
대상 페이지 요소는 후속 사용을 위해 WebElement 객체를 사용하여 저장해야합니다.
페이지 요소를 찾는 일반적으로 사용되는 방법은 다음과 같습니다.
포지셔닝 방법 | Java 언어 구현 예 |
ID 포지셔닝 | driver.findlement (by.id ( "value of id")); |
이름 포지셔닝 | driver.findlement (by.name ( "name value")); |
링크의 모든 텍스트 위치 | driver.findlement (by.linktext ( "링크의 모든 텍스트")); |
링크의 일부 텍스트 위치 | driver.findlement (by.partialLinkText ( "링크의 부분 텍스트")); |
CSS 포지셔닝 | driver.findlement (by.cssselector ( "css expression")); |
xpath 포지셔닝 | driver.findlement (by.xpath ( "xpath expression")); |
클래스 이름 포지셔닝 | driver.findlement (by.className ( "class attribute")); |
태그 이름 태그 이름 타겟팅 | driver.findlement (by.tagname ( "tagname")); |
jQuery 방법 | js.Executescript ( "return JQuery.Find ("jQuery expression ")") |
찾는 방법
요소 포지셔닝에 Selenium Webdriver를 사용하는 경우 FindElement 또는 FindElements 메소드는 일반적으로 클래스를 결합하여 요소 핸들을 반환하여 요소를 찾는 데 사용됩니다.
findElement () 메소드는 요소를 반환합니다. 찾지 못하면 예외가 발생합니다.
FindElements () 메소드는 여러 요소를 반환합니다. 찾을 수 없으면 빈 배열이 반환되고 예외는 버리지 않습니다.
포지셔닝 방법을 선택하는 방법
전략은 간단하고 안정적인 포지셔닝 방법을 선택하는 것입니다.
1. 페이지 요소에 ID 속성이있는 경우 ID를 사용하여 찾아보십시오. 그렇지 않은 경우 다른 포지셔닝 방법을 선택하십시오
2. CSSSELECTOR가 빠르게 실행되고 권장됩니다
3. HyperLinks를 위치시킬 때 LinkText 또는 PartialLinkText를 고려할 수 있지만 텍스트가 종종 변경되므로 사용하는 것이 좋습니다.
4. XPath는 가장 강력한 기능을 가지고 있습니다. 전체 DOM을 찾아야했기 때문에 실행 속도는 느려졌으므로 가능한 한 적은 비용으로 사용하십시오. 실제로는 없을 때 XPath를 사용하십시오
ID로 요소 찾기 : by.id ()
페이지 요소의 ID를 통해 요소를 찾는 가장 권장되는 방법입니다. W3C 표준은 개발자가 각 페이지 요소에 고유 한 ID 속성을 제공 할 것을 권장합니다.
요소에 고유 한 ID 속성이 제공되면 자동화 된 테스트를 수행 할 때 요소를 쉽게 찾을 수 있습니다. 요소의 ID는 가장 빠른 식별 전략이기 때문에 선호 식별 속성으로 사용됩니다.
Baidu 홈페이지를 예로 들어 검색 상자의 HTML 샘플 코드는 다음과 같습니다. ID는 KW입니다.
<입력 유형 = "text"autocomplete = "Off"maxLength = "100"id = "kw"name = "wd">
"Baidu"검색 버튼 요소에 대한 HTML 샘플 코드는 다음과 같습니다. ID는 SU입니다.
<입력 유형 = "제출"id = "su"value = "baidu">
Selenium/Webdriver에서 ID로 요소를 찾기위한 Java 샘플 코드는 다음과 같습니다.
WebDriver 드라이버 = New Firefoxdriver (); driver.get ( "http://www.baidu.com"); WebElement searchbox = driver.findElement (by.id ( "kw")); SearchBox.SendKeys ( "작은 탱크 블로그 파크"); WebElement searchButton = driver.FindElement (by.id ( "su")); SearchButton.submit (); driver.close ();
이름으로 요소 찾기 : by.name ()
Douban.com의 홈페이지 검색 상자를 예로 들어 검색 상자의 HTML 코드는 다음과 같습니다. 그 이름은 다음과 같습니다.
<입력 유형 = "text"autocomplete = "Off"이름 = "Q"자리 표시 자 = "책, 영화, 음악, 그룹, 스테이션, 멤버"size = "12"maxlength = "60">
WebDriver의 Java 코드는 Douban Homepage의 검색 상자를 검색하여 이름을 통해 다음과 같습니다.
WebDriver 드라이버 = New Firefoxdriver (); driver.get ( "http://www.douban.com"); WebElement searchbox = driver.findElement (by.name ( "q")); SearchBox.SendKeys ( "작은 탱크"); SearchBox.Submit ();
tagname의 요소 찾기 : by.tagname ()
Tagname을 통해 요소를 검색 할 때 여러 요소가 반환됩니다. 따라서 FindElements ()가 필요합니다.
WebDriver 드라이버 = New Firefoxdriver (); driver.get ( "http://www.cnblogs.com"); 목록 <WebElement> buttons = driver.FindElements (by.tagName ( "div")); System.out.println ( "버튼 :" + buttons.size ());
참고 : TagName을 사용하는 경우 많은 HTML 요소의 태그 이름이 동일합니다.
예를 들어, 라디오 박스, 확인란, 텍스트 상자, 비밀번호 상자. 이 요소 태그는 모두 입력됩니다. 현재 태그 이름만으로는 원하는 요소를 정확하게 얻을 수 없습니다. 또한 유형 속성을 결합하여 원하는 요소를 필터링해야합니다.
WebDriver 드라이버 = New Firefoxdriver (); driver.get ( "http://www.cnblogs.com"); 목록 <WebElement> buttons = driver.FindElements (by.tagName ( "input")); for (webElement webElement : buttons) {if (webElement.getAttribute ( "type"). Equals ( "text")) {System.out.println ( "입력 텍스트는 :" + webElement.getText ()); }}클래스 이름으로 요소를 찾으십시오
Taobao의 홈페이지 검색을 예로 들어 검색 상자의 HTML 코드는 다음과 같습니다.
<input autocomplete = "Off"autofocus = "true"accesskey = "s"aria-label = "검색 텍스트를 입력하십시오"이름 = "q"id = "q"aria-haspopup = "true"aria-combobox = "list"robole = "combobox"buildin : tabindex = "0">
Java 샘플 코드는 다음과 같습니다
WebDriver 드라이버 = New Firefoxdriver (); driver.get ( "http://www.taobao.com"); Thread.sleep (15000); WebElement searchbox = driver.findElement (by.className ( "Search-ComboBox-Input")); SearchBox.SendKeys ( "다운 재킷"); SearchBox.Submit ();
참고 : ClassName을 사용하여 요소를 찾을 때 때때로
linktext by.linktext ()로 요소를 찾으십시오.
하이퍼 링크의 텍스트 정보를 통해 직접 요소를 위치시킵니다.
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f"name = "tj_login"onclick = "return false;"> login </a>
HTML 코드는 다음과 같습니다
WebDriver 드라이버 = New Firefoxdriver (); driver.get ( "http://www.baidu.com"); WebElement loginLink = driver.FindElement (by.linkText ( "login")); loginLink.click ();
partialLinkText ()로 요소 찾기
이 방법은 이전 방법의 향상된 버전입니다. 일부 키워드와 일치하려면이 방법을 사용하여 일부 하이퍼 링크 텍스트를 통해 요소를 찾을 수 있습니다.
HTML 코드는 다음과 같습니다
WebDriver 드라이버 = New Firefoxdriver (); driver.get ( "http://www.baidu.com"); WebElement loginLink = driver.FindElement (by.PartialLinkText ( "log")); loginLink.click ();
참고 :이 방법을 사용하여 찾을 때 문제가 발생할 수 있습니다. 하이퍼 링크에 "등"이 포함되어 있음을 알지 못하는 경우 문제가 발생할 수 있습니다. FindElement 메소드는 발견 된 첫 번째 요소 만 반환하며 기준을 충족하는 모든 요소를 반환하지 않습니다.
기준을 충족하는 모든 요소를 얻으려면 FindElements 메소드 만 사용할 수 있습니다.
위는 Java Selenium 요소 위치에 대한 정보입니다. 우리는 향후 관련 정보를 계속 추가 할 것입니다. 지원해 주셔서 감사합니다!