Python自動化第六天(2)-電商系統自動化用例
# coding=utf-8
import unittest
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
ecshop = "http://172.16.3.158/ecshop/"
class Ecshop(unittest.TestCase):
def setUp(self):
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.maximize_window()
self.driver = driver
return
def _login(self, driver, username, password):
# 點擊鏈接,跳轉到登錄頁面
driver.find_element_by_css_selector("a[href='user.php']").click()
self.assertEqual(driver.current_url, "http://172.16.3.158/ecshop/user.php", "跳轉到登錄頁面失敗!")
# 輸入用戶名和密碼
driver.find_element_by_name("username").clear()
driver.find_element_by_name("username").send_keys(username)
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys(password)
# 點擊登錄
driver.find_element_by_css_selector("input[name='submit']").click()
return
def test_login(self):
driver = self.driver
driver.get(ecshop)
self._login(driver, "tom", "123456")
time.sleep(5)
self.assertEqual(driver.current_url, "http://172.16.3.158/ecshop/", "登錄失敗!")
def test_shopping(self):
driver = self.driver
driver.get(ecshop)
##################### 登錄 ######################
self._login(driver, "tom", "123456")
time.sleep(5)
##################### 選購商品 #####################
phoneType = driver.find_element_by_css_selector("a[href='category.php?id=1']")
ActionChains(driver).move_to_element(phoneType).perform()
driver.find_element_by_link_text(u"小型手機").click()
self.assertEqual(driver.current_url, "http://172.16.3.158/ecshop/category.php?id=3", "跳轉到商品搜索頁面失敗!")
# 選擇諾基亞N85,點擊立即購買
driver.find_element_by_css_selector("a[href='goods.php?id=32']").click()
time.sleep(1)
self.assertEqual(driver.current_url, "http://172.16.3.158/ecshop/goods.php?id=32", "跳轉到商品信息頁面失敗!")
# 選擇所有配件
driver.find_element_by_id("spec_value_158").click()
driver.find_element_by_id("spec_value_159").click()
driver.find_element_by_id("spec_value_157").click()
# 立即購買
driver.find_element_by_css_selector("a[href='javascript:addToCart(32)']").click()
time.sleep(1)
self.assertEqual(driver.current_url, "http://172.16.3.158/ecshop/flow.php?step=cart", "跳轉到購物車頁面失敗!")
# 選擇數量
# driver.find_element_by_id("goods_number_2668").clear()
driver.find_element_by_css_selector("input[class='inputBg'][value='1']").clear()
driver.find_element_by_css_selector("input[class='inputBg'][value='1']").send_keys("2")
# 更新購物車
#driver.find_element_by_css_selector("input[value='更新購物車']").click()
driver.find_element_by_css_selector("input[value='更新購物車']").submit()
time.sleep(5)
# 去結算
driver.find_element_by_css_selector("a[href='flow.php?step=checkout']").click()
time.sleep(1)
self.assertEqual(driver.current_url, "http://172.16.3.158/ecshop/flow.php?step=checkout", "跳轉到結算頁面失敗!")
# 修改收貨人信息
driver.find_element_by_css_selector("a[href='flow.php?step=consignee']").click()
# 中國
country = driver.find_element_by_name("country")
country.find_element_by_css_selector("option[value='1']").click()
# 廣東省
province = driver.find_element_by_name("province")
province.find_element_by_css_selector("option[value='20']").click()
# 深圳市
city = driver.find_element_by_name("city")
city.find_element_by_css_selector("option[value='233']").click()
# 南山區
district = driver.find_element_by_name("district")
district.find_element_by_css_selector("option[value='2414']").click()
driver.find_element_by_name("consignee").clear()
driver.find_element_by_name("consignee").send_keys("Lizhichao")
driver.find_elements_by_name("Submit")[0].click()
# 配送方式:申通
driver.find_element_by_css_selector("input[name='shipping'][value='5']").click()
# 支付方式:銀行匯款
driver.find_element_by_css_selector("input[name='payment'][value='2']").click()
# 精品包裝
driver.find_element_by_css_selector("input[name='pack'][value='1']").click()
# 訂單附言
driver.find_element_by_name("postscript").clear()
driver.find_element_by_name("postscript").send_keys(u"親,請速度發貨!")
# 提交訂單
driver.find_element_by_css_selector("input[src='themes/default/images/bnt_subOrder.gif']").click()
time.sleep(1)
# msg = driver.find_element_by_tag_name("h6")
#
# index = msg.text.encode("utf-8").find("您的訂單已提交成功")
# self.assertTrue(index != -1, "提交訂單失敗")
source = driver.page_source
index = source.encode("utf-8").find("您的訂單已提交成功")
self.assertTrue(index != -1, "提交訂單失敗")
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
# unittest.main()
suite = unittest.TestSuite()
#suite.addTest(Ecshop("test_login"))
suite.addTest(Ecshop("test_shopping"))
unittest.TextTestRunner().run(suite)