을 받고 특성을 통해 xpath 쿼리를 성공적으로 브라우저에서,하지만 로봇 Framework

StackOverflow https://stackoverflow.com//questions/23012376

문제

내 일정 XPATH-쿼리되는 내가 사용하는 고도에서는 특정 HTML 요소를 반환하는 나를 완벽하게 원하는 값을 때 나는 그것을 실행에 크롬을 통해 XPath 도우미 플러그인입니다.

//*/div[@class="BarChart"]/*[name()="svg"]/*[name()="svg"]/*[name()="g"]/*[name()="rect" and @class="bar bar1"]/@height

그러나 내가 사용하는 경우 동일한 쿼리를 통해 얻는 요소 속성-키워드 로봇 Framework

Get Element Attribute//*/div[@class="BarChart"]/*[name()="svg"]/*[name()="svg"]/*[name()="g"]/*[name()="rect" and @class="bar bar1"]/@height

...그럼 내가 가지고 InvalidSelectorException 에 대한 이 XPATH.

InvalidSelectorException: Message: u'invalid selector: Unable to locate an 
element with the xpath expression `//*/div[@class="BarChart"]/*[name()="svg"]/*
[name()="svg"]/*[name()="g"]/*[name()="rect" and @class="bar bar1"]/`

그래서,로봇을 프레임워크 또는 셀레늄 제거@-인 모든 후습니다.기출 문제 및 추가 및 제거 중 일부는 슬래시기 전에@높이,하지만 실패했습니다.저는 캡슐화하는 이 쿼리의 결과 문자열에()-명령하지만 이것이 또한 성공하지 못합니다.

은 누군가는 아이디어을 방지하는 내 XPATH-에서 쿼리를 받고 깨?

도움이 되었습니까?

해결책

로봇을 사용할 때 XPath 자체에 속성 축을 포함 할 수없는 것처럼 보입니다.XPath에서 요소를 검색 한 다음 해당 속성 이름을 지정해야합니다.구문이 다음과 같은 것처럼 보입니다.

 Get Element Attribute xpath=(//*/div[@class="BarChart"]/*[name()="svg"]/*[name()="svg"]/*[name()="g"]/*[name()="rect" and @class="bar bar1"])@height 
.

또는 아마도 (나는 로봇을 사용하지 않았습니다) :

 Get Element Attribute xpath=(//*/div[@class="BarChart"]/*[name()="svg"]/*[name()="svg"]/*[name()="g"]/*[name()="rect" and @class="bar bar1"])[1]@height 
.

이 설명서

라고 말합니다

attribute_locator는 @ 기호 및 속성 이름과 같은 요소 로케이터 (예 : "element_id @ class")로 구성됩니다.

위에 게시 한 것이 올바른 트랙에 있다고 생각합니다.

다른 팁

당신이 올바른지에서 관찰하는 키워드는 것을 제거 후 모든 것은 최종 @.더 정확하게 사용 @ 하여 별도의 요소 찾기 속성 이름,그리고 이것을 분리하는 문자열에서 마지막 @ 문자입니다.

없는 양의 탈출하는 것이 문제를 해결하기 위해 코드는 일을 하지 않습니다 어떤 구문 분석다.이것은 정확한 코드(으로 이 글을 쓰는...)를 수행하는 작업:

def _parse_attribute_locator(self, attribute_locator):
    parts = attribute_locator.rpartition('@')
    ...

간단한 해결책을 드롭 trailing slash,그래서 당신의 xpath 다음과 같이 보입니다.

//*/div[@class="BarChart"]/... and @class="bar bar1"]@height`
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top