乾貨分享|UI自動化如何定位下拉框(Python)?

選擇獲取反選下拉框元素首先要實例化select元素

from selenium.webdriver.support.ui import Select # 引入包nselect_element=Select(element) # 實例化selectn

三種常用選擇方法

select_element.select_by_index(index) #根據index定位,從0開始select_element.select_by_value(value) #根據value屬性定位nselect_element.select_by_visible_text(text) #根據文本定位n

反選的方法

select_element.deselect_by_index(index) #根據index定位,從0開始select_element.deselect_by_value(value) #根據value屬性定位nselect_element.deselect_by_visible_text(text) #根據文本定位nselect_element.deselect_all() #取消全部選擇n

獲取選項的值

select_element.options #返回這個select元素所有的optionsselect_element.all_selected_options #所有被選中的optionsnselect_element.first_selected_option #第一個被選中的optionn

創建select.html 文件,代碼如下:

<form>n<select id="s1Id">n<option></option>n<option value="o1" id="id1">o1</option>n<option value="o2" id="id2">o2</option>n<option value="o3" id="id3">o3</option>n</select>n<br/><br/>n<select id="s2Id" multiple="multiple" size="6">n<option></option>n<option value="o1val">o1</option>n<option value="o2val">o2</option>n<option value="o3val">o3</option>n<option value="o4val"> With spaces</option>n<option value="o4val">    With nbsp</option>n</select></form>n

示例1:採用三種方法依次選擇s1Id的值

s1= Select(driver.find_element_by_id(s1Id)) # 實例化Select,頁面第一個下拉框s1.select_by_index(1) #選擇第二項選項:o1ns1.select_by_value("o2") #選擇value="o2"的項ns1.select_by_visible_text("o3") #選擇text="o3"的值,即在下拉時我們可以看到的文本n

示例2:想查看一個s1Id所有的選項

s1 = Select(driver.find_element_by_id(s1Id))for select in s1.options:nprint(select.text)n

示例3:查看我已選中的所有選項,s2Id可以多選的選擇框

s4 = Select(driver.find_element_by_id(s2Id))ns4.select_by_index(1) # 根據順序選擇第2個ns4.select_by_value("o2val") #根據value屬性選擇o2valns4.select_by_visible_text("With spaces") # 根據展示文本選擇Withspacesns4.select_by_visible_text(u" With nbsp") # 注意空格,只有為是才用空格nfor nselect in s4.all_selected_options: # 循環獲取所有的值nprint(select.text)n

注意:只有為 的空格才是空格,在html中代碼只有 才代表空格,代碼中的空格不是空格。

示例4:查看選擇框的默認值或選中的值

s1 = Select(driver.find_element_by_id(s1Id))nprint(s1.first_selected_option.text) # 查看選擇默認值ns1.select_by_value("o2")nprint (s2.first_selected_option.text) # 查看選中的值n

示例5:取消選擇

s4 =Select(driver.find_element_by_id(s2Id))ns4.select_by_index(1)s4.select_by_value("o2val")ns4.select_by_visible_text("With spaces")ns4.select_by_visible_text(u" With nbsp")ns4.deselect_by_index(1)n # 根據值順序取消選擇ns4.deselect_by_value("o2val")n # 根據value屬性取消選擇ns4.deselect_by_visible_text("With spaces")n # 根據文本取消選擇ns4.select_by_value("o2val")s4.select_by_index(1)s4.deselect_all() n#取消全部選擇n

如果這篇文章對您有幫助,請關注下本專欄,分享給更多的人,實現這篇文章的價值!

推薦閱讀:

給大家來6段你遲早用的上的常用linux 實戰命令
優秀的測試工程師如何進行需求分析?
想轉行軟體測試,在考慮是否報培訓班,聽到有人說HR一看到簡歷上發現有培訓班出來的直接pass?求回答?
一個好的軟體測試工程師到底需要什麼技術?

TAG:自动化测试 | 软件测试工程师 | 软件测试 |