을 받고 특성을 통해 xpath 쿼리를 성공적으로 브라우저에서,하지만 로봇 Framework
-
21-12-2019 - |
문제
내 일정 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`