2017-03-22 1 views
0

메뉴를 탐색하고 하위 메뉴를 선택해야합니다.로봇 프레임 워크가있는 하위 메뉴 선택

//*[@id="gomenu68e1884541"]//nav/div/ul/li[3]/div/ul/li[2]/a 

을하지만 iddynamic하고 모든 시간을 변경하기 때문에 내가

가 어떻게 탐색 할 수 있습니다 응용 프로그램을 액세스 할 때 그것은 나에게 도움이되지 않습니다

나는 아래와 같이 클릭 요소 XPath를 사용하고 있습니다 a 메뉴 -> 서브 메뉴?

자세한 내용은 아래의 이미지를 참조하십시오. 사람이

code html

을 도와 드릴까요?

+2

당신은 탐색의 당신의 HTML을 게시 할 수 있을까요? – Goralight

+2

> 메뉴> 하위 메뉴를 탐색하려면 어떻게해야합니까? 동적 id-s, 직접적인 자손 경로 및 색인 된 요소를 사용하지 않음으로써). 나는. 브라우저가 생성하는 xpath를 취하지 마십시오 :) 질문에 html 소스를 제공하거나 공개적으로 표시되는 시스템에 대한 링크를 제공하면 도움이됩니다. – Todor

답변

0

나는 Xpath에서 같은 문제가 발생했습니다. js, 희미한 angular 등의 콘텐츠를 생성하는 웹 사이트는 간단히 작동하지 않습니다. 나는 이전의 자동화 프로젝트에 많은 시간을 할애하여 이것에 대한 해결책을 찾았다 : building xpath. 즉, Chrome과 다른 브라우저에있는 Insect Element을 의미하는 것이 아니라 코드와 웹 사이트 작동 방식을 배우면서 직접 만들어야합니다. 이것을 방법 당신은 따라야합니다

  • 당신은 당신이 도달 할 수있는 방법을 찾을 수있다

자신의 XPath를 구축 xpath

  • 내용 프런트 엔드 클라이언트의 코드에 익숙해 원하는 요소. @id을 사용하지 않습니다. 무작위로 변경하는 경우가 거의없는 css classes을 사용하고 요소 간의 관계를 확인하십시오. following-siblingtext() 및 기타 덜 유명한 xpath 선택기를 사용해야합니다. 나는 당신에게 this xpath 익숙한 것이 좋습니다 것이 좋습니다. 나에게는 다른 방법이 없었지만, 결국에는 놀랍고 잘 포맷 된 변수 파일을 가지고 있고, 모든 요소의 xpaths를 포함하고있다.

  • +1

    동의해야합니다. 주위에는 다른 방법이 없지만 그 것을 배우는 것입니다. Xpath는 다른 언어와 마찬가지로 언어의 하위 집합이며 아주 쉽고 간단합니다. 셀레늄/webdriver에서 사용하는 대부분의 경우 기본 집합입니다. 나는 프로그래밍 언어에 대한 지식이 없어도 프로그램하려고 시도하는 것을 상상할 수 없다. w3c는 확실한 리소스이지만 w3school 튜토리얼을 시작할 수도 있습니다. 그리고 하나님의 사랑을 위해 xpath/css를 사용하지 마세요. – Todor

    -1

    이 경우 메뉴 항목 (li 요소)은 div의 손자이고 특정 클래스는 ul의 하위입니다.당신이 a 쫓고있는 경우, XPath는 다음과 같습니다 대상 요소가 li해야

    //div[@class="menuslide”]/ul/li/a[@title="Alumnos"] 
    

    경우이 XPath를 사용할 수 있습니다 - 그것은 그 제목을 가진 아이 갖는 li 선택 :

    //div[@class="menuslide”]/ul/li[a[@title="Alumnos"]] 
    

    당신이 어떤 미래의 변화에 ​​대한 더 강력한 만들고 싶어하지만, 느린 조금, 당신은 uldiv 사이의 부모 - 자식 관계를 건너 뛸 수 있고, 그리고 li, 그리고 그냥 "나를 발견 한 경우 li 요소는 클래스 "와 div 조상 :

    //div[@class="menuslide”]//li/a[@title="Alumnos"] 
    

    그리고 XPath의 창조의이 일반적인 패턴을 - 당신은 (클래스와 title 속성)을 유지하는 공통 속성 패턴 만 파악됩니다 평가 경로를 찾을 수 특정 요소에 대해 평가 속도와 견고성 간의 균형을 고려하십시오. (속도는 현대적인 브라우저 및 하드웨어의 문제가 아닙니다.)

    +0

    답변 해 주셔서 감사합니다. 그것이 반응 할 때를 위해 mobile_menu에 의해 복사 된 것이기 때문에 나는 그 물건을 찾을 수 없다. 그렇다면 중복 된 항목을 어떻게 식별 할 수 있습니까? 색인으로? 나도 몰라 ... – Marta79

    +0

    하나 이상의 요소가 일치하면 xpath가 모든 요소를 ​​반환합니다. 더 많이 볼 수있는 방법입니다. 그것이 현재 문제입니까, 그 요소는 발견되지 않았습니까? @ Marta79 – Todor

    +0

    감사합니다 토 도르, 나는 무슨 일이 일어나고 있는지 이해하기 시작하고 있다고 생각합니다. 첫 번째 레벨 메뉴 요소에는 액세스 할 수 있지만 드롭 다운 메뉴의 두 번째 및 세 번째 레벨에는 액세스 할 수 없습니다. 이 오류 메시지> 요소 : 보이지 않습니다. 나는 "페이지를 포함 할 때까지 기다리십시오"요소를 찾으려고했지만 호버 하위 메뉴가 포함 된 클래스를 찾고 있지만 행운은 없습니다. 어떤 제안? – Marta79

    1

    마침내 세 번째 수준에서 작업하게되었습니다.) 다음 명령을 사용하여 다음과 같은 명령을 사용하십시오.

    Wait Until Page Contains Element 
    Sleep 
    Mouse Over 
    Click Link 
    

    그리고 다른 XPath는 혼합 : 당신의 도움에 대한

    xpath=//*[@class="dropdown"]//a[contains(., 'Alumnos')] 
    xpath=//*[@class="dropdown"]/li[3]/div/ul/li[1]/div/ul/li[1]/a 
    

    덕분에 모두가