onelife page_NB_Register.py

from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
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.keys import Keys
import xlrd
import random
from page_login import LoginPage
from base import BasePage
from func_timeout import func_set_timeout
import func_timeout

class Page_NB_Register(BasePage):

excelPath = './paremeters.xlsx'
workBook = xlrd.open_workbook(excelPath)
table = workBook.sheet_by_name('NB_Register')

# 元素位置
for i in range(1, table.nrows):
colValues_0 = table.col_values(0)[i]
colValues_1 = table.col_values(1)[i]
colValues_2 = table.col_values(2)[i]
colValues_3 = table.col_values(3)[i]

exec('{} = colValues_1, colValues_2, colValues_3'.format(colValues_0))
# print(colValues_0, colValues_1, colValues_2, colValues_3)

# 字段参数
data_table = workBook.sheet_by_name('NB_Register_data')

def __init__(self, driver):
self.driver = driver

def regist(self, driver, recv_date, appno, lastName, firstName, certno, basicPlan, certsource, certtype, issueDate, expireDate, representativeCode, currency, premium, ifscan):

self.input(str(recv_date), *self.Receive_Date)

self.input(str(int(appno)), *self.Application_No)

self.input(str(int(appno)), *self.Application_No_2)

self.input(str(basicPlan), *self.Basic_Plan)

self.input(str(certsource), *self.Identification_Documents_certsource)

self.input(str(certtype), *self.Identification_Documents_certtype)

self.input(str(certno), *self.Identification_Documents_certno)

self.input(str(issueDate), *self.Identification_Documents_issue_date)
# self.click(*self.items_1)

self.input(str(expireDate), *self.Identification_Documents_expire_date)
# self.click(*self.items_2)

self.input(lastName, *self.Last_Name)

self.input(firstName, *self.First_Name)
'''
self.input('SGP=SINGAPORE', *self.mobile_number_country)


stale element reference: element is not attached to the page document 异常
所引用的元素已过时,不再依附于当前页面。通常情况下,这是因为页面进行了刷新或跳转,
解决方法是,重新使用 findElement 或 findElements 方法进行元素定位即可(元素定位太早也可能会导致错误)。
填写手机国家导致局部刷新

# 定位元素

self.input(str(random.randint(9000000000, 9999999999)), *self.mobile_number)
'''
self.input(representativeCode, *self.Representative_Code)
'''
self.input(currency, *self.Currency)
self.input(premium, *self.Premium)
'''
# scan
# no scan
ele = driver.find_element_by_xpath('//*[@id="isFirstScan"]')
selected = ele.is_selected()

if ifscan == 'n':
if selected:
ActionChains(driver).click(ele).perform()
# assign task
sleep(0.5)
ele_ = driver.find_element_by_xpath('//*[@onclick="isAssign(this)"]')
if not ele_.is_selected():
ActionChains(driver).click(ele_).perform()
sleep(0.5)
# assign tp
driver.find_element_by_xpath('//*[@id="Designatecom"]/span/input[1]').send_keys('SG048')
sleep(1)
driver.find_element_by_xpath('//*[@id="Designatecom"]/span/input[1]').send_keys(Keys.TAB)
else:
if not selected:
ActionChains(driver).click(ele).perform()

# register
driver.find_element_by_link_text('Register').click()
# ok submit
driver.find_element_by_link_text('Ok').click()
# -------------------------------
# @timeout_decorator.timeout(5)
# def fun():
# ele = driver.find_element_by_link_text('Ok')
# return ele
@func_set_timeout(1)
def find_OK():
driver.find_element_by_link_text('Ok').click()
sleep(0.5)
driver.find_element_by_link_text('Refresh').click()
sleep(0.5)
driver.find_element_by_link_text('Register').click()
sleep(0.5)
driver.find_element_by_link_text('Ok').click()
try:
find_OK()
except func_timeout.exceptions.FunctionTimedOut:
print('没有ok弹窗')

print('新单登记成功')

def regist_more(self):
data_table = self.data_table
nrows = data_table.nrows

for i in range(1, nrows):
enterPath_ = ('NB Process', 'NB Register')
self.enterPath(*enterPath_)
rowValues = data_table.row_values(i)
params_ = tuple(rowValues)
print(params_)

try:
self.regist(driver, *params_)
print('haha')
self.driver.refresh()
finally:
pass
driver.quit()

 

if __name__ == '__main__':
# url = input('请输入URL:(例如:http://10.6.144.200/onelife)')
url = 'http://10.6.144.200/onelife'
# url = 'http://10.6.144.43/onelife'
driver = webdriver.Chrome()
page = LoginPage(driver, url)
page.login()

page = Page_NB_Register(driver)
page.regist_more()

'''
path_ = r'./paremeters.xlsx'
workBook = xlrd.open_workbook(path_)
count = len(workBook.sheets())
print(f'共{count}个表格')
table_0 = workBook.sheet_by_name('NB_Register_data')
nrows = table_0.nrows
ncols = table_0.ncols


for i in range(1, nrows):
page.enterPath('NB Process', 'NB Register')

rowValues = table_0.row_values(i)
params_ = tuple(rowValues)
print(params_)

try:
page.regist(driver, *params_)
driver.refresh()
finally:
pass
driver.quit()
'''

posted @ 2021-08-30 14:24  gupanpan  阅读(66)  评论(0)    收藏  举报