经伟

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

之前一直是用java+selenium做自动化测试的,最近因为工作需要,需要用pyhton+selenium去实现,于是就赶驴上架,熟悉了一下python的语法和脚本的编写过程,下面是一个简单的脚本,但是基本涵盖了目前UI端比较常见的对象的识别和操作,比如输入框,按钮,下拉框,radio, checkbox, 链接, 鼠标脚本的操作以及脚本中js的使用。

上代码吧:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
import time

driver=webdriver.Firefox()
driver.maximize_window()
driver.get('c:\\test.html')
def button():
    btn=driver.find_element_by_id('user')
    btn.send_keys('hello')
    print('finish')
    driver.close()

def select():#se=driver.find_element_by_name('select')
    #se.find_element_by_xpath('//option[@value="audi"]').click

    se=Select(driver.find_element_by_name('select'))
    se.select_by_value('audi')
    se.select_by_index(2)
    time.sleep(5)

def link():
    lk=driver.find_element_by_class_name('baidu')
    lktext=lk.get_attribute('text')
    print(lktext)
    lk.click()

def checkbox():
    ck=driver.find_element_by_name('checkbox1')
    checked=ck.get_attribute('checked')
    print(checked)
    ck.click()

def submit():
    st=driver.find_element_by_class_name('button')
    js='var st=document.getElementsByName("button");st.click()'
    driver.execute_script(js)

def js():
    input=driver.find_element_by_id('user')
    driver.execute_script('arguments[0].value="123"',input)

def alert():
    al=driver.find_element_by_class_name('alert')
    al.click()
    alert=driver.switch_to_alert()
    print alert.__getattribute__('text')
    time.sleep(5)
    alert.accept()
    #alert.dismiss()

def switch():
    #switch_to_window, switch_to_frame
    #current_window_handle, window_handles
    newwin=driver.find_element_by_class_name('open')
    newwin.click()
    time.sleep(3)
    current=driver.current_window_handle
    allhandle=driver.window_handles
    for hd in allhandle:
        print hd
    driver.switch_to_window(allhandle[1])

    time.sleep(3)
    driver.switch_to_window(allhandle[0])

def action():
    el=driver.find_element_by_class_name('over')
    ActionChains(driver).move_to_element(el).perform()
    time.sleep(3)
    el2=driver.find_element_by_id('over')
    #print(el2.get_attribute('text'))

def wait():
    driver.implicitly_wait(5)
    driver.find_element_by_class_name('over')

    WebDriverWait(driver,5).until(lambda driver:driver.find_element_by_class_name('open').is_displayed())


if __name__=='__main__':
    wait()

这个主要是对元素的操作,脚本中并未涉及到断言和报告的收集,后面补上这块的。

posted on 2015-12-11 16:15  经伟  阅读(830)  评论(0编辑  收藏  举报