常见应用的示例

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属性和要选择的项目列表传入。通过遍历,将两个项目复选。

上一篇selenium-Sample(一) 下一篇selenium-Sample(二)

by 李鹏