2017-12-06 3 views
1

에서 문자열 값을 추출합니다. xpath를 통해 문제를 찾고 텍스트를 가져 오는 데 문제가 있습니다. 나는 몇몇 조언에 감사 할 것이다.나는 문자열을 추출하기 위해 노력하고 코드

<!DOCTYPE html> 
<html class="ng-scope" ng-app="dan"> 
<head> 
<body class="u-scroll-y ng-scope" ng-controller="CoreController as cc"> 
<div class="c-animate c-animate--show u-pos-f-t ng-hide" ng-show="global.alerts.length"> 
<div class="o-grid-fluid u-h-100 u-pl-0"> 
<div class="o-grid__row u-ml-0 u-h-100"> 
<div class="c-loader ng-hide" ng-show="loadingHome" style=""> 
<nav class="o-grid__col-xl-2 o-grid__col-lg-3 o-grid__col-xs-4 u-p-0 c-card__block u-h-100 u-shadowed u-pos-f-t ng-scope" ng-if="global.loggedIn"> 
<div class="u-p-0 u-h-100 o-grid__col-xl-10 o-grid__col-lg-9 o-grid__col-xs-8 u-pull-right" ng-class="{ 'o-grid__col-xl-10 o-grid__col-lg-9 o-grid__col-xs-8 u-pull-right' : global.loggedIn }"> 
<header class="o-layout-table__row u-bg-primary u-shadowed u-clearfix u-px ng-scope" ng-if="global.loggedIn"> 
<main class="o-view-container"> 
<div class="o-grid-fluid u-py-md"> 
<div class="o-grid__row"> 
<div class="c-animate c-animate--view-slide-in-right c-animate--view-slide-out-right ng-scope" ng-view="" style=""> 
<div class="o-grid__col-md-10 o-grid__col-xl-8 o-grid__col-xl-offset-2 o-grid__col-md-offset-1 ng-scope"> 
<div class="u-mb-lg u-text-center"> 
<h1 class="u-text-bold">Recommendations</h1> 
</div> 
<form class="ng-pristine ng-valid ng-valid-min ng-valid-max ng-valid-required" name="recommend" ng-submit="recommend.$valid"> 
<div class="o-media c-card c-card__block u-shadowed u-mb-lg ng-scope" ng-if="rc.WarrantyEligible && !rc.prevWarranty()"> 
<label class="c-form-control-label u-px u-py-sm u-w-100">Warranty Options:</label> 
<div class="c-form-group u-p-0 u-mb-sm u-clearfix"> 
<div class="o-grid__col-md-8"> 
<label class="c-form-control-label u-text-normal">Product Recommendations (Years):</label> 
</div> 
<div class="o-grid__col-md-4"> 
<input class="c-form-control ng-pristine ng-untouched ng-valid ng-valid-min ng-valid-max ng-valid-required" required="" placeholder="Years" ng-model="rc.recommend.year" min="1" max="3" type="number"> 
</div> 
</div> 
<div class="c-form-group ng-scope" ng-if="!data.answer_taxi"> 
<label class="c-option c-option--right u-px u-py-sm u-clearfix ng-scope" ng-if="!rc.planA && !rc.prestige" ng-click="cc.utils.audit('recommendation_warranty_plan_b')"> 
<input class="ng-pristine ng-untouched ng-valid ng-valid-required" required="" ng-model="rc.recommend.warrantyPlan" value="planB" name="warrantyPlan" type="radio"> 
<i class="c-option__radio"></i> 
Plan B Warranty & Breakdown Recovery 
</label> 
</div> 
</div> 
<div class="o-media c-card c-card__block u-shadowed u-mb-lg u-text-body u-bg-success" ng-if="!rc.prevVap() && rc.VapEligible "> 
<div class="c-form-group"> 
<label class="c-form-control-label u-px u-py-sm u-w-100">Vehicle Asset Protection Options:</label> 
<label class="c-option c-option--right u-px u-py-sm u-clearfix" ng-click="cc.utils.audit('recommend_vap')"> 
<input class="ng-pristine ng-untouched ng-valid ng-valid-required" required="" ng-model="rc.recommend.vapPlan.plan" value="standard" name="vapPlan" type="radio"> 
<i class="c-option__radio"></i> 
Vehicle Asset Protection - Standard Cover 
</label> 
<label class="c-option c-option--right u-px u-py-sm u-clearfix" ng-click="cc.utils.audit('vap_key_facts_checked')"> 
<input class="ng-pristine ng-untouched ng-valid ng-valid-required" required="" ng-model="rc.recommend.vapCheck" name="vapCheck" type="checkbox"> 
<i class="c-option__checkbox"></i> 
You confirm that you have received the VAP key facts leaflet? 
</label> 
</div> 
</div> 
</form> 
<div class="c-form-group"> 
<input class="c-btn c-btn--primary c-btn--block u-pull-right" value="Complete and Preview" ng-click="rc.complete(recommend.$valid); cc.utils.audit('recommend_complete')" ng-disabled="recommend.$invalid" type="submit"> 
</div> 
</div> 
</div> 
</div> 
</div> 
</main> 
</div> 
</div> 
</div> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"> 
<script src="./build/app.js?v=2.13" defer=""> 
<script src="/build/standalone/jspdf.js" defer=""> 
<script src="/build/standalone/sigWebTablet.js" defer=""> 
</body> 
</html> 

이것을 무시하십시오 ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------

답변

1

다음 코드 블록을 사용할 수 있습니다 "Plan B Warranty & Breakdown Recovery" 문자열을 추출하려면 다른 방법으로

System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[@class='c-option c-option--right u-px u-py-sm u-clearfix ng-scope' and not(@class='ng-pristine ng-untouched ng-valid ng-valid-required') and not (@class='c-option__radio')]"))).getAttribute("innerHTML")); 

을, 당신은뿐만 아니라이 코드 블록을 시도 할 수 있습니다 :

WebDriverWait wait20 = new WebDriverWait(driver, 20); 
WebElement ele = wait20.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[@class='c-option c-option--right u-px u-py-sm u-clearfix ng-scope' and not(@class='ng-pristine ng-untouched ng-valid ng-valid-required') and not (@class='c-option__radio')]"))); 
System.out.println(ele.getAttribute("innerHTML")); 
+1

xpath 오류가 수정되었습니다. – DebanjanB

+1

상태를 알려주십시오. xpath가 문자열을 분석하는 올바른 경로입니다. –

+0

@MahmudRiad 감사합니다. 그것이 당신을 위해 일했는지 알고 기뻐. – DebanjanB

1

먼저 클래스 이름별로 요소를 가져옵니다. 그런 다음 텍스트를 가져옵니다.

편집 :

WebElement element = driver.findElement(By.xpath("//label[@class='c-option c-option--right u-px u-py-sm u-clearfix ng-scope' and not(@class='ng-pristine ng-untouched ng-valid ng-valid-required') and not (@class='c-option__radio')]")); 
String desiredText = element.getAttribute("innerHTML"); 
System.out.println(desiredText); 
+1

나는이 텍스트가'label' 태그에 붙어 있다고 생각합니다. 'i' 태그가 닫혀 있고 텍스트가 포함되어 있지 않습니다 –

+0

Bu 제공된 HTML을 사용하면 위의 코드를 사용하여 원하는 String을 얻을 수 있습니다. –

+0

안녕하세요. 여러분의 의견을 알려주십시오. –

0

다음 xp ath는 나를 위해 일했다 :

//input[@ng-model='rc.recommend.warrantyPlan']/following-sibling::i[1] 

그것은 입력 요소를 찾아 내고 그 다음에 첫 번째 요소를 가져온다.

관련 문제