2016-11-18 3 views
2

새로 고침 후 모든 ID가 임의로 생성되므로 다른 식별자를 사용해야합니다. 기본적으로 Robot은 지정된 식별자 옆의 필드에 텍스트를 입력해야합니다. 필드와 사용 : Robot Framework - Selenium2Library - 텍스트 앞에 필드에 텍스트 입력

https://vgy.me/3YBIgl.png

나는 텍스트가 사용자에게 입력 싶은 "사용자"로케이터가 함께 작동하도록한다. 그것은 xpaths와 작동하지만, 오히려 너무 취성이없는 다른 방법을 사용하고 싶습니다.

Input Text //tr[contains(text(), 'Example') and ...] ${USERNAME} 

하지만 솔직히 모르겠어요 여기

는 내가이 비슷한 것 알고있는 형태

<tbody id="m8DPe" class="z-rows"> 
<tr id="m8DPf" style="background:#FFFFFF;" class="z-row"> 
    <td id="m8DPg-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner"> 
     <div id="m8DPg-cell" class="z-row-content"> 
      <span id="m8DPg" class="z-label">User:</span> 
     </div> 
    </td> 
    <td id="m8DPh-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner"> 
     <div id="m8DPh-cell" class="z-row-content"> 
      <input id="m8DPh" class="z-textbox" value="" type="text" name="j_username"> 
     </div> 
    </td> 
</tr> 
<tr id="m8DPi" style="background:#FFFFFF;" class="z-row z-grid-odd"> 
    <td id="m8DPj-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner"> 
     <div id="m8DPj-cell" class="z-row-content"> 
     <span id="m8DPj" class="z-label">Password:</span> 
     </div> 
    </td> 
    <td id="m8DPk-chdextr" style="background:#FFFFFF;text-align:left;" class="z-row-inner"> 
     <div id="m8DPk-cell" class="z-row-content"> 
      <input id="m8DPk" class="z-textbox" value="" type="password" name="j_password"> 
     </div> 
    </td> 
</tr> 

를 생성하는 데 사용되는 HTML입니다. 이걸 읽을 수있는 곳이 있나요?

저는 Robot Framework의 새로운 기능입니다. 죄송합니다.

+1

HTML 마크 업을 약간 변경하기 위해 개발자와 협력 할 수 있습니까? –

+0

아니요. 기본적으로 Java로 생성 한 다음 ZK API를 사용합니다. 그들은 직접 HTML을 터치 할 수 없습니다. – Goralight

+0

프로젝트에서 비슷한 문제가있었습니다. 필자는 Python을 사용하여 설명 xpath를 기반으로 textbox xpath를 계산할 수있었습니다. 귀하의 ID가 비슷해 보이므로, 당신은 디스크립터 ID의 여분의 부분을 제거함으로써 그것을 할 수 있어야합니다. 그것은 무서운데 들리지만 그것이 읽을 수 있고 강력한 테스트 자동화를 만든다는 것을 알게되었습니다. – Pekka

답변

0

샘플을 보면 입력에 대한 이름 속성이 임의로 생성 된 것은 아닙니다. 그 때문에 정말 있다면, 당신은 이름, 예를 들어, 가장 사소한 셀레늄 로케이터 전략을 사용할 수 있습니다

//tr[//span[text()="User:"]/td//input 

읽고 (: 그런 경우가 아니라면

Input Text name=j_username ${USERNAME} 

을, 이것은 XPath를 통해 수행 할 수 있습니다 오른쪽에서 왼쪽으로 선명도를 얻기 위해, LTR을 평가합니다.) td (셀) 내부에있는 입력을 반환합니다. 그 자체는 tr (테이블 행)의 직접적인 하위이며, 정확한 일치).

따라서 로케이터는 셀에 "User :"가 포함 된 행을 찾아서 입력을 반환합니다.