常见应用的示例
Sample List
填写表单示例1-自动设置bugzilla Simple Search
填写表单示例2-自动设置bugzilla Advanced Search
拖放drag和drop示例-待定
窗口和框架之间移动示例-待定
弹出对话框示例-待定
历史记录和位置示例-待定
Cookies示例-待定
元素定位不同方式示例-待定
ID定位
名称定位
Xpath定位
链接文本定位超链接
Tag Name定位
class name定位
css选择器定位
等待-不同条件显示等待示例-待定
title_is
title_contains
presence_of_element_locate
visibility_of_element_located
visibility_of
presence_of_all_elements_located
text_to_be_present_in_element_value
text_to_be_present_in_element
frame_to_be_available_and_switch_to_it
invisibility_of_element_located
elements_to_be_clickable-it is Displayed and Enabled
staleness_of
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be
arelt_is_present
等待-等待示例-隐式等待
页面对象设计模式示例
... ...
示例3. 填写表单示例1-自动设置bugzilla Simple Search
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #!/bin/bash/env python
# -*- coding: utf-8 -*-
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
# test网址
url = "http://192.168.32.3/"
class SampleSearch(object):
def __init__(self):
self.driver = webdriver.Firefox()
def doclick(self, driver, elem):
actions = ActionChains(driver)
actions.move_to_element(elem)
actions.click(elem)
actions.perform()
return driver
# 导航到samplesearch页面
def getSearchpage(self):
self.driver.get(url)
search = self.driver.find_element_by_id('query')
searchdriver = self.doclick(self.driver, search)
simplesearch = searchdriver.find_element_by_id("tab_specific")
sampledriver = self.doclick(searchdriver, simplesearch)
return sampledriver
def setseclect(self, driver, name, values):
select = Select(driver.find_element_by_name(name))
for value in values:
select.select_by_value(value)
return driver
def dosearch(self):
search = self.getSearchpage()
statusvalues = ('__all__',)
status = self.setseclect(search, 'bug_status', statusvalues)
productvalues = ('iSoft_Desktop_v4.0_for loongson',)
product = self.setseclect(status, 'product', productvalues)
searchbutton = product.find_element_by_xpath("//*[@id='search']")
self.doclick(product, searchbutton)
time.sleep(10)
self.driver.close()
if __name__ == '__main__':
autologin = SampleSearch()
autologin.dosearch()
|
分析: doclick方法实现对选定元素的点击。
getSearchpage 方法获取简单搜索页面
dosearch方法是流程控制
重点讲一下setseclect方法,
def setseclect(self, driver, name, values):
select = Select(driver.find_element_by_name(name))) # 通过Select类的调用,获取下拉框
for value in values: # 进行指定下拉框选项的设定
select.select_by_value(value)
return driver
实现对下拉框的定位和下拉框值的设定。
示例4. 填写表单示例2-自动设置bugzilla Advanced Search
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #!/bin/bash/env python
# -*- coding: utf-8 -*-
import time
import os
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
# bugzilla address
url = "http://192.168.32.3/"
class AdvanceSearch(object):
def __init__(self):
self.driver = webdriver.Firefox()
def doclick(self, driver, elem):
actions = ActionChains(driver)
actions.move_to_element(elem)
actions.click(elem)
actions.perform()
return driver
def getSearchpage(self):
self.driver.get(url)
search = self.driver.find_element_by_id('query')
searchdriver = self.doclick(self.driver, search)
return searchdriver
def setseclect(self, driver, selects):
for k, v in selects.iteritems():
selectlist = Select(driver.find_element_by_name(k))
for value in v:
selectlist.select_by_value(value)
return driver
def dosearch(self):
product = ['iSoft_Desktop_v4.x_x86-64', 'iSoft_Desktop_v4.0_x86-64']
selects = { 'product': product,}
search = self.getSearchpage()
setselect = self.setseclect(search, selects)
searchbutton = setselect.find_element_by_id('Search')
self.doclick(setselect, searchbutton)
time.sleep(10)
self.driver.close()
if __name__ == '__main__':
autosearch = AdvanceSearch()
autosearch.dosearch()
|
分析: 大部分和上一个例子代码类似。其中setseclect方法不同
def setseclect(self, driver, selects):
for k, v in selects.iteritems():
selectlist = Select(driver.find_element_by_name(k))
for value in v:
selectlist.select_by_value(value)
return driver
通过一个字典将选择框的name属性和要选择的项目列表传入。通过遍历,将两个项目复选。