Commit 53e04837 by mac

注入localStorage方法登陆

parent e3b0db6c
...@@ -94,7 +94,8 @@ def get_token(user): ...@@ -94,7 +94,8 @@ def get_token(user):
url = "https://gateway.xiaomai5.com/hades/anon/hades/login?storeId=null&token=null&storeUserId=null&userId=null" url = "https://gateway.xiaomai5.com/hades/anon/hades/login?storeId=null&token=null&storeUserId=null&userId=null"
r = requests.post(url=url, data=data, headers=headers) r = requests.post(url=url, data=data, headers=headers)
try: try:
xmtoken = r.json()["result"]["xmToken"] # xmtoken = r.json()["result"]["xmToken"]
xmtoken = r.json()["result"]
except Exception as e: except Exception as e:
return r.json()["message"] return r.json()["message"]
return xmtoken return xmtoken
......
...@@ -2,6 +2,7 @@ from time import sleep ...@@ -2,6 +2,7 @@ from time import sleep
import platform import platform
from config import readConfig from config import readConfig
from src.framework.common import get_token
# pages基类 # pages基类
from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.action_chains import ActionChains
...@@ -78,6 +79,9 @@ class Page(object): ...@@ -78,6 +79,9 @@ class Page(object):
def sleep(self, seconds): def sleep(self, seconds):
return sleep(seconds) return sleep(seconds)
def refresh(self):
return self.driver.refresh()
# 查找文本,点击该文本元素 # 查找文本,点击该文本元素
def click_text(self, ele): def click_text(self, ele):
self.click((By.XPATH, """//span[text()="{}"]""".format(ele))) self.click((By.XPATH, """//span[text()="{}"]""".format(ele)))
...@@ -164,6 +168,12 @@ class Page(object): ...@@ -164,6 +168,12 @@ class Page(object):
def excute_script_click(self, loc): def excute_script_click(self, loc):
self.driver.execute_script("document.getElementsByClassName('{}')[0].click()".format(loc)) self.driver.execute_script("document.getElementsByClassName('{}')[0].click()".format(loc))
def excute_script_set_token(self, loc, ele):
self.driver.execute_script("""window.localStorage.setItem("{}", "{}")""".format(loc, ele))
def excute_script_set_url(self):
self.driver.execute_script("XMHistory.push({pathname: `/home`,})")
# 切换窗口,切换到存在loc元素的窗口 # 切换窗口,切换到存在loc元素的窗口
def change_window(self, loc): def change_window(self, loc):
driver = self.driver driver = self.driver
...@@ -193,12 +203,20 @@ class Page(object): ...@@ -193,12 +203,20 @@ class Page(object):
# login_page.click_text(env) # login_page.click_text(env)
# 旧的登录方法 # 旧的登录方法
login_page.click(phone_login) # login_page.click(phone_login)
# 新的登录方法 # 新的登录方法
# 执行脚本,隐藏的手机号码输入框弹出 # 执行脚本,隐藏的手机号码输入框弹出
# login_page.excute_script_dominance("form xm_phone_login") # login_page.excute_script_dominance("form xm_phone_login")
# login_page.sleep(2) # login_page.sleep(2)
# 方法3,注入localStorage
enterpriseId = readConfig.test_header(user)['enterpriseId']
get_localStorage = get_token(user)
login_page.excute_script_set_token("xmykt-client_token", get_localStorage['xmToken'])
login_page.excute_script_set_token("xmykt-client_enterpriseId", enterpriseId)
login_page.excute_script_set_token("xmykt-client_userId", get_localStorage['userId'])
login_page.excute_script_set_url()
login_page.sleep(1)
login_page.input_text(account_input, readConfig.test_header(user)['username']) login_page.input_text(account_input, readConfig.test_header(user)['username'])
login_page.input_text(password_input, readConfig.test_header(user)['password']) login_page.input_text(password_input, readConfig.test_header(user)['password'])
......
...@@ -4,6 +4,7 @@ import pytest ...@@ -4,6 +4,7 @@ import pytest
from src.pageobject.loginpage import LoginPage from src.pageobject.loginpage import LoginPage
from src.framework.logger import Logger from src.framework.logger import Logger
from src.framework.appDriver import get_app_driver from src.framework.appDriver import get_app_driver
from src.framework.common import get_token
from config import readConfig from config import readConfig
...@@ -14,8 +15,10 @@ class TestLoginPage(object): ...@@ -14,8 +15,10 @@ class TestLoginPage(object):
self.logger = Logger('login page').getlog() self.logger = Logger('login page').getlog()
self.account = readConfig.test_header(self.user)['username'] self.account = readConfig.test_header(self.user)['username']
self.password = readConfig.test_header(self.user)['password'] self.password = readConfig.test_header(self.user)['password']
self.enterpriseId = readConfig.test_header(self.user)['enterpriseId']
cloud_class_location = readConfig.test_location() cloud_class_location = readConfig.test_location()
self.env = readConfig.get_env() self.env = readConfig.get_env()
self.get_localStorage = get_token(self.user)
# 指定客户端的本地路径,在/config/config.ini配置 # 指定客户端的本地路径,在/config/config.ini配置
self.driver = get_app_driver(cloud_class_location) self.driver = get_app_driver(cloud_class_location)
yield self.driver yield self.driver
...@@ -28,16 +31,21 @@ class TestLoginPage(object): ...@@ -28,16 +31,21 @@ class TestLoginPage(object):
login_page.sleep(1) login_page.sleep(1)
# 执行脚本,隐藏的手机号码输入框弹出 # 执行脚本,隐藏的手机号码输入框弹出
# login_page.phone_input_execute_script() # login_page.phone_input_execute_script()
login_page.click_phone_login() login_page.excute_script_set_token("xmykt-client_token", self.get_localStorage['xmToken'])
login_page.input_account(account=self.account) login_page.excute_script_set_token("xmykt-client_enterpriseId", self.enterpriseId)
login_page.input_password(password=self.password) login_page.excute_script_set_token("xmykt-client_userId", self.get_localStorage['userId'])
login_page.excute_script_set_url()
login_page.sleep(1)
# login_page.refresh()
# login_page.click_phone_login()
# login_page.input_account(account=self.account)
# login_page.input_password(password=self.password)
# login_page.get_env_window() # login_page.get_env_window()
# login_page.click_what('span', 'text()', self.env) # login_page.click_what('span', 'text()', self.env)
# login_page.click_close_env_window() # login_page.click_close_env_window()
login_page.click_login() # login_page.click_login()
login_page.sleep(2) # login_page.click_text("取 消")
login_page.click_text("取 消")
login_page.sleep(3)
# 校验是否存在店铺名称的元素 # 校验是否存在店铺名称的元素
assert login_page.ifElementExist(login_page.store_name) assert login_page.ifElementExist(login_page.store_name)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment