selenium 下拉框(select)處理


web自動化中,常見的場景還有一個下拉框的選擇,哪么在selenium中如何做下拉框的操作呢?

select

select在HTML中表示元素名,可創建單選或多選菜單。

HTML中select長什么樣子:

select在HTML中元素名,下面有選擇操作,選擇內容在select中包含

復制代碼
<html>

<body>

<form>
<center>
<select name="anjing">
<option value="boke">請關注安靜博客</option>
<option value="study">今天學習了嗎?</option>
<option value="daily">今天看安靜博客了嗎?</option>
<option value="like">點贊了嗎?</option>
<option value="attention">關注了嗎?</option>
</center>
</select>
</form>

</body>
</html>
復制代碼

select操作方法

selenium中想要操作下拉框需要導入新的模塊 from selenium.webdriver.support.select import Select 

Select有以下操作方法:

方法 說明
select_by_index() 通過索引定位
select_by_value()  通過value值定位
select_by_visible_text() 通過文本值定位
deselect_all() 取消所有選項
deselect_by_index()  取消對應index選項
deselect_by_value()   取消對應value選項
deselect_by_visible_text()  取消對應文本選項
first_selected_option()  返回第一個選項
all_selected_options()  返回所有的選項
options() 返回所以的選擇項
all_selected_options() 返回所以已選中的選擇項
first_selected_option() 返回選中的第一個選擇項

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

小試牛刀

方法也認識了,select也知道是什么樣子的了,那么我們開始進行操作

1、想要操作select,首先定位到select上,然后進行實例化

2、通過Select進行通過下標,value,text進行定位下拉框

3、加入判斷預期值是否切換到下拉框中

復制代碼
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
path = r'E:\web\select.html'
driver.get(path)
# 通過顯示等待的方法判斷元素是否出現
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.NAME,"anjing")))
select = driver.find_element_by_name('anjing')
# 根據下標進行選擇,從0開始
Select(select).select_by_index(1)
time.sleep(2)
# 根據value的值選擇
Select(select).select_by_value('daily')
time.sleep(2)
# 根基text選擇
Select(select).select_by_visible_text('關注了嗎?')
time.sleep(2)
# 判斷選擇是否預期
WebDriverWait(driver,20).until(EC.element_located_to_be_selected((By.XPATH,'//*[contains(text(),"關注了")]')))
復制代碼

展示圖:

 

原文鏈接:
https://www.cnblogs.com/qican/p/13521606.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM