我有这个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
这也会输出“ - category - ”,但我不想要这个。 我对硒很新,所以任何建议都表示赞赏!
答案 0 :(得分: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)
答案 1 :(得分:0)
你可以使用切片删除列表中的第一个元素。
只需修改for循环中选项[1:]'的选项
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"))
答案 2 :(得分:0)
提取文字&#34; a&#34;,&#34; b&#34;,&#34; c&#34;从给定的HTML
开始,您可以使用以下代码块:
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'))
我使用
innerHTML
而非使用value
,因为您的问题是排除包含文字-- category --
但不包含任何value
的选项。