選擇框

請大家打開這個網址 http://f.python3.vip/webauto/test2.html

並且按F12,觀察HTML的內容

常見的選擇框包括: radio框、checkbox框、select框

radio框

radio框選擇選項,直接用WebElement的click方法,模擬用戶點擊就可以了。

比如, 我們要在下面的html中:

  • 先打印當前選中的老師名字
  • 再選擇 小雷老師
<div id="s_radio">
  <input type="radio" name="teacher" value="小江老師">小江老師<br>
  <input type="radio" name="teacher" value="小雷老師">小雷老師<br>
  <input type="radio" name="teacher" value="小凱老師" checked="checked">小凱老師
</div>

對應的代碼如下

# 獲取當前選中的元素
element = wd.find_element_by_css_selector(
  '#s_radio input[checked=checked]')
print('當前選中的是: ' + element.get_attribute('value'))

# 點選 小雷老師
wd.find_element_by_css_selector(
  '#s_radio input[value="小雷老師"]').click()

checkbox框

對checkbox進行選擇,也是直接用 WebElement 的 click 方法,模擬用戶點擊選擇。

需要注意的是,要選中checkbox的一個選項,必須 先獲取當前該複選框的狀態 ,如果該選項已經勾選了,就不能再點擊。否則反而會取消選擇。

比如, 我們要在下面的html中:選中 小雷老師

<div id="s_checkbox">
  <input type="checkbox" name="teacher" value="小江老師">小江老師<br>
  <input type="checkbox" name="teacher" value="小雷老師">小雷老師<br>
  <input type="checkbox" name="teacher" value="小凱老師" checked="checked">小凱老師
</div>

我們的思路可以是這樣:

  • 先把 已經選中的選項全部點擊一下,確保都是未選狀態
  • 再點擊 小雷老師

示例代碼

# 先把 已經選中的選項全部點擊一下
elements = wd.find_elements_by_css_selector(
  '#s_checkbox input[checked="checked"]')

for element in elements:
    element.click()

# 再點擊 小雷老師
wd.find_element_by_css_selector(
  "#s_checkbox input[value='小雷老師']").click()

select框

radio框及checkbox框都是input元素,只是裏面的type不同而已。

select框 則是一個新的select標籤,大家可以對照瀏覽器網頁內容查看一下

對於Select 選擇框, Selenium 專門提供了一個 Select類 進行操作。

Select類 提供瞭如下的方法

  • select_by_value

根據選項的 value屬性值 ,選擇元素。

比如,下面的HTML,

<option value="foo">Bar</option>

就可以根據 foo 這個值選擇該選項,

s.select_by_value('foo')

 

  • select_by_index

根據選項的 次序 (從1開始),選擇元素

 

  • select_by_visible_text

根據選項的 可見文本 ,選擇元素。

比如,下面的HTML,

<option value="foo">Bar</option>

就可以根據 Bar 這個內容,選擇該選項

s.select_by_visible_text('Bar')

 

  • deselect_by_value

根據選項的value屬性值, 去除 選中元素

 

  • deselect_by_index

根據選項的次序,去除 選中元素

 

  • deselect_by_visible_text

根據選項的可見文本,去除 選中元素

 

  • deselect_all

去除 選中所有元素

Select單選框

對於 select單選框,操作比較簡單:

不管原來選的是什麼,直接用Select方法選擇即可。

例如,選擇示例裏面的小雷老師,示例代碼如下

# 導入Select類
from selenium.webdriver.support.ui import Select

# 創建Select對象
select = Select(wd.find_element_by_id("ss_single"))

# 通過 Select 對象選中小雷老師
select.select_by_visible_text("小雷老師")

Select多選框

對於select多選框,要選中某幾個選項,要注意去掉原來已經選中的選項。

例如,我們選擇示例多選框中的 小雷老師 和 小凱老師

可以用select類 的deselect_all方法,清除所有 已經選中 的選項。

然後再通過 select_by_visible_text方法 選擇 小雷老師 和 小凱老師。

示例代碼如下:

# 導入Select類
from selenium.webdriver.support.ui import Select

# 創建Select對象
select = Select(wd.find_element_by_id("ss_multi"))

# 清除所有 已經選中 的選項
select.deselect_all()

# 選擇小雷老師 和 小凱老師
select.select_by_visible_text("小雷老師")
select.select_by_visible_text("小凱老師")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章