2013-05-06 1 views
0

테스트 할 페이지는 거의 사용하지 않습니다. 내 위치 찾기는 모두 이러한 긴 xpath입니다. 궁금하네요, 거기에 어떤 장점이나 단점이 처음에는 모든 요소에 대한 고유 한 classNames를 삽입하는 몇 가지 자바 스크립트를 실행하고, 다음 클래스 이름으로 찾을 수 있을까요?Selenium을 사용하여 고유 한 클래스 이름을 입력하십시오.

EDIT 페이지 개체 모델을 이미 사용하고 있습니다. 쉬웠다 -

내 질문은 간단하다, 예를 들어, 클래스 명으로 요소의 위치에 "uniqueClass01"보다는 내가 jsExecutor를 사용하여 각 요소에 고유의 클래스를 추가 한 같은 "/html/body/div[13]/div/div/div/div/div/div/div[7]/div/div/div/div/div/div/div[2]/div/div[2]/div/div/div/div/div/div/div[6]/div/div/div/div/div[2]/a"

으로하는 XPath에 의한 장점이있다. 난 그냥 이런 식으로, 또는 위의 xpaths를 사용하는 것이 더 나은지 궁금 해서요.

+0

페이지 마크 업에 실제 ID를 제공 할 수없는 이유는 무엇입니까? Javascript로 해킹하는 것이 왜 필요한지, 개발 소스에 액세스 할 수있는 경우 적절한 ID를 부여 할 수 있습니까? 왜 그런 길이 갈 필요가 있는지 나는 잘 모르겠습니다. – Arran

+0

@Arran, 나는 페이지 개발자가 아니다. 나는 단지 그것을 시험하고있다. –

+1

@Dingredient : ID를 올바르게 추가하는 것이 가장 바람직합니다 (예 : ExtJs의 경우). 그러면 소스에 클래스 이름을 추가 할 수 있습니다. 예를 들어 버튼에 특정 클래스 이름 인'button-dingredient '를 삽입하고 싶다면 클래스 이름을 삽입하는 것이 어렵다고 들린다. 자바 스크립트를 사용하여 버튼을 찾으려면 어떻게해야 할까? –

답변

0

스크립트 코드에서 로케이터 (예 : 긴 xpath)가 반복되는 경우 문제가 있음을 알 수 있습니다. 각 요소에 대해 고유 한 클래스 이름을 삽입하고 그 위치에서 해당 로케이터를 사용할 수 있습니다. 스크립트 코드는 여전히 새로운 로케이터 (고유 클래스 이름)를 반복해야합니다.

Page Object model을 사용하여 스크립트를 구성하는 것이 좋습니다. 그런 식으로 각 로케이터는 한 번 정의됩니다. 로케이터가 한 번만 정의되는 한 짧은 클래스 이름인지 긴 xpath인지는 중요하지 않습니다. 스크립트를 더 명확하게 읽을 수 있습니다.

+0

반복 로케이터가 아닙니다. 나는 방금 내 페이지 객체에 xpaths를 채워서 내 코드 냄새를 악화시킬 수 있다고 생각했다. 그리고 위에서 제안한 방식대로하는 것이 조금 깔끔해질 것이라고 생각했다. 그게 실제로 더 좋은지 아닌지 확실하지 않습니다. –

관련 문제