codecamp

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​异常。


selenium2 页面交互
selenium 拖放
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }