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

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

前言
最近由於工作原因,更新慢了一點,今天終於抽出一點時間給大家繼續更新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("20")

 

六、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")
在學習過程中有遇到疑問的,可以加selenium(python+java) QQ羣交流:646645429

《selenium+python高級教程》已出書:selenium webdriver基於Python源碼案例

(購買此書送對應PDF版本)

 

 

https://www.cnblogs.com/yoyoketang/p/6128636.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章