Selenium2+python自動化15-select下拉框

來源:互聯網
上載者:User

標籤:下拉選項框   通過   取消   方式   今天   下拉   wrap   find   元素   

前言
最近由於工作原因,更新慢了一點,今天終於抽出一點時間給大家繼續更新selenium系列,學習的指令碼不能停止,希望小夥伴能多多支援。

本篇以百度設定下拉選項框為案例,詳細介紹select下拉框相關的操作方法。

一、認識select
    1.開啟百度-設定-搜尋設定介面,如所示

    2.箭頭所指位置,就是select選項框,開啟頁面元素定位,下方紅色框框地區,可以看到select標籤屬性:
<select id="nr" name="NR">
    3.選項有三個
<option selected="" value="10">每頁顯示10條</option>
<option value="20">每頁顯示20條</option>
<option value="50">每頁顯示50條</option>

二、二次定位
    1.定位select裡的選項有多種方式,這裡先介紹一種簡單的方法:二次定位

    2.基本思路,先定位select框,再定位select裡的選項

    3.代碼如下

    4.還有另外一種寫法也是可以的,把最下面兩步合并成為一步:

driver.find_element_by_id("nr").find_element_by_xpath("//option[@value=‘50‘]").click()

三、直接定位
    1.有很多小夥伴說firebug只能定位到select框,不能定位到裡面的選項,其實是工具掌握的不太熟練。小編接下來教大家如何定位裡面的選項。
    2.用direbug定位到select後,下方查看元素屬性地方,點select標籤前面的+號,就可以展開裡面的選項內容了。



    3.然後自己寫xpath定位或者css,一次性直接定位到option上的內容。(不會自己手寫的,回頭看前面的元素定位內容)

四、Select模組(index)
    1.除了上面介紹的兩種簡單的方法定位到select選項,selenium還提供了更進階的玩法,匯入Select模組。直接根據屬性或索引定位。
    2.先要匯入select方法:

from selenium.webdriver.support.select import Select

    3.然後通過select選項的索引來定位選擇對應選項(從0開始計數),如選擇第三個選項:select_by_index(2)


五、Select模組(value)
    1.Select模組裡面除了index的方法,還有一個方法,通過選項的value值來定位。每個選項,都有對應的value值,如
<select id="nr" name="NR">
<option selected="" value="10">每頁顯示10條</option>

<option value="20">每頁顯示20條</option>

<option value="50">每頁顯示50條</option>
    2.第二個選項對應的value值就是“20”:select_by_value(2)


六、Select模組(text)
    1.Select模組裡面還有一個更加進階的功能,可以直接通過選項的常值內容來定位。
    2.定位“每頁顯示50條”:select_by_visible_text("每頁顯示50條")


七、Select模組其它方法
    1.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()   :返回所有的選項

 

 

八、整理代碼如下:
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)
# 滑鼠移動到“設定”按鈕
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條")

# # 分兩步:先定位下拉框,再點擊選項
# 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")

Selenium2+python自動化15-select下拉框

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.