zoukankan      html  css  js  c++  java
  • 第二个月课堂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:猿辅导

    首次登陆登陆无法,定位

  • 相关阅读:
    UVA 465 Overflow (浮点数的优势)
    UVA 424 Integer Inquiry (大数相加问题)
    UVA 10494 If We Were a Child Again(大数与整型相除取整和取余)
    粘一个在UVA和ZOJ都能AC但POJ WR的代码
    UVA 340 MasterMind Hints
    UVA10815 Andy's First Dictionary
    MSComm写串口通信驱动步骤
    UVA 10106 Product (大数相乘问题)
    实现工具栏中添加的组合框接收回车消息
    UVA 10420 List of Conquests
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/14129772.html
Copyright © 2011-2022 走看看