selenium2 填充表單

2021-07-02 17:04 更新

我們已經(jīng)知道怎么向一個(gè)文本框和文本域輸入內(nèi)容,但是其他元素我們要怎么處理? 你可以觸發(fā)下拉選框,并且用?setSelected?方法來讓一個(gè)選項(xiàng)被選中,處理選擇框不會(huì)很困難:

element = driver.find_element_by_xpath("http://select[@name='name']")
all_options = element.find_elements_by_tag_name("option")
for option in all_options:
    print("Value is: %s") % option.get_attribute("value")
    option.click()

這段代碼會(huì)找到頁面的第一個(gè)選擇框元素,然后遍歷每個(gè)選項(xiàng),輸出他們的值,并且依次選中。

你可以看到,這種方式處理選擇框不太高效,?WebDriver?支持許多類,其中包括一個(gè)?Select?的類,給我們提供了許多有用的方法:

from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name'))
select.selct_by_index(index)
select.select_by_visible_text("text")
select.select_by_value(value)

?WebDriver? 也提供了取消選中選項(xiàng)的方法:

select = Select(driver.find_element_by_id('id'))
select.deselect_all()

上面的代碼會(huì)取消頁面第一個(gè)選擇框的所有選中項(xiàng)。

假設(shè)測試中,我們需要所有默認(rèn)選中項(xiàng)的列表,?Select?類提供了一個(gè)屬性:

select = Select(driver.find_element_by_xpath("xpath"))
all_selected_options = select.all_selected.options

獲取所有可用的選項(xiàng):

options = select.options

一旦你填寫完表單,一般就要提交表單,一個(gè)方法是找到提交按鈕然后點(diǎn)擊它:

# Assume the button has the ID "submit" :)
driver.find_element_by_id("submit").click()

?WebDriver? 對每個(gè)元素都提供一個(gè)?submit?方法,如果在一個(gè)表單內(nèi)的元素上調(diào)用,?WebDriver?會(huì)沿著?DOM?樹往上一直尋找,直到找到一個(gè)閉合的表單為止,然后調(diào)用?submit?方法;如果元素不在表單內(nèi),那么會(huì)拋出一個(gè)?NoSuchElementException?異常。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)