selenium2 填充表单
我们已经知道怎么向一个文本框和文本域输入内容,但是其他元素我们要怎么处理? 你可以触发下拉选框,并且用setSelected
方法来让一个选项被选中,处理选择框不会很困难:
element = driver.find_element_by_xpath("//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()
这段代码会找到页面的第一个选择框元素,然后遍历每个选项,输出他们的值,并且依次选中。
你可以看到,这种方式处理选择框不太高效,WebDriver
支持许多类,其中包括一个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
也提供了取消选中选项的方法:
select = Select(driver.find_element_by_id('id'))
select.deselect_all()
上面的代码会取消页面第一个选择框的所有选中项。
假设测试中,我们需要所有默认选中项的列表,Select
类提供了一个属性:
select = Select(driver.find_element_by_xpath("xpath"))
all_selected_options = select.all_selected.options
获取所有可用的选项:
options = select.options
一旦你填写完表单,一般就要提交表单,一个方法是找到提交按钮然后点击它:
# Assume the button has the ID "submit" :)
driver.find_element_by_id("submit").click()
WebDriver
对每个元素都提供一个submit
方法,如果在一个表单内的元素上调用,WebDriver
会沿着DOM
树往上一直寻找,直到找到一个闭合的表单为止,然后调用submit
方法;如果元素不在表单内,那么会抛出一个NoSuchElementException
异常。