2014-10-02 2 views
-1

나는 그와 관련된 전체 텍스트를 얻고 다음 웹 클래스에 getText() 방법을 사용하고 있습니다 :셀레늄 - 부분 텍스트에 getText()를 사용하는 방법?

$('.row.session-panel.form-group .session-name [href]')[0] 

<a href=​"/​10002267/​agenda/​session/​10020933">​"8:30am - 9:45am "<span>​Welcoming Notes​</span>​</a>​ 

나는 getText() 내가 전체 텍스트지고있어 사용하는 경우 : "8 : 30am - 9:45 am 환영 인사 ". 어떤 방법으로도 오전 8시 30 분 - 오전 9시 45 분substring() 같은 Java의 특별한 방법을 적용하지 않고 있나요?

답변

0

난 당신이 문자열()

0

<a> 내부의 DOM 구조는 easilly DOM을 조작하는 JQuery와 함수를 사용 금지를 사용한다고 생각합니다. 당신이 substring()을 사용할 수없는 경우

var fullTxt = $('.row.session-panel.form-group .session-name [href]')[0].getText() 
var spanTxt = $('.row.session-panel.form-group .session-name [href] > span')[0].getText(); 
var finalTxt = fullTxt.replace(spanTxt,"") 

, 당신은뿐만 아니라 같아요 split('"')[1]을 사용할 수 없습니다.

1

당신이 원하는 것은 당신의 a 요소에있는 텍스트 노드에 의해 직접 표현되는 텍스트입니다. 현재 Selenium에는 요소의 텍스트를 가져 오지 않고 자식 텍스트도 가져올 수있는 메서드가 없습니다. 다음을 수행하여 DOM에서 텍스트를 직접 추출 할 수 있습니다.

String text = (String) ((JavascriptExecutor) driver).executeScript(
    "var parent = arguments[0]; "+ 
    "var child = parent.firstChild; "+ 
    "var ret = ""; "+ 
    "while(child) { "+ 
    " if (child.nodeType === Node.TEXT_NODE) "+ 
    "  ret += child.textContent; "+ 
    " child = child.nextSibling; "+ 
    "} "+ 
    "return ret;", a); 

(I 정기적으로 자바 코딩 한 이후 잠시되었습니다. 이것은 파이썬 코드에서 변환됩니다. 그것을 표현하는 더 좋은 방법이있을 수 있습니다.)

변수 a 것 요소를 찾기위한 Seleniums 메서드 중 하나를 사용하여 이미 발견 한 앵커가 될 수 있습니다. 더 미세한 것이 필요한 경우 (예 : 공백이나 원하지 않는 다른 외부 문자를 제거한 경우) Java 측에서 수행 할 수없는 경우 자바 스크립트 측의 위 코드에 추가 할 수 있습니다. 예를 들어, 앞뒤에 공백을 없애려면 return ret.trim()을 사용할 수 있습니다.

크롬, 파이어 폭스 및 IE 10-11 위의 방법을 문제없이 사용했습니다. DOM의 가장 기본적인 레벨에서 다루지 않는 것을 볼 수 없으므로 모든 브라우저에서 작동 할 것으로 기대합니다.

+0

감사합니다. 나는 그것을 확실히 사용하려고 노력할 것이다. –

관련 문제