selenium2 填充表单

2021-07-02 17:04 更新

我们已经知道怎么向一个文本框和文本域输入内容,但是其他元素我们要怎么处理? 你可以触发下拉选框,并且用​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​异常。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号