无法在 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

















请分享我这个问题的解决方案。我想获取这些选项的文本。 非常感谢

我的一些读物: https://sqa.stackexchange.com/questions/1355/what-is-the-correct-way-to-select-an-option-using-seleniums-python-webdriver/2258#2258

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