2017-10-26 3 views
0

私はページに生成された車のタイプのリストを動的に作成しました。ページ上にテキスト要素を配置しようとしています

私はテキスト文字列で要素を見つけて、その横にあるチェックボックスをクリックすることができるようにしたい(テキストをダブルクリックすると同じ結果になります)

私は現在使用しています:

   //select car makes 
      Actions action = new Actions(driver); 
      action.moveToElement(driver.findElement(By.xpath("//div[@id='MakesList']/label[2]/i"))).doubleClick().build().perform(); 

しかし、これは非常に薄れています。いつも私が望むオプションを選択するとは限りません。

だから私は、文字列を取得するには、 "ALFA ROMEO" をしようとしています:

action.moveToElement(driver.findElement(By.xpath("//label[contains(.,' ALFA ROMEO ')]"))).doubleClick().build().perform(); 

しかし、私は、オプションを選択していません。感謝

<label class="c-option c-option-search--right u-px u-py-sm u-bb u-m-0 ng-binding ng-scope" ng-repeat="item in label.buckets" ng-class="{ 'u-bg-faded u-text-muted u-disabled' : sc.doc_count[label.id + item.key] == 0 }"><input type="checkbox" name="capMakeName" value="alfaromeo" checklist-value="item" ng-model="checked" class="ng-scope ng-pristine ng-untouched ng-valid" checklist-model="sc.searchCriteria.selected.makes"> 
    <i class="c-option__checkbox"></i> ALFA ROMEO <span class="u-text-muted u-text-80 ng-binding">(9)</span> 
</label> 

任意のポインタ:ここ

はhtmlです。あなたのHTML内

+0

それは角度のアプリです。クリックを続行する前に要素が完全に読み込まれていることを確認しましたか? –

答えて

3

あります

<input type="checkbox" name="capMakeName" value="alfaromeo" 

あなたの最終目標は、チェックボックスをクリックすることであるならば、あなたはそれを行うために、これらに関する情報を使用することができます。

driver.findElement(By.xpath("//input[@name='capMakeName' and @value='alfaromeo']")).click(); 
0

場合は、最初に確認することができ要素が表示される(または読み込まれるまで待つ)

driver.findElements(By.xpath("//input[@name='capMakeName' and @value='alfaromeo']").size() != 0 
0

すべてのチェックボックスをあなたが望むテキストのものをクリックしてください。

public void clickCheckBoxWithText(String text){ 
    List<WebElement> checkboxes= driver.findElements(By.cssSelector("input[type='checkbox']")); 
    for(WebElement checkbox:checkboxes){ 
     if(checkbox.getText().equals(text)) { 
      checkbox.click(); 
      break; 
     } 
    } 
} 
関連する問題