2014-10-10 3 views
0

셀렌, NUnit 테스팅, C#, Visual Studio. 셀레늄 WebDriver에, 나는 다음과 같은 페이지 소스의 요소를 찾을 수 있습니다, 그 <p> 태그에 텍스트를 설정하는 방법,Id로 요소 받기

는 :

<body contenteditable="true" class="cke_editable cke_editable_themed cke_contents_ltr cke_show_borders" spellcheck="false"> 
<p></p> 
</body> 

이 페이지에 CKEditor 구성 요소 현재와 body 태그입니다 (기본 페이지가 아닌 <body> 요소). 사실, <p> 요소에 일부 텍스트를 설정해야합니다. 나에게 혼란스러운 것은 클래스 속성이 복잡하고 여러 문자열을 포함하고 있기 때문입니다. 내가 명령을 알고 : driver.findElement(By.className("some_class_name"));하지만이 경우에 그것을 사용하고 <p> 요소에 일부 텍스트를 설정하는 방법?

+1

이 답변 http://stackoverflow.com/a/24061054/3124333는 약간 다른 편집기를 사용

간체 정말 당신의 편집 가능한 요소를 설명하는 클래스까지 삶은 다음은 충분해야한다 Java와 비슷하지만 접근 방식은 동일해야합니다. – SiKing

답변

0

그렇게

<p id="derp">Text here</p> 

같은 p 태그에게 ID를주는 경우에 당신이이 도움이

driver.find_element_by_id("derp").sendKeys("herp"); 

희망처럼 셀레늄을 사용하여 텍스트를 보낼 수 있습니다!

편집 : 당신이 다음이 상대 XPath를 작동해야 P는 elelement를 원하는 경우 요소에 ID를 추가하지 않고,이

driver.findElement(By.className("some_class_name")).findElement(By.tagName("p")).sendKeys("herp"); 
+0

디자인을 수정할 권한이 없습니다. 그냥이 응용 프로그램에 대한 테스트를 작성합니다. – Vladimir

0

뭔가를 할 수 있습니다.

//body[@class='cke_editable cke_editable_themed cke_contents_ltr cke_show_borders']/p 

이 클래스 속성에는 하나의 body 요소 만 있다고 가정합니다.

0

위치에 사용할 수있는 ID가 없으므로 다른 해결책을 찾아야합니다.

셀레늄은 CSS 선택기를 사용할 수 있습니다. CSS 스타일러스는 다음 스타일 지정 규칙을 적용해야하는 요소를 지정하는 CSS 체계와 같습니다. CSS 선택기는 그룹에 대한 인식, 그래서 그들은 단지 문자열로 처리하지 않는 : XPath에 이상

body.cke_editable.cke_editable_themed.cke_contents_ltr.cke_show_borders > p 

장점 :

한 가지 로케이터는 다음이 될 것입니다. 정확한 클래스 속성에 대해 XPath 표현식 만 사용하면 속성이있는 새 클래스가 있으면 인식이 실패합니다. CSS 선택기를 사용하면 실제로 클래스별로 식별 할 수 있습니다.

body.cke_editable.cke > p