# -*- coding: utf-8 -*- #为防止中文显示成乱码
'''Webdriver脚本'''
'''搜藏店铺,点击“逛逛” '''
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys importKeys
from selenium.webdriver.support.uiimport Select
from selenium.common.exceptionsimport NoSuchElementException
import unittest, time, re #import unittest想使用unittest框架,首先要引入unittest 包
class 2w(unittest.TestCase):#2w类继承unittest.TestCase 类,从TestCase类继承是告诉unittest模块的方式,这是一个测试案例(2w是用例名)
def setUp(self):#初始化,在测试用例执行前,这个方法中的函数将先被调用
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "http://mt.winguo.com"
self.verificationErrors = []
self.accept_next_alert = True
def test_2w(self):#该函数/方法必须这样命名 定义一个测试用例,名字以test开头后接用例名 test_2w中放置的是我们的测试脚本(命名规则:test_用例名)
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_css_selector("div.o2").click()
driver.find_element_by_id("WG_UserNameTxt").clear()
driver.find_element_by_id("WG_UserNameTxt").send_keys("lilinfang35")
driver.find_element_by_id("WG_PassWordTxt").clear()
driver.find_element_by_id("WG_PassWordTxt").send_keys("wsxedc@")
driver.find_element_by_id("WG_submit").click()
driver.find_element_by_link_text(u"收藏店铺").click()
driver.find_element_by_link_text(u"逛逛").click()
try: self.assertEqual(u"搜索", driver.find_element_by_css_selector("input.sub").get_attribute("value"))
except AssertionError as e: self.verificationErrors.append(str(e))#调用assertEqual等断言方法判断程序执行结果和预期值是否相符
driver.find_element_by_link_text(u"退出").click()
def is_element_present(self, how, what):#查找页面元素是否存在,用处不大,通常删除。因为判断页面元素是否存在一般都加在testcase中
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
def is_alert_present(self):
try:self.driver.switch_to_alert()
except NoAlertPresentException, e: return False
return True
def close_alert_and_get_its_text(self):#关闭警告和对得到文本框的处理
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally:self.accept_next_alert = True#是否继续接受下一个警告
def tearDown(self):#在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等
self.driver.quit()
self.assertEqual([], self.verificationErrors)#脚本运行时,错误的信息将被打印到这个列表中
if __name__ == "__main__":
unittest.main()#调用unittest.main()启动测试以test开头的测试用例
注:
1.python内部自带了一个单元测试的模块:unittest(Python单元测试框架-pyUnit)
2.我们所使用的方法大多数被封装在D:\Python27\Lib\site-packages\selenium\webdriver\remote下面的webdriver.py