셀레늄 크롬 드라이버 getText()
메서드 (java)가 동일한 .NET 요소를 가진 다른 요소에 대해 비어 있지 않은 문자열을 반환하더라도 일부 요소에 대해 빈 문자열을 반환 하는 흥미로운 경우가 xpath
있습니다. 여기에 약간의 페이지가 있습니다.
<div __gwt_cell="cell-gwt-uid-223" style="outline-style:none;">
<div>Text_1</div>
<div>Text_2</div>
<div>Text_3</div>
<div>Text_4</div>
<div>Text_5</div>
<div>Text_6</div>
</div>
내부 태그의 각각에 대해, 나는 유효 리턴 값을 얻을 수 있습니다 getTagName()
, getLocation()
, isEnabled()
,와 isDisplayed()
. 그러나 getText ()는 일부 div에 대해 빈 문자열을 반환합니다.
또한 Mac 크롬 드라이버를 사용하면 일관되게 getText()
빈 문자열 을 반환하는 'Text_5'임을 알 수 있습니다. Windows 크롬 드라이버를 사용하면 일관되게 getText()
빈 문자열 을 반환하는 'Text_2'입니다 . firefox 드라이버를 사용하는 경우 getText()
모든 div에서 예상되는 텍스트를 반환합니다.
다른 사람이 이런 어려움을 겪은 적이 있습니까?
내 코드에서 다음과 같이 사용합니다.
ArrayList<WebElement> list = (ArrayList<WebElement>) driver.findElements(By.xpath(“my xPath here”));
for (WebElement e: list) System.out.println(e.getText());
아래 제안 된대로 여기에 xPath
내가 사용 하고있는 실제가 있습니다. 위의 페이지 스 니펫은 마지막 두 div를 다룹니다.
//*[@class='gwt-DialogBox']//tr[contains(@class,'data-grid-table-row')]//td[contains(@class,'lms-assignment-selection-wizard-cell')]/div/div
업데이트 : 이 textContent
속성은 더 나은 옵션이며 대부분의 브라우저에서 지원됩니다. 차이점은이 블로그 게시물에서 자세히 설명합니다. innerText 대 textContent
대안으로 innerText
속성은 DOM에 존재하는 요소의 텍스트 콘텐츠를 반환합니다.
element.getAttribute("innerText")
isDisplayed()
방법은 때때로 요소가 정말 숨겨진되지 않을 때 걸려 넘어하지만 뷰포트 외부 수 있습니다 getText()
이러한 요소에 대해 빈 문자열을 반환합니다.
다음과 같이 javascript를 사용하여 스크롤하여 요소를 뷰포트로 가져올 수도 있습니다.
((JavaScriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
그런 다음 getText()
올바른 값을 반환해야합니다.
isDisplayed()
방법 에 대한 자세한 내용 은이 SO 질문에서 찾을 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다