selenium3 + python - select定位


一、Select模塊(index)

    1.導入Select模塊。直接根據屬性或索引定位
    2.先要導入select方法:from selenium.webdriver.support.select import Select
    3.然后通過select選項的索引來定位選擇對應選項(從0開始計數),如選擇第三個選項:select_by_index(2)
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()   :返回所有的選項

二、select遇到的坑

    1.在操作百度設置里面,點擊“保存設置”按鈕時,alert彈出框沒有彈出來。(Ie瀏覽器是可以的)

    2.分析原因:經過慢慢調試后發現,在點擊"保存設置"按鈕時,由於前面的select操作后,失去了焦點

    3.解決辦法:在select操作后,做個click()點擊操作


代碼整理如下:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time as t
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(10)
# 鼠標移動到“設置”按鈕
mouse = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索設置").click()
# 通過text:select_by_visible_text()
s = driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每頁顯示50條")
t.sleep(3)
s.click()
driver.find_element_by_link_text("保存設置").click()
t.sleep(2)
#獲取alert彈框
t = driver.switch_to_alert()
print(t.text)
t.accept()


# # 分兩步:先定位下拉框,再點擊選項
# s = driver.find_element_by_id("nr")
# s.find_element_by_xpath("//option[@value='50']").click()

# # 另外一種寫法
# driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()

# # 直接通過xpath定位
# driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click()

# # 通過索引:select_by_index()
# s = driver.find_element_by_id("nr")
# Select(s).select_by_index(2)

# # 通過value:select_by_value()
# s = driver.find_element_by_id("nr")
# Select(s).select_by_value("20")

參考鏈接:https://www.cnblogs.com/yoyoketang/p/6128636.html


免責聲明!

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



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