2017-11-20 4 views
1

を使用してオプションを選択して、私は、このhtmlコードを持っている:セレン

<select data-val="true" data-val-number="Int32。" data-val-required="Int32" id="CategoryData" name="ParentId" onchange="sel3(this);"> 
<option value="0">-- category --</option> 
<option selected="selected" value="845">a</option> 
<option value="846">b</option> 
<option value="847">c</option> 
</select> 

は、私は、テキスト "A"、 "B"、 "C" を抽出したいです。

マイコード:

select_box = driver.find_element_by_id("CategoryList3") 
options = [x for x in select_box.find_elements_by_tag_name("option")] 
for element in options: 
    print (element.get_attribute("text")) 

出力:

-- category -- 
a 
b 
c 

これも出力するであろう " - カテゴリ - " が、私はこの1つを望んでいません。 私はセレニウムについてはかなり新しいので、アドバイスをいただければ幸いです!

+0

' - category - 'は '

答えて

1

値が0でないことを確認するのはどうでしょうか?

from selenium.webdriver.support.ui import Select 
select_box = Select(driver.find_element_by_id("CategoryList3")) 
for option in select_box.options: 
    if option.get_attribute('value') != '0': 
     print(option.text) 
0

スライスを使用してリストの最初の要素を削除できます。次のコードを使用することができます与えられたHTMLからテキスト "A"、 "B"、 "C" を抽出するには、forループ

select_box = driver.find_element_by_id("CategoryList3") 
options = [x for x in select_box.find_elements_by_tag_name("option")] 
for element in options[1:]: 
    print (element.get_attribute("text")) 
0

に: '[1]オプションにオプションを'

だけ変更ブロック:あなたの質問は、テキスト-- category --ではなく、任意のvalueでオプションを除外するためにあったよう

option_select = Select(driver.find_element_by_id('CategoryData')) 
for opt in option_select.options: 
    if ("-- category --" not in opt.get_attribute('innerHTML')): 
     print(opt.get_attribute('innerHTML')) 

私はvalueを使用してinnerHTMLの代わりに使用してきました。