2012-11-22 2 views
1
<div id="ctl00_ContentHolder_vs_ValidationSummary" class="errorblock"> 
    <p><strong>The following errors were found:</strong></p> 
    <ul><input type="hidden" Name="SummaryErrorCmsIds" Value="E024|E012|E014" /> 
    <li>Please select a title.</li> 
    <li>Please key in your first name.</li> 
    <li>Please key in your last name.</li> 
    </ul> 
</div> 

예를 들어 여기에 나와 있습니다. ID 값 (예 : ct100_contentHolder_vs_ValidationSummary)을 가져 오려고합니다. 셀렌 웹 드라이버를 사용합니다.Selenium WebDriver를 사용하여 DIV 요소의 id 값을 읽는 방법은 무엇입니까?

String id=driver.findElementByXpath("//div[@class='errorblock']").getAttribute("id")); 

을하지만,이 경우이 부문의 클래스는 고유해야합니다 : 시간

답변

4

이 작업을 시도 할 수 있습니다. 후반 정말 나는이 답을 알고

List<WebElement> div = driver.findElements(By.tagName("div")); 
for (WebElement e : div) {  
    div.getAttribute("id");  
} 
+0

안녕하세요 Abhi Mishra .. div 요소에 클래스가 없으면 어떻게 할 수 있습니까? 그 당시 ID를 어떻게 읽을 수 있습니까? – saikiran

+1

그렇다면 ID를 제외한 속성은 사용할 수 있습니다. ur 디비전과 ID가 있으면 //div[../strong[contains(text(),'xe '와 같은 오류를 발견 할 수 있습니다.')]]. –

0

를 사용하여 다음 코드는 먼저 DIV의 ID를 추출 나중에 올 사람들을 위해 여기에 넣으십시오. XPath로 검색하는 것은 더 복잡하고 오류가 발생하기 쉽고 속도가 느리기 때문에 절대적으로 필요하지 않는 한 피해야합니다. 이 경우 당신은 쉽게 XPath의를 사용하지 않고 허용 대답이 한 일을 수행 할 수 있습니다

String id = driver.findElement(By.cssSelector("div.errorblock")).getAttribute("id"); 

일부 설명은 ...이 라인은 CSS 선택기를 사용하여 요소 (.findElements.findElement)를 찾습니다. CSS 셀렉터 인 div.errorblock은 클래스 (.으로 상징 됨)가 errorblock 인 모든 div 요소를 찾습니다. ID가 발견되면 .getAttribute()을 사용하여 ID를받습니다.

CSS 선택기는 모든 자동화 도구가 도구 상자에 있어야하는 훌륭한 도구입니다. 훌륭한 CSS Selector 레퍼런스는 http://www.w3.org/TR/selectors/#selectors입니다.

+0

"e.getAttribute ("id ");"이어야합니다. – MacDaddy

0

하지만 난 원 :

WebElement div = driver.findElement(By.tagName("div")); 
div.getAttribute("id"); 

이 페이지에서 사용할 수있는 모든 사업부에 대한 코드입니다 :

관련 문제