# -*- coding: utf-8 -*- import unittest import requests from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class Ssgdfs(object): def setUp(self): #self.driver = webdriver.Chrome('E:\chromedriver_win32/chromedriver') self.driver = webdriver.Remote(command_executor='http://192.168.15.10:8910/', desired_capabilities=DesiredCapabilities.PHANTOMJS) self.config = {} self.config['id'] = 1 self.config['login'] = 'http://cn.ssgdfs.com/shop/login/loginPopupForm'; self.config['username'] = 'weiweizhou' self.config['password'] = 'P4220887' self.config['product'] = 'http://cn.ssgdfs.com/shop/product/productDetail?recopick=25&prdtCode=79519000009'; self.config['chuguo'] = '3239636' def test_start(self): # 登录 self.login() # 下单 self.buy() # 支付 self.pay() # 支付截图 self.crop() def check(): r = requests.get(self.config['product']) # 缺货标识 string = 'http://image2.ssgdfs.com/images/shop/cn/renewal/content/btn_soldout.gif' data = r.text if string in data: return False else: return True def login(self): self.driver.get(self.config['login']) self.driver.find_element_by_id('login-id').send_keys(self.config['username']) self.driver.find_element_by_id('login-password').send_keys(self.config['password']) self.driver.find_element_by_xpath('//input[@alt="login"]').click() self.driver.implicitly_wait(5) def buy(self): self.driver.get(self.config['product']) # 立刻购买 self.driver.execute_script('directOrderProduct()') # 等待加载页面完成 self.wait('long-sub') # 等待弹层关闭 self.waitNot('pay_popup') # 输入下单信息 self.buy_content() # 确认订单 self.driver.execute_script('goPaymentCheck()') # 等待加载页面完成 self.wait('order-agree2') def buy_content(self): # 选择护照信息 self.driver.execute_script('setExitInfoHistory("' + self.config['chuguo'] + '")') # 使用优惠券 # 使用积分 self.driver.find_element_by_xpath('//input[@name="nowUse" and @value="0"]').click() def pay(self): # 等待弹层关闭 self.waitNot('loding_popup') # 输入支付信息 self.pay_content() # 确认按钮 self.driver.execute_script('window.confirm = function(msg) { return true; }'); # 同意付款 self.driver.execute_script('$("a.goPayment").click()') #self.driver.switch_to_alert().accept() #self.wait('qrcode-img-wrapper') self.wait('qrcode') sleep(2) link = self.driver.execute_script('return location.href') print link def pay_content(self): # 确认取货处 self.driver.find_element_by_id('exitDestInfo').click() # 同意收集个人信息 self.driver.find_element_by_id('agree').click() # 同意订购 self.driver.find_element_by_id('agree01').click() # 选择支付方式:支付宝21 微信00 self.driver.find_element_by_xpath('//input[@id="pymntMeansCode" and @value="00"]').click() def crop(self): pic_path = 'test.png' self.driver.save_screenshot(pic_path) def waitNot(self, name): WebDriverWait(self.driver, 100).until_not(lambda x: x.find_element_by_class_name(name).is_displayed()) def wait(self, name): WebDriverWait(self.driver, 100).until(lambda x: x.find_element_by_class_name(name).is_displayed()) def tearDown(self): self.driver.close() #pass if __name__ == "__main__": unittest.main()