无法在 selenium python 中打印 select 中的选项文本
Unable to print text of options in select in selenium python
我尝试打印出 select 元素中所有选项的文本。但结果只是空字符串,尽管该列表的 len 为真。
我读过其他一些类似的问题,但没有解决方案适合我。
这是我的一些尝试:
尝试 1:
select = UI.Select(browserdriver.find_element_by_xpath("//select[@id='Xuất xứ']"))
#select = Select(browserdriver.find_element_by_xpath("//select[@id='Xuất xứ']"))
options = select.options
print(len(options))
for item in options:
print(item.text, item.get_attribute('value'))
结果:
17
ko972
ko973
ko974
ko975
ko976
ko977
ko978
ko979
ko980
ko981
ko982
ko983
ko984
ko985
ko986
ko987
--> 这意味着 xpath 是真的,我可以到达那些选项的值属性。 17 是选项的长度。但是 item.text returns 空
这是 select 元素的 html:
<select class="form-control selectized" data-bind="selectize:SelectedAtt, selectizeOptions:AttributeValues, optionsText: 'Value', value: SelectedAtt, enable: $parent.ProductDetail().CanEdit, optionsCaption: 'Vui lòng chọn'
, attr: {id: $data.Name() }
" tabindex="-1" id="Xuất xứ" style="display: none;">
<option value="">Vui lòng chọn</option>
<option value="ko947">Hàn Quốc</option>
<option value="ko948">Mỹ</option>
<option value="ko949">Anh</option>
<option value="ko950">Pháp</option>
<option value="ko951">Thụy Sỹ</option>
<option value="ko952">Nga</option>
<option value="ko953">Na Uy</option>
<option value="ko954">Nhật</option>
<option value="ko955">Đài Loan</option>
<option value="ko956">Trung Quốc</option>
<option value="ko957">indonesia</option>
<option value="ko958">Singapore</option>
<option value="ko959">Malaysia</option>
<option value="ko960">Khác</option>
<option value="ko961">Việt nam</option>
<option value="ko962">Việt Nam</option>
</select>
尝试 2:
options=browserdriver.find_elements_by_xpath("//*[@id='Xuất xứ']/option")
print(len(options))
for item in options:
print(item.text)
结果与 returns 真正的选项长度相同,但该列表中的每个项目都是空的。
尝试 2 的结果:
17
请分享我这个问题的解决方案。我想获取这些选项的文本。
非常感谢
Listing select option values with Selenium and Python
考虑使用 innerText
property
for item in select.options:
print(item.get_attribute('innerText'), item.get_attribute('value'))
如果您考虑 Page Object Model 设计模式,这也可能是有益的,它将允许您将测试逻辑从 DOM 中分离出来,测试开发过程,尤其是 support/fixing 将是更快更容易。
更多信息:Page Objects
打印 options.Use 的文本值 属性 值 innerHTML
options=browserdriver.find_elements_by_xpath("//*[@id='Xuất xứ']/option")
print(len(options))
for item in options:
print(item.get_attribute('innerHTML'))
输出:
17
Vui lòng chọn
Hàn Quốc
Mỹ
Anh
Pháp
Thụy Sỹ
Nga
Na Uy
Nhật
Đài Loan
Trung Quốc
indonesia
Singapore
Malaysia
Khác
Việt nam
Việt Nam
我尝试打印出 select 元素中所有选项的文本。但结果只是空字符串,尽管该列表的 len 为真。 我读过其他一些类似的问题,但没有解决方案适合我。 这是我的一些尝试: 尝试 1:
select = UI.Select(browserdriver.find_element_by_xpath("//select[@id='Xuất xứ']"))
#select = Select(browserdriver.find_element_by_xpath("//select[@id='Xuất xứ']"))
options = select.options
print(len(options))
for item in options:
print(item.text, item.get_attribute('value'))
结果:
17
ko972
ko973
ko974
ko975
ko976
ko977
ko978
ko979
ko980
ko981
ko982
ko983
ko984
ko985
ko986
ko987
--> 这意味着 xpath 是真的,我可以到达那些选项的值属性。 17 是选项的长度。但是 item.text returns 空 这是 select 元素的 html:
<select class="form-control selectized" data-bind="selectize:SelectedAtt, selectizeOptions:AttributeValues, optionsText: 'Value', value: SelectedAtt, enable: $parent.ProductDetail().CanEdit, optionsCaption: 'Vui lòng chọn'
, attr: {id: $data.Name() }
" tabindex="-1" id="Xuất xứ" style="display: none;">
<option value="">Vui lòng chọn</option>
<option value="ko947">Hàn Quốc</option>
<option value="ko948">Mỹ</option>
<option value="ko949">Anh</option>
<option value="ko950">Pháp</option>
<option value="ko951">Thụy Sỹ</option>
<option value="ko952">Nga</option>
<option value="ko953">Na Uy</option>
<option value="ko954">Nhật</option>
<option value="ko955">Đài Loan</option>
<option value="ko956">Trung Quốc</option>
<option value="ko957">indonesia</option>
<option value="ko958">Singapore</option>
<option value="ko959">Malaysia</option>
<option value="ko960">Khác</option>
<option value="ko961">Việt nam</option>
<option value="ko962">Việt Nam</option>
</select>
尝试 2:
options=browserdriver.find_elements_by_xpath("//*[@id='Xuất xứ']/option")
print(len(options))
for item in options:
print(item.text)
结果与 returns 真正的选项长度相同,但该列表中的每个项目都是空的。 尝试 2 的结果:
17
请分享我这个问题的解决方案。我想获取这些选项的文本。 非常感谢
Listing select option values with Selenium and Python
考虑使用 innerText
property
for item in select.options:
print(item.get_attribute('innerText'), item.get_attribute('value'))
如果您考虑 Page Object Model 设计模式,这也可能是有益的,它将允许您将测试逻辑从 DOM 中分离出来,测试开发过程,尤其是 support/fixing 将是更快更容易。
更多信息:Page Objects
打印 options.Use 的文本值 属性 值 innerHTML
options=browserdriver.find_elements_by_xpath("//*[@id='Xuất xứ']/option")
print(len(options))
for item in options:
print(item.get_attribute('innerHTML'))
输出:
17
Vui lòng chọn
Hàn Quốc
Mỹ
Anh
Pháp
Thụy Sỹ
Nga
Na Uy
Nhật
Đài Loan
Trung Quốc
indonesia
Singapore
Malaysia
Khác
Việt nam
Việt Nam