第二个月课堂011讲解selenium之实战discuz(003)

一、discuz实战

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

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

解决方法一:

 

一、封装:登录

'''
讲解:
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()
if __name__ == '__main__': D=Discuz() # D.login() #调用登录模块 D.mk_login() #调用登录模

二、注册、登录
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()

拓展知识:

结论:

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

(2)执行except block.

(3)向下继续。




三、在论坛成功上发帖

3.1发帖一:我的----》发帖----》

 3.2

3.3默认模块发帖方式

备注:class属性中间有空格,如果直接复制过来定位是会报错的
InvalidSelectorException: Message:
原因:

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

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

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

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

F12

#成功发帖
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()

 四、论坛帖搜索

#帖子搜索
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_xpath('//*[@id="scbar_txt"]').send_keys('论坛自动化测试快速发贴')
driver.find_element_by_xpath('//*[@id="scbar_btn"]').click()

作业:1 .自己写五调条论坛的用例

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

问题总结:

问题1.用户名id变化

 问题2:

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

 问题3:

3、回帖中的表情添加

 问题4:

图标点击发帖定位

问 

 问题5:

性别的切换

 问题6:猿辅导

首次登陆登陆无法,定位

原文地址:https://www.cnblogs.com/xiaolehua/p/14129772.html