2017-09-26 1 views
-1

로봇 프레임 워크의 텍스트에 대한 로케이터를 가져 오는 방법이 있는지 알고 싶습니다. Selenium2Library와 함께 Robot Framework를 사용하고 있습니다.텍스트별로 위치 찾기를 찾으십니까?

시나리오 예 : 내 페이지에 "Hello"메시지가 있고 새 메시지가 나타날 때 해당 위치가 계속 변경된다고 가정합니다.이 "Hello"단어를 클릭하여 전체 메시지를 표시하려고합니다. 어떻게해야합니까? 도와주세요.

+0

"Hello"에 ID를 추가 하시겠습니까? – user3012759

+0

이 질문은 너무 애매합니다. "Hello"라는 라벨이있는 페이지를 여러 가지 방법으로 사용할 수 있으며 여러 가지 방법으로 라벨에 액세스 할 수 있습니다. 좀 더 구체적이어야합니다. 공부하고 xpath 또는 CSS 경로를 사용하려고 했습니까? –

답변

0

각도가 다른 웹 페이지로 인해 위치가 많이 달라졌 기 때문에 어떤 의미인지 알았습니다. ID는 페이지가로드 될 때마다 새로 생성 될 수 있으며 요소를 클릭하는 순서에 따라 변경 될 수 있습니다. 게다가 dom과 xpath 기반의 locator에도 영향을 줄 수 있습니다. 귀하의 질문에 대한 간단한 대답은 아니오입니다, 그것은 표준 셀레늄, 셀렌 2, ExtendedSelenium2, 또는 다른 표준 라이브러리 내에 존재하지 않습니다.

질문에 대한 매체 답변은 현재 가장 고급 인 Click Element by Text 맞춤 키워드로 해결되었습니다. 입력에 따라 xpath를 생성하고 추가 매개 변수없이 간단한 텍스트 검색으로 찾을 수 있다면 그것을 할 것입니다. 그것은 때로는 깔끔하고 인수 주입이 필요할 수도 있지만 일반적으로 매우 잘 작동하며 xpath가 원격으로 가능할 때 사용하기 쉽습니다.

Click Element by Text 
    # EXAMPLE USAGE 
    # Click Element by Text "text on the element" id="midlevellocationoftext"  button 
    # NOTE: Does not account for extra spaces at the beginning or end, text must be exact 
    # NOTE: Allows for injections on purpose to allow user to be more exact with their location 
    [Arguments]  ${text}  ${location}=* ${elementtype}=* 
    Click Element xpath=//*[@${location}]//${elementtype}[text()=${text}] 

긴 대답은 내가 더 나은 것으로 작업하고 있다는 것입니다. 지금까지 내가 아는 것이있다. 이를 수행하는 요소는 무효 상태에 존재합니다. JavaScript는 웹 페이지를 요소 목록으로 바꿀 수 있습니다. 해당 요소에 .innerHTML으로 전화하여 텍스트를 얻을 수 있습니다. 나는 세부 사항을 해결하지 못했지만 솔직히 그것이 가능하다고 생각하고, 알아 낸 후에 코드는 다른 사람들이 볼 수 있도록 Code Review에 있습니다.

관련 문제