2016-09-27 14 views
0

ここではリスト項目を見つけることができません。動的に生成されたidsでリスト項目を選択する方法 - Selenium test Python

<ul id="select2-id_faculty_advisor-results" class="select2-results__options" role="tree" aria-multiselectable="true" aria-expanded="true" aria-hidden="false"> 
    <li id="select2-id_faculty_advisor-result-0pu4-1" class="select2-results__option select2-results__option--highlighted" role="treeitem" aria-selected="true">Alice</li> 
    <li id="select2-id_faculty_advisor-result-cayw-2" class="select2-results__option" role="treeitem" aria-selected="false">Bob</li> 
    <li id="select2-id_faculty_advisor-result-4h8e-3" class="select2-results__option" role="treeitem" aria-selected="false">Candy</li> 
    <li id="select2-id_faculty_advisor-result-el4l-4" class="select2-results__option" role="treeitem" aria-selected="false">Dark</li> 
</ul> 

上記のとおり、中間の文字が動的に生成されるため、idで要素を見つけることはできません。特定の要素を見つける方法の任意のアイデア??

答えて

0

のようなCSSのセレクタに変化していないIDの一部を使用します。
li[id*='faculty_advisor-result'][aria-selected='false']またはその他の属性:必要な場合にも、余分な属性を追加することができます
li[id*='faculty_advisor-result']

、例えばのようなARIA-選択。

あなたが特定のオプションのいずれかの特定の属性を持っていない場合、あなたは次のようにそのオプションを持っている要素を選択するXPathを使用することができます
//li[contains(@id, 'faculty_advisor-result')][text()='Alice'] あなたは[@role='tree']のような結果を狭めるために、余分なフィルタを追加することができ、同じように

+0

ありがとう@laudaそれは動作します! :) – user6830228

0

のxpathによって、リストの収集を行い、それを行うための最善の方法は、「// UL [IDの= 『SELECT2-id_faculty_advisor-結果』 @] /リー」

あなたがコレクションから、インデックスによってそれらを選択することができ、その後に。

関連する問題