Selenium Webdriver を使用して、ユーザーごとに異なるオプションを備えたドロップダウン メニューを備えた Web サイトをテストします。オプションの数とその値は常に異なります。ソースを見ると、以下のコードが表示されます。Python でそれをスクレイピングして、利用可能なすべてのオプション値のリストを作成する方法の例を教えてください。
<div _ngcontent-pxo-26="" class="col-md-6">
<div _ngcontent-pxo-26="" class="form-group">
<label _ngcontent-pxo-26="" for="Filter_ClientRegion">Region</label>
<select _ngcontent-pxo-26="" class="form-control ng-pristine ng-valid ng-touched" id="Filter_ClientRegion">
<option _ngcontent-pxo-26="" value="">All</option>
<!--template bindings={}--
<option _ngcontent-pxo-26="" value="A">A</option>
<option _ngcontent-pxo-26="" value="B">B</option>
<option _ngcontent-pxo-26="" value="C">C</option>
<option _ngcontent-pxo-26="" value="D">D</option>
<option _ngcontent-pxo-26="" value="E">E</option>
<option _ngcontent-pxo-26="" value="F">F</option>
<option _ngcontent-pxo-26="" value="G">G</option>
</select>
</div>
</div>
select
具体的なoption
、あなたのようなものを使用することができます。
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("some.site")
el = driver.find_element_by_id('Filter_ClientRegion')
for option in el.find_elements_by_tag_name('option'):
if option.text == 'A': # or B or C...
option.click() # select() for older versions
break
を取得するにvalues
はoption
、次を使用できます。
options = []
driver.get("some.site")
el = driver.find_element_by_id('Filter_ClientRegion')
for option in el.find_elements_by_tag_name('option'):
options.append(option.get_attribute("value"))
# print(options)
# A B C ...
注:
1. 完全なソース コードがないため、上記のコードを完全にテストすることはできません
。 2.options
コードはコメント ブロック内にあり、 <!--template bindings={}--
その値を取得できない場合があることに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加