Selenium Select下拉框

在web自動化測試中,經常會遇到下拉框,對列出的選項進行選擇,或者判斷選擇的選項,本文將介紹如何使用Selenium去操作下拉框,實現自動化測試。

測試頁面

URL: //sahitest.com/demo/selectTest.htm

Select方法

使用WebElement類的send_keys(value)方法也可以選擇下拉框(select標籤)的值,但它只能使用選項的value值來定位:

self.driver.get("//sahitest.com/demo/selectTest.htm")
ele = self.driver.find_element_by_id('s3Id')
print(ele.text) # 列印select所有選項值
ele.send_keys("o2val") # 選擇value=o2val 的選項
print(ele.get_attribute("value")) # 列印所選擇的value值

結果:

o1
o2
o3
    With spaces
    With nbsp
o2val

select類所有方法:

  1. select_by_index(index):通過選項index選擇
  2. select_by_value(value):通過選項value值選擇
  3. select_by_visible_text(text):過顯示的文本選擇
  4. deselect_by_index(index):取消選擇,用於多選
  5. deselect_by_value(value):取消選擇,用於多選
  6. deselect_by_visible_text(text):取消選擇,用於多選
  7. deselect_all():全部取消,用於多選
  8. options:所有選項
  9. first_selected_option:第一個選擇的選項(多選情況下)或者當前選擇的選項(單選)
  10. all_selected_options:所有已經選擇的選項

選擇

select_by_index、select_by_value、select_by_visible_text三種方法選擇

first_selected_option.text返回當前所選擇的選項值

self.driver.get("//sahitest.com/demo/selectTest.htm")
ele = self.driver.find_element_by_id('s3Id')
selected_element = Select(ele)  # 實例化Select
selected_element.select_by_index(1)
# for select in selected_element.all_selected_options:
#     print(select.text)
print(selected_element.first_selected_option.text) # 列印當前選擇的選項值
sleep(1)
selected_element.select_by_value("o2val")
print(selected_element.first_selected_option.text)
sleep(1)
selected_element.select_by_visible_text("o3")
print(selected_element.first_selected_option.text)
sleep(1)

結果:

o1 
o2 
o3

取消選擇

取消選擇deselect不能用於下拉框選擇,只能用於多選,即屬性multiple=”multiple”的select標籤。

取消選擇有deselect_by_indexdeselect_by_valuedeselect_by_visible_textdeselect_all四種方法

all_selected_options返回所有已選擇的選項

self.driver.get("//sahitest.com/demo/selectTest.htm")
## 多選
ele2 = self.driver.find_element_by_id('s4Id')
selected_element2 = Select(ele2)  # 實例化Select
selected_element2.select_by_index(1)
selected_element2.select_by_index(2)
selected_element2.select_by_index(3)
print("######")
for select in selected_element2.all_selected_options:
    print(select.text)

print("######")
selected_element2.deselect_by_index(1)
for select in selected_element2.all_selected_options:
    print(select.text)

print("######")
selected_element2.deselect_by_value("o2val")
for select in selected_element2.all_selected_options:
    print(select.text)

print("######")
selected_element2.deselect_by_visible_text("o3")
for select in selected_element2.all_selected_options:
    print(select.text)

結果:

######
o1
o2
o3
######
o2
o3
######
o3
######

–THE END–

文章標題:Selenium Select下拉框
本文作者:hiyo
本文鏈接://hiyong.gitee.io/posts/selenium-select/
歡迎關注公眾號:「測試開發小記」及時接收最新技術文章!