java
  • xpath
  • selenium-chromedriver
  • 2017-09-22 1 views -3 likes 
    -3

    아래 코드를 사용하기 전에 약간의 성공을 거두었습니다. 여기셀렌으로 자바 단추를 클릭 할 수 없습니다.

    driver.findElement(By.xpath("//div[@id='container']/div[@id='main']/div[@id='columnOne']/div[@class='ng-scope']/div[@class='content ng-scope']/div/div[@class='ng-isolate-scope']/div[@class='tab-content']/div[@class='tab-pane ng-scope active']/div[@class='ng-scope']/div[@id='uploadRequests']/div[@id='fileUploadPanel']/div[@class/span[@class='btn btn-primary']='panel-body']/div/div[@class='panel panel-default']/div[@class='panel-heading clearfix']/div[@class='pull-left']/label")).click(); 
    

    driver.findElement(By.xpath("//xpath")).click();

    는 HTML입니다 :

    <div class="panel-body"> 
     
    \t \t \t <div> 
     
    \t \t \t \t <div class="panel panel-default"> 
     
    \t \t \t \t \t <div class="panel-heading clearfix"> 
     
    \t \t \t \t \t \t <div class="pull-left"> 
     
    \t \t \t \t \t \t \t <label for="inputFile"><input class="hidden" type="file" name="inputFile" id="inputFile" on-change-action="addFile" multiple=""> 
     
    \t \t \t \t \t \t \t \t <span class="btn btn-primary xh-highlight"><i class="glyphicon glyphicon-plus"></i>Add</span> 
     
    \t \t \t \t \t \t \t </label> 
     
    \t \t \t \t \t \t </div> 
     
    \t \t \t \t \t \t <div class="pull-right ng-hide" ng-show="files.length > 0"><button ng-click="removeAll()" class="btn btn-primary"><i class="glyphicon glyphicon-remove"></i>Clear All</button></div> 
     
    \t \t \t \t \t </div> 
     
    \t \t \t \t \t <!-- ngRepeat: file in files --> 
     
    \t \t \t \t \t <div class="panel-body ng-hide" ng-show="progressBar"> 
     
    \t \t \t \t \t \t <div> 
     
    \t \t \t \t \t \t \t <div class="progress-striped active progress ng-isolate-scope" value="uploadProgress" type="info"> 
     
        <div class="progress-bar progress-bar-info" ng-class="type &amp;&amp; 'progress-bar-' + type" role="progressbar" aria-valuenow="" aria-valuemin="0" aria-valuemax="100" ng-style="{width: (percent < 100 ? percent : 100) + '%'}" aria-valuetext="%" aria-labelledby="progressbar" ng-transclude="" style="width: 100%;"></div> 
     
    </div> 
     
    \t \t \t \t \t \t </div> 
     
    \t \t \t \t \t \t <div> 
     
    \t \t \t \t \t \t \t <button class="btn btn-primary" ng-click="progressBar = false">Continue</button></div> 
     
    \t \t \t \t \t \t </div> 
     
    \t \t \t \t \t </div> 
     
    \t \t \t \t </div> 
     
    \t \t \t </div>

    나는 보통 By.className (클래스 명)를 시도, By.id (ID)에 의해. By.linkText (linkText) By.xpath 앞에이 있지만 최후의 수단으로 여기에도 사용할 수 없습니다. o 사이트에 로그온 한 후 "파일 추가"버튼을 클릭하십시오.

    +0

    이 코드를 시도 : -. 'driver.findElement (By.xpath ("// 범위 [@ 클래스 ='btn을 BTN-차 ']"))를 클릭합니다() ; –

    +0

    이 코드를 시도해보십시오 : - driver.findElement (By.cssSelector ("span.btn.btn-primary")). click(); – kushal

    답변

    -1

    xpath 사용을 피하십시오. CSS 선택기 또는 클래스와 같은 다른 선택기를 사용할 가능성이없는 경우는 거의 없습니다. 또한 xpath가 작동하지 않는 이유를 알아 내기위한 HTML 코드가 충분하지 않습니다. 추가 정보를 입력하십시오.

    PS이 시도 :

    driver.findElement(By.xpath("//input[@id='inputFile']/span[@class='btn btn-primary']")).click(); 
    
    +0

    설명해 주시겠습니까? 왜이 편지를 썼습니까? 'xpath를 사용하지 않도록하십시오 .' 그리고 중요한 부분은'xpath' 로케이터를 사용하여 web 요소를 찾는 것입니다. –

    +0

    물론, xpath를 사용하여 요소를 찾을 때 요소를 찾는 데 오랜 시간이 걸리고 작성자와 같은 오류가 발생할 수 있습니다. 하지만 문제는 xpath에 관한 것이 었습니다. xpath를 사용하여 요소를 찾기위한 제안을 쓴 이유입니다. 그렇지 않으면 질문에 대한 대답이되지 않을 수 있습니다. 그렇지 않습니까? –

    +0

    답장을 보내 주셔서 감사합니다. 위에 html을 추가했습니다. –

    관련 문제