Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
UIProject
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liying
UIProject
Commits
346c94fa
Commit
346c94fa
authored
Feb 19, 2024
by
Administrator
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2.19提交
parent
e20a0da0
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
249 additions
and
49 deletions
+249
-49
BasePage.py
BasePage/BasePage.py
+45
-35
businessKnowledge_page.py
Pages/businessKnowledge_page.py
+106
-14
business_knowledge1.log
Pages/business_knowledge1.log
+0
-0
p.py
TestCases/p.py
+0
-0
test_business_knowledge.py
TestCases/test_business_knowledge.py
+92
-0
Util.py
Util/Util.py
+2
-0
mylog.log
output/logs/mylog.log
+4
-0
No files found.
BasePage/BasePage.py
View file @
346c94fa
...
@@ -2,6 +2,7 @@ import time
...
@@ -2,6 +2,7 @@ import time
import
pyautogui
import
pyautogui
import
pyperclip
import
pyperclip
from
selenium.webdriver
import
Keys
from
selenium.webdriver.support.select
import
Select
from
selenium.webdriver.support.select
import
Select
from
selenium.webdriver.support.wait
import
WebDriverWait
from
selenium.webdriver.support.wait
import
WebDriverWait
from
selenium.webdriver.support
import
expected_conditions
as
EC
from
selenium.webdriver.support
import
expected_conditions
as
EC
...
@@ -18,8 +19,6 @@ class BasePage:
...
@@ -18,8 +19,6 @@ class BasePage:
def
__init__
(
self
):
def
__init__
(
self
):
self
.
driver
=
DriverUtils
.
get_web_driver
()
self
.
driver
=
DriverUtils
.
get_web_driver
()
self
.
logger
=
None
self
.
set_logger
()
# 查找元素
# 查找元素
...
@@ -36,7 +35,13 @@ class BasePage:
...
@@ -36,7 +35,13 @@ class BasePage:
# 定义该元素对于的文本
# 定义该元素对于的文本
ele
=
self
.
find_el
(
loc
)
ele
=
self
.
find_el
(
loc
)
# 先清空
# 先清空
ele
.
clear
()
# ele.clear()
# 使用 JavaScript 强制清空输入框中的文本
# self.driver.execute_script("arguments[0].value = '';", ele)
# 使用键盘操作选中并删除文本
time
.
sleep
(
1
)
ele
.
send_keys
(
Keys
.
CONTROL
+
"a"
)
# 选中所有文本
ele
.
send_keys
(
Keys
.
DELETE
)
# 删除选中的文本
# 再输入
# 再输入
ele
.
send_keys
(
value
)
ele
.
send_keys
(
value
)
...
@@ -63,6 +68,11 @@ class BasePage:
...
@@ -63,6 +68,11 @@ class BasePage:
# 调用select选择方法
# 调用select选择方法
sle
.
select_by_visible_text
(
text
)
sle
.
select_by_visible_text
(
text
)
def
get_text_loc
(
self
,
loc
):
return
self
.
find_el
(
loc
)
.
get_attribute
(
"innerText"
)
def
get_text_ele
(
self
,
ele
):
return
ele
.
get_attribute
(
"innerText"
)
# 选择文件
# 选择文件
def
select_document
(
self
,
path_str
=
None
):
def
select_document
(
self
,
path_str
=
None
):
time
.
sleep
(
1
)
time
.
sleep
(
1
)
...
@@ -87,38 +97,38 @@ class BasePage:
...
@@ -87,38 +97,38 @@ class BasePage:
pyautogui
.
press
(
'enter'
)
# 模拟按下回车键
pyautogui
.
press
(
'enter'
)
# 模拟按下回车键
time
.
sleep
(
2
)
time
.
sleep
(
2
)
# 设置日志记录器
# # 设置日志记录器
def
set_logger
(
self
):
# def set_logger(self):
# 检查记录器是否已经存在,如果存在,则直接返回
# # 检查记录器是否已经存在,如果存在,则直接返回
if
self
.
logger
:
# if self.logger:
return
# return
#
logging
.
basicConfig
(
level
=
logging
.
INFO
)
# logging.basicConfig(level=logging.INFO)
self
.
logger
=
logging
.
getLogger
(
__name__
)
# self.logger = logging.getLogger(__name__)
# 创建一个处理程序,用于输出到控制台
# # 创建一个处理程序,用于输出到控制台
console_handler
=
logging
.
StreamHandler
()
# console_handler = logging.StreamHandler()
console_handler
.
setLevel
(
logging
.
INFO
)
# console_handler.setLevel(logging.INFO)
# 创建一个处理程序,用于输出到文件
# # 创建一个处理程序,用于输出到文件
self
.
file_handler
=
logging
.
FileHandler
(
'business_knowledge1.log'
,
encoding
=
'utf-8'
)
# self.file_handler = logging.FileHandler('business_knowledge1.log', encoding='utf-8')
self
.
file_handler
.
setLevel
(
logging
.
INFO
)
# self.file_handler.setLevel(logging.INFO)
# 创建一个格式化器,用于设置日志格式
# # 创建一个格式化器,用于设置日志格式
formatter
=
logging
.
Formatter
(
'
%(asctime)
s -
%(name)
s -
%(levelname)
s -
%(message)
s'
)
# formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 将格式化器添加到处理程序
# # 将格式化器添加到处理程序
console_handler
.
setFormatter
(
formatter
)
# console_handler.setFormatter(formatter)
self
.
file_handler
.
setFormatter
(
formatter
)
# self.file_handler.setFormatter(formatter)
# 先清空已有的处理程序
# # 先清空已有的处理程序
self
.
logger
.
handlers
.
clear
()
# self.logger.handlers.clear()
# 检查记录器中是否已经存在相同类型的处理程序,如果不存在,则添加
# # 检查记录器中是否已经存在相同类型的处理程序,如果不存在,则添加
if
console_handler
not
in
self
.
logger
.
handlers
:
# if console_handler not in self.logger.handlers:
self
.
logger
.
addHandler
(
console_handler
)
# self.logger.addHandler(console_handler)
if
self
.
file_handler
not
in
self
.
logger
.
handlers
:
# if self.file_handler not in self.logger.handlers:
self
.
logger
.
addHandler
(
self
.
file_handler
)
# self.logger.addHandler(self.file_handler)
print
(
len
(
self
.
logger
.
handlers
))
# print(len(self.logger.handlers))
def
log_info
(
self
,
message
):
self
.
logger
.
info
(
message
)
#
#
def
close_logger
(
self
):
# def log_info(self, message):
self
.
file_handler
.
close
()
# self.logger.info(message)
# #
# def close_logger(self):
# self.file_handler.close()
Pages/businessKnowledge_page.py
View file @
346c94fa
...
@@ -34,12 +34,17 @@ class BusinessKnowledgePage(BasePage):
...
@@ -34,12 +34,17 @@ class BusinessKnowledgePage(BasePage):
self
.
folders
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[2]'
)
# 文件夹列表
self
.
folders
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[2]'
)
# 文件夹列表
self
.
newFolder
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/button[2]/span'
)
# 新建文件夹
self
.
newFolder
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/button[2]/span'
)
# 新建文件夹
self
.
folderName
=
(
By
.
XPATH
,
'//*[@id="folderName"]'
)
# 输入文件夹名
self
.
folderName
=
(
By
.
XPATH
,
'//*[@id="folderName"]'
)
# 输入文件夹名
self
.
select_folder
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[2]/div[@class="Catalog-item active"]/span'
)
self
.
ensure
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div[2]/div/div[2]/div[3]/button[2]/span'
)
# 确定按钮
self
.
ensure
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div[2]/div/div[2]/div[3]/button[2]/span'
)
# 确定按钮
self
.
more
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[2]/div[3]/i'
)
# 更多
self
.
more
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[2]/div[3]/i'
)
# 更多
self
.
updateFolderName
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div/ul/li[1]/span/div'
)
# 修改名称
self
.
updateFolderName
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div/ul/li[1]/span/div'
)
# 修改名称
self
.
deleteFolder
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div/ul/li[2]/span/div'
)
# 删除
self
.
deleteFolder
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div/ul/li[2]/span/div'
)
# 删除
self
.
ensureDelete
=
(
By
.
XPATH
,
'/html/body/div[4]/div/div[2]/div/div[2]/div[3]/button[2]/span'
)
# 确认
self
.
ensureDelete
=
(
By
.
XPATH
,
'/html/body/div[4]/div/div[2]/div/div[2]/div[3]/button[2]/span'
)
# 确认
self
.
moreFolderName
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[2]/div[3]/span'
)
self
.
searchInputText
=
(
self
.
searchInputText
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[1]/span/input'
)
# 搜索文本框
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[1]/div[1]/span/input'
)
# 搜索文本框
self
.
subscriptionWebsiteButton
=
(
self
.
subscriptionWebsiteButton
=
(
...
@@ -100,6 +105,10 @@ class BusinessKnowledgePage(BasePage):
...
@@ -100,6 +105,10 @@ class BusinessKnowledgePage(BasePage):
self
.
input_text_by_loc
(
self
.
folderName
,
updateFolderName
)
self
.
input_text_by_loc
(
self
.
folderName
,
updateFolderName
)
time
.
sleep
(
1
)
time
.
sleep
(
1
)
self
.
find_el
(
self
.
ensureDelete
)
.
click
()
# 点击确认
self
.
find_el
(
self
.
ensureDelete
)
.
click
()
# 点击确认
time
.
sleep
(
1
)
# 返回修改后的文件名
return
self
.
get_text_loc
(
self
.
moreFolderName
)
# 遍历点击文件夹
# 遍历点击文件夹
def
traverseFolder
(
self
):
def
traverseFolder
(
self
):
...
@@ -116,6 +125,29 @@ class BusinessKnowledgePage(BasePage):
...
@@ -116,6 +125,29 @@ class BusinessKnowledgePage(BasePage):
def
searchDocument
(
self
,
keyName
=
None
):
def
searchDocument
(
self
,
keyName
=
None
):
self
.
input_text_by_loc
(
self
.
searchInputText
,
keyName
)
self
.
input_text_by_loc
(
self
.
searchInputText
,
keyName
)
time
.
sleep
(
2
)
time
.
sleep
(
2
)
# 返回搜索到的所有文档
folders
=
self
.
find_el
(
self
.
folders
)
.
find_elements
(
By
.
XPATH
,
"./div"
)
documents
=
[]
for
folder
in
folders
:
folder
.
click
()
time
.
sleep
(
1
)
# 获取所有文档
documentStep
=
self
.
find_el
(
self
.
document_list_helper
.
documentListDiv
)
.
find_elements
(
By
.
XPATH
,
"./tr"
)
documents
.
extend
(
documentStep
)
print
(
documents
)
return
documents
# 判断这些文档中是否存在某些关键词
def
isExistKeyInDocument
(
self
,
key_name
=
None
,
documents
=
None
):
flag
=
True
for
document
in
documents
:
actual_document_name
=
document
.
find_element
(
By
.
XPATH
,
"./td[2]/div/div"
)
.
getAttribute
(
"title"
)
if
not
actual_document_name
.
find
(
key_name
):
flag
=
False
logger
.
info
(
"搜索失败,搜索出额外文档"
)
return
flag
"""
"""
网站订阅
网站订阅
...
@@ -217,7 +249,7 @@ class UploadDocumentHelper(BasePage):
...
@@ -217,7 +249,7 @@ class UploadDocumentHelper(BasePage):
self
.
ensureButton
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div[2]/div/div[2]/div[3]/div/button[2]'
)
# 确定
self
.
ensureButton
=
(
By
.
XPATH
,
'/html/body/div[3]/div/div[2]/div/div[2]/div[3]/div/button[2]'
)
# 确定
self
.
urlText
=
(
By
.
XPATH
,
'//*[@id="url"]'
)
self
.
urlText
=
(
By
.
XPATH
,
'//*[@id="url"]'
)
self
.
getContentButton
=
(
By
.
CLASS_NAME
,
'ant-btn ant-btn-primary
'
)
self
.
getContentButton
s
=
(
By
.
CLASS_NAME
,
'btn-wrap
'
)
"""
"""
方式一:上传文档
方式一:上传文档
...
@@ -253,13 +285,9 @@ class UploadDocumentHelper(BasePage):
...
@@ -253,13 +285,9 @@ class UploadDocumentHelper(BasePage):
time
.
sleep
(
1
)
time
.
sleep
(
1
)
self
.
input_text_by_loc
(
self
.
urlText
,
url_link
)
self
.
input_text_by_loc
(
self
.
urlText
,
url_link
)
time
.
sleep
(
2
)
time
.
sleep
(
2
)
button
=
self
.
find_el
(
self
.
getContentButton
)
buttons
=
self
.
find_el
(
self
.
getContentButtons
)
.
find_elements
(
By
.
XPATH
,
"./button"
)
# 使用 ActionChains 将鼠标移动到按钮上再点击
buttons
[
1
]
.
click
()
action
=
ActionChains
(
driver
)
time
.
sleep
(
4
)
action
.
move_to_element
(
button
)
.
click
()
.
perform
()
# 使用JavaScript将焦点移动到页面其他元素,使文本域失去焦点
# driver.execute_script("arguments[0].blur();", text_area)
time
.
sleep
(
2
)
"""
"""
...
@@ -281,6 +309,7 @@ class DocumentListControlHelper(BasePage):
...
@@ -281,6 +309,7 @@ class DocumentListControlHelper(BasePage):
# self.documents = self.find_son_elements(self.find_el(self.documentListDiv), self.documentDiv)
# self.documents = self.find_son_elements(self.find_el(self.documentListDiv), self.documentDiv)
self
.
controlList
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[2]/div/div[2]/div[3]/div/div/div/div/div/div/div/table/tbody/tr[1]/td[5]/div/span/ul'
)
self
.
controlList
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[2]/div/div[2]/div[3]/div/div/div/div/div/div/div/table/tbody/tr[1]/td[5]/div/span/ul'
)
self
.
firstDocument
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div/div[2]/div/div[2]/div[2]/div/div/div/div/div/div/div/table/tbody/tr[1]/td[3]/div/span'
)
# 删除
# 删除
def
documentListDeleteControl
(
self
,
count
=
None
):
def
documentListDeleteControl
(
self
,
count
=
None
):
documents
=
self
.
find_son_elements
(
self
.
find_el
(
self
.
documentListDiv
),
self
.
documentDiv
)
documents
=
self
.
find_son_elements
(
self
.
find_el
(
self
.
documentListDiv
),
self
.
documentDiv
)
...
@@ -406,6 +435,11 @@ class DocumentListControlHelper(BasePage):
...
@@ -406,6 +435,11 @@ class DocumentListControlHelper(BasePage):
"""
"""
文档对话
文档对话
"""
"""
"""
文档对话
"""
class
DocumentDialogueHelper
(
BasePage
):
class
DocumentDialogueHelper
(
BasePage
):
def
__init__
(
self
):
def
__init__
(
self
):
super
()
.
__init__
()
super
()
.
__init__
()
...
@@ -423,11 +457,12 @@ class DocumentDialogueHelper(BasePage):
...
@@ -423,11 +457,12 @@ class DocumentDialogueHelper(BasePage):
self
.
minificationButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/i[1]'
)
self
.
minificationButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/i[1]'
)
# 放大
# 放大
self
.
maxficationButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/i[2]'
)
self
.
maxficationButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/i[2]'
)
# 全屏
# 全屏
self
.
fullScreenButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/i[3]'
)
self
.
fullScreenButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/i[3]'
)
# 下拉
# 下拉
self
.
xial
aButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/div[1]'
)
self
.
fangd
aButton
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[2]/div/div[1]/div[2]/div[1]'
)
self
.
xialaDataList
=
(
By
.
XPATH
,
'/html/body/div[6]/div/div/div/div[2]/div[1]/div/div
'
)
self
.
fangdaDataList
=
(
By
.
CLASS_NAME
,
'rc-virtual-list-holder-inner
'
)
# 对话 文档解读 笔记
# 对话 文档解读 笔记
self
.
typeButtons
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[3]/ul'
)
self
.
typeButtons
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[3]/ul'
)
# 推荐问题
# 推荐问题
...
@@ -443,6 +478,9 @@ class DocumentDialogueHelper(BasePage):
...
@@ -443,6 +478,9 @@ class DocumentDialogueHelper(BasePage):
# 对话内容
# 对话内容
self
.
dialogueContent
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[3]/div[2]'
)
self
.
dialogueContent
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[3]/div[2]'
)
# 导出解读
self
.
deriveDocumentSummary
=
(
By
.
XPATH
,
'//*[@id="App"]/div/section/div[1]/div[2]/div/div[1]/div/div/div[3]/button'
)
# 文件夹对话入口
# 文件夹对话入口
def
folderDialogueControl
(
self
):
def
folderDialogueControl
(
self
):
self
.
find_el
(
self
.
folderDialogueButton
)
.
click
()
self
.
find_el
(
self
.
folderDialogueButton
)
.
click
()
...
@@ -502,20 +540,66 @@ class DocumentDialogueHelper(BasePage):
...
@@ -502,20 +540,66 @@ class DocumentDialogueHelper(BasePage):
logger
.
info
(
f
"-------------全屏操作--------"
)
logger
.
info
(
f
"-------------全屏操作--------"
)
time
.
sleep
(
1
)
time
.
sleep
(
1
)
# 对话 文档解读 笔记 1 2 3
# 对话 文档解读 笔记 1 2 3
def
menu_types_control
(
self
,
type
=
None
):
def
menu_types_control
(
self
,
type
=
None
):
time
.
sleep
(
1
)
time
.
sleep
(
1
)
menus
=
self
.
find_el
(
self
.
typeButtons
)
.
find_elements
(
By
.
XPATH
,
"./li"
)
menus
=
self
.
find_el
(
self
.
typeButtons
)
.
find_elements
(
By
.
XPATH
,
"./li"
)
i
=
0
i
=
0
for
menu
in
menus
:
for
menu
in
menus
:
if
type
==
i
:
if
(
type
-
1
)
==
i
:
menu
.
click
()
menu
.
click
()
menu_name
=
menu
.
find_element
(
By
.
XPATH
,
"./span"
)
.
get_attribute
(
"innerText"
)
menu_name
=
menu
.
find_element
(
By
.
XPATH
,
"./span"
)
.
get_attribute
(
"innerText"
)
logger
.
info
(
f
"此时菜单点击的为:{menu_name}"
)
logger
.
info
(
f
"此时菜单点击的为:{menu_name}"
)
time
.
sleep
(
1
)
time
.
sleep
(
1
)
return
return
i
=
i
+
1
i
=
i
+
1
# self.close_logger()
# 选择特定的放大倍数
def
select_magnification_by
(
self
,
magnification_value
):
magnification_value
=
str
(
magnification_value
)
+
"
%
"
self
.
find_el
(
self
.
fangdaButton
)
.
click
()
time
.
sleep
(
1
)
magnificatios
=
self
.
find_el
(
self
.
fangdaDataList
)
.
find_elements
(
By
.
XPATH
,
"./div"
)
# 获取所有的方法倍数数据
for
magnification
in
magnificatios
:
title_name
=
magnification
.
get_attribute
(
"title"
)
if
title_name
==
magnification_value
:
magnification
.
click
()
# 点击完成
logger
.
info
(
f
"点击选择了{title_name}"
)
return
# 滑动查看文章内容
"""
对话内容可:添加到笔记 复制 点赞 点踩
文档解读内容可:添加到笔记 复制
笔记可:复制 删除
添加到笔记 复制 点赞 点踩 删除
1 2 3 4 5
"""
def
small_control
(
self
,
menu_type
=
None
):
pass
# 导出解读
def
derive_document_summary_control
(
self
):
self
.
menu_types_control
(
2
)
time
.
sleep
(
1
)
self
.
find_el
(
self
.
deriveDocumentSummary
)
.
click
()
logger
.
info
(
"点击文档解读"
)
# 导出笔记
def
derive_note_control
(
self
):
self
.
menu_types_control
(
3
)
time
.
sleep
(
1
)
self
.
find_el
(
self
.
deriveDocumentSummary
)
.
click
()
logger
.
info
(
"点击导出笔记"
)
# 推荐问题
# 推荐问题
def
recommend_control
(
self
,
count
=
None
):
def
recommend_control
(
self
,
count
=
None
):
...
@@ -523,10 +607,15 @@ class DocumentDialogueHelper(BasePage):
...
@@ -523,10 +607,15 @@ class DocumentDialogueHelper(BasePage):
self
.
find_el
(
self
.
recommendButton
)
.
click
()
self
.
find_el
(
self
.
recommendButton
)
.
click
()
time
.
sleep
(
1
)
time
.
sleep
(
1
)
questions
=
self
.
find_el
(
self
.
recommendQuestionsDataList
)
.
find_elements
(
By
.
XPATH
,
"./li"
)
questions
=
self
.
find_el
(
self
.
recommendQuestionsDataList
)
.
find_elements
(
By
.
XPATH
,
"./li"
)
logger
.
info
(
f
"此处有{len(questions)}个推荐问题"
)
time
.
sleep
(
1
)
time
.
sleep
(
1
)
questions
[
count
-
1
]
.
click
()
questions
[
count
-
1
]
.
click
()
question_name
=
questions
[
count
-
1
]
.
get_element
(
By
.
XPATH
,
"./div/span/div/span/div/span/span[2]"
)
.
get_attribute
(
"innerText"
)
logger
.
info
(
f
"选择的问题为{question_name}"
)
time
.
sleep
(
9
)
time
.
sleep
(
9
)
# 切换对话的对象 文件夹/文档
# 输入问题并点击发送
# 输入问题并点击发送
def
send_question_control
(
self
,
question
=
None
):
def
send_question_control
(
self
,
question
=
None
):
time
.
sleep
(
1
)
time
.
sleep
(
1
)
...
@@ -558,13 +647,16 @@ if __name__ == '__main__':
...
@@ -558,13 +647,16 @@ if __name__ == '__main__':
time
.
sleep
(
1
)
time
.
sleep
(
1
)
businessKnowledge
.
document_dialogue_helper
.
folderDialogueControl
()
businessKnowledge
.
document_dialogue_helper
.
folderDialogueControl
()
time
.
sleep
(
1
)
time
.
sleep
(
1
)
businessKnowledge
.
document_dialogue_helper
.
menu_types_control
(
1
)
businessKnowledge
.
document_dialogue_helper
.
select_magnification_by
(
"50"
)
time
.
sleep
(
2
)
# businessKnowledge.document_dialogue_helper.menu_types_control(1)
# businessKnowledge.document_dialogue_helper.toggle_document_control()
# businessKnowledge.document_dialogue_helper.toggle_document_control()
# businessKnowledge.document_dialogue_helper.toggle_document_folder_dialogue_control()
# businessKnowledge.document_dialogue_helper.toggle_document_folder_dialogue_control()
# businessKnowledge.document_list_helper.copy_document_control(2,"团队共享知识库")
# businessKnowledge.document_list_helper.copy_document_control(2,"团队共享知识库")
# businessKnowledge.document_list_helper.documentListDialogueControl(2)
# businessKnowledge.document_list_helper.documentListDialogueControl(2)
# businessKnowledge.document_list_helper.documentListControl(3)
# businessKnowledge.document_list_helper.documentListControl(3)
time
.
sleep
(
2
)
# businessKnowledge.upload_document_helper.uploadUrlControl("https://blog.csdn.net/FezZZZ/article/details/120878765")
# businessKnowledge.upload_document_helper.uploadUrlControl("https://blog.csdn.net/FezZZZ/article/details/120878765")
# time.sleep(2)
# time.sleep(2)
...
...
Pages/business_knowledge1.log
0 → 100644
View file @
346c94fa
TestCases/p.py
0 → 100644
View file @
346c94fa
TestCases/test_business_knowledge.py
0 → 100644
View file @
346c94fa
from
selenium.webdriver.common.by
import
By
from
Pages.businessKnowledge_page
import
BusinessKnowledgePage
from
Pages.login_page
import
LoginPage
from
Util.Util
import
DriverUtils
import
time
from
loguru
import
logger
class
TestBusinessKnowledge
:
def
setup_class
(
self
):
# 在所有的测试用例脚本之前执行一次
# 完成公共部分初始化
self
.
driver
=
DriverUtils
.
get_web_driver
()
self
.
login_page
=
LoginPage
()
self
.
business_page
=
BusinessKnowledgePage
()
def
teardown_class
(
self
):
# 在所有的测试用例脚本之后执行一次
self
.
driver
.
quit
()
pass
def
setup_method
(
self
):
# 在每个测试用例脚本之前执行一次
self
.
driver
.
get
(
'https://rays7.raysgo.com/login'
)
self
.
login_page
.
login_username
(
"17373027967"
,
"3149390154Li"
)
self
.
business_page
.
entranceAi
()
# 进入AI编辑室
self
.
business_page
.
entranceBusinessKnowledge
()
# 进入企业知识库
time
.
sleep
(
3
)
def
teardown_method
(
self
):
# 在每个测试用例脚本之后执行一次
pass
# 新建文件夹 0-20 重复文件名
def
test_newFolder_case001
(
self
):
folder_name
=
"XXXXX"
self
.
business_page
.
newFolderControl
(
folder_name
)
time
.
sleep
(
3
)
# 断言
folders
=
self
.
business_page
.
find_el
(
self
.
business_page
.
folders
)
.
find_elements
(
By
.
XPATH
,
".//span"
)
assert
folder_name
==
self
.
business_page
.
get_text_ele
(
folders
[(
len
(
folders
)
-
1
)])
logger
.
info
(
"新建文件成功"
)
# 更新文件夹名字 0-20 重复文件名
def
test_updateFolder_case001
(
self
):
expect_folder_name
=
"xxxx322x"
actual_folder_name
=
self
.
business_page
.
updateFolderControl
(
expect_folder_name
)
time
.
sleep
(
2
)
# 断言
assert
actual_folder_name
==
expect_folder_name
logger
.
info
(
"更新文件名字成功"
)
# 删除文件夹
def
test_deleteFolder_case001
(
self
):
self
.
business_page
.
deleteFolderControl
()
# 切换文件夹
def
test_traverse_folder
(
self
):
try
:
self
.
business_page
.
traverseFolder
()
assert
1
==
1
except
Exception
as
e
:
logger
.
info
(
"错误类型:{e}"
)
# 搜索
def
test_search_document
(
self
,
key_name
=
"世界"
):
try
:
documents
=
self
.
business_page
.
searchDocument
(
key_name
)
flag
=
self
.
business_page
.
isExistKeyInDocument
(
key_name
,
documents
)
assert
flag
==
True
except
Exception
as
e
:
logger
.
info
(
f
"发生报错:报错信息为{e}"
)
# 文档上传
def
test_upload_document_case001
(
self
):
stry_paths
=
[]
stry_paths
.
append
(
"t"
+
str
(
0
+
1
)
+
".txt"
)
self
.
business_page
.
upload_document_helper
.
uploadDocumentControl
(
stry_paths
)
time
.
sleep
(
10
)
# 断言
assert
"学习成功"
==
self
.
business_page
.
get_text_ele
(
self
.
business_page
.
document_list_helper
.
firstDocument
)
# 导入网站
def
test_upload_website_case001
(
self
):
self
.
business_page
.
upload_document_helper
.
uploadUrlControl
(
"https://blog.csdn.net/FezZZZ/article/details/120878765"
)
time
.
sleep
(
10
)
# 断言
assert
"学习成功"
==
self
.
business_page
.
get_text_ele
(
self
.
business_page
.
document_list_helper
.
firstDocument
)
Util/Util.py
View file @
346c94fa
...
@@ -15,3 +15,5 @@ class DriverUtils:
...
@@ -15,3 +15,5 @@ class DriverUtils:
cls
.
__driver
.
implicitly_wait
(
10
)
cls
.
__driver
.
implicitly_wait
(
10
)
return
cls
.
__driver
return
cls
.
__driver
output/logs/mylog.log
View file @
346c94fa
...
@@ -4,3 +4,7 @@
...
@@ -4,3 +4,7 @@
2024-02-19T04:58:18.926796+0800 - INFO - 登陆成功
2024-02-19T04:58:18.926796+0800 - INFO - 登陆成功
2024-02-19T05:00:45.136661+0800 - INFO - 登陆成功
2024-02-19T05:00:45.136661+0800 - INFO - 登陆成功
2024-02-19T05:12:21.817077+0800 - INFO - 此时菜单点击的为:文档解读
2024-02-19T05:12:21.817077+0800 - INFO - 此时菜单点击的为:文档解读
2024-02-19T11:11:47.462293+0800 - INFO - 点击选择了50%
2024-02-19T18:04:49.471174+0800 - INFO - 发生报错:报错信息为'WebElement' object has no attribute 'get_element'
2024-02-19T18:10:18.397061+0800 - INFO - 发生报错:报错信息为'WebElement' object has no attribute 'get_element'
2024-02-19T18:15:01.900058+0800 - INFO - 发生报错:报错信息为'WebElement' object has no attribute 'getAttribute'
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment