2017-09-22 7 views
-3

私は以下のコードを使用する前にこれまでいくつかの成功を収めました。ここでセレンのJavaでボタンをクリックできません

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

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(); 

は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"))。 – 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を追加しました。 –

関連する問題