dcsxlh

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

一、discuz实战

1、备注:验证码在公司中解决方案,万能验证码或屏蔽

链接参考:https://i.cnblogs.com/posts/edit;postId=13693695

解决方法一:

 

 

 

 

一、封装:登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
'''
讲解:
1、将论坛的登录还有点击模块管理 通过类来进行封装(给实参)
2、将论坛的登录还有点击模块管理 用例封装(给形参)且通过类的传递完成调用 
 加一个断言 
'''
from selenium import webdriver
from time import sleep
class Discuz: #定义一个类
    def __init__(self):
        self.drvier=webdriver.Chrome()#创建浏览器对象
        self.drvier.get('http://192.168.153.130/bbs/forum.php')
        self.drvier.maximize_window()
        self.drvier.implicitly_wait(10)
    def login(self,name,pwd): #登录模块
        self.drvier.find_element_by_id('ls_username').send_keys(name)
        self.drvier.find_element_by_id('ls_password').send_keys(pwd)
        sleep(2)
        self.drvier.find_element_by_css_selector('.pn').click()
    def mk_login(self): #模块管理
        self.login('admin','123456')#通过self来引用登录模块
        self.drvier.find_element_by_link_text('模块管理').click()
        sleep(2)
        title=self.drvier.title#获取模块管理界面的title
        # print(title)
        if title=='门户 - Discuz! Board - Powered by Discuz!':
            print('模块管理中心OK') #模块管理中心OK
        else:
            print('NO')
        sleep(4)
        self.drvier.close()<br>       
if __name__ == '__main__':
    D=Discuz()
    # D.login() #调用登录模块
    D.mk_login() #调用登录模<br><br>二、注册、登录from selenium import webdriver
from time import sleep
class discuz(object):
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.get('http://192.168.153.130//bbs/forum.php')
        sleep(2)
        self.driver.maximize_window()
    def zhuce(self):
        self.driver.find_element_by_link_text('立即注册').click()
        sleep(2)
        self.driver.find_element_by_id('WxQGOM').send_keys('hzdcs')
        sleep(2)
        self.driver.find_element_by_id('qMmWJc').send_keys('123456789')
        sleep(2)
        self.driver.find_element_by_id('ax0xA0').send_keys('123456789')
        sleep(2)
        self.driver.find_element_by_id('vQeIRe').send_keys('812462278@qq.com')
        sleep(2)
        self.driver.find_element_by_id('registerformsubmit').click()
 
    def login(self):
        self.driver.find_element_by_id('ls_username').send_keys('admin')
        sleep(2)
        self.driver.find_element_by_css_selector('input[name="password"]').send_keys('123456')
        sleep(2)
        self.driver.find_element_by_css_selector('.fastlg_l button[type="submit"]').click()
        sleep(2)
        # self.browser.find_element_by_xpath('//*[@id="um"]/p[1]/a[7]').click()  #退出
        # sleep(2)
        try:
            yy = self.driver.find_element_by_css_selector('[title="我的帖子"]').get_attribute('title')
            print (yy)
            assert yy == '我的帖子'
        except
            print("登录失败")
        else:
            print ("登录成功")
 
 
if __name__ == '__main__':
    p1 = discuz()
    p1.zhuce()
    p1.login()<br><br>拓展知识:<br><br><br>三、在论坛成功上发帖<br><br>3.1发帖一:我的----》发帖----》备注:class属性中间有空格,如果直接复制过来定位是会报错的<br>InvalidSelectorException: Message:<br>原因:#成功发帖
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
url='http://192.168.153.130/bbs/forum.php'
driver.get(url)
driver.maximize_window()
driver.find_element_by_id('ls_username').send_keys('admin')
sleep(3)
driver.find_element_by_id('ls_password').send_keys('123456')
sleep(3)
driver.find_element_by_css_selector(".pn").click()
sleep(3)
driver.find_element_by_link_text("默认版块").click()
driver.find_element_by_xpath('//*[@id="newspecial"]/img').click()
sleep(3)
driver.find_element_by_id('subject').send_keys('论坛自动化测试快速发贴')
sleep(3)
s=driver.find_element_by_xpath('//*[@id="e_iframe"]')
driver.switch_to_frame(s)
driver.find_element_by_xpath('/html/body').send_keys('测试成功')
driver.switch_to_default_content()
driver.find_element_by_xpath('//*[@id="postsubmit"]/span').click()
#帖子搜索<br>from time import sleep<br>from selenium import webdriver<br>driver = webdriver.Chrome()<br>url='http://192.168.153.130/bbs/forum.php'<br>driver.get(url)<br>driver.maximize_window()<br>driver.find_element_by_id('ls_username').send_keys('admin')<br>sleep(3)<br>driver.find_element_by_id('ls_password').send_keys('123456')<br>sleep(3)<br>driver.find_element_by_css_selector(".pn").click()<br>sleep(3)<br>driver.find_element_by_xpath('//*[@id="scbar_txt"]').send_keys('论坛自动化测试快速发贴')<br>driver.find_element_by_xpath('//*[@id="scbar_btn"]').click()<br><br>作业:1 .自己写五调条论坛的用例

结论:

 

(1)先执行try block, 直到发现了错误,不再执行异常之后的代码。

(2)执行except block.

(3)向下继续。

 

 3.2

3.3默认模块发帖方式

1.class属性中间的空格并不是空字符串,那是间隔符号,

表示的是一个元素有多个class的属性名称

(class属性是比较特殊的一个,除了这个有多个属性外,其它的像name,id是没多个属性的)

2、class属性有空格是多个属性了,定位的时候取其中的一个就行(并且要唯一)

F12

 

 

 四、论坛帖搜索

2、结合自己项目写自动化用例,并把出现的问题总结及解决的方法

 

 

 

 

问题总结:

问题1.用户名id变化

 

 问题2:

2、查看共同好友提示框,取消

 

 问题3:

3、回帖中的表情添加

 

 问题4:

图标点击发帖定位

问 

 

 问题5:

性别的切换

 

 问题6:猿辅导

首次登陆登陆无法,定位

 

 

posted on   多测师_肖sir  阅读(554)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
 
点击右上角即可分享
微信分享提示