找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
aler弹框(警告型)
from selenium import  webdriver
from  time import sleep
driver=webdriver.Chrome()
driver.get('file:///C:/Users/Ma18534441182/Desktop/alert.html')
driver.implicitly_wait(10)
driver.maximize_window()
# alert#弹窗
t = driver.switch_to.alert #切换到alert弹窗
t.accept   #点击确定
sleep(2)
t.accept   #再点确定
t.dismiss() #点击取消
t.accept
sleep(2)
t.dismiss()

确认型弹窗
from selenium import  webdriver
from  time import sleep
driver=webdriver.Chrome()
driver.get('file:///C:/Users/Ma18534441182/Desktop/enter.html')
driver.implicitly_wait(10)
driver.maximize_window()
driver.find_element_by_class_name('alert').click()    #点击确认型弹窗
t=driver.switch_to.alert
t.accept()

输入型弹窗
from selenium import  webdriver
from  time import sleep
driver=webdriver.Chrome()
driver.get('file:///C:/Users/Ma18534441182/Desktop/prompt.html')
driver.implicitly_wait(10)
driver.maximize_window()
driver.find_element_by_class_name('alert').click()    #点击确认型弹窗
t=driver.switch_to.alert
print(t.text)
t.send_keys('https://www.baidu.com')
#t.accept()     #点击确定
t.dismiss()     #点击取消

iframe框处理,使用qq登录
from selenium import  webdriver
from  time import sleep
driver=webdriver.Chrome()
driver.get('https://www.jd.com/')
driver.implicitly_wait(10)
driver.maximize_window()
driver.find_element_by_link_text('你好,请登录').click()
driver.find_element_by_class_name('QQ-icon').click()
sleep(2)
iframe=driver.find_element_by_id('ptlogin_iframe')
driver.switch_to.frame(iframe)
driver.find_element_by_id('img_out_1265094508').click()
sleep(2)
driver.find_element_by_id('key').send_keys('nike 板鞋')


登录163邮箱
from selenium import  webdriver
from  time import sleep
driver=webdriver.Chrome()
driver.get('https://mail.163.com/')
driver.implicitly_wait(10)
driver.maximize_window()
#第一种方法:通过元素定位
iframe=driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe[1]') #定位iframe框
driver.switch_to.frame(iframe)#进入iframe框
#第二种方法:通过标签名定位到iframe框
iframe=driver.find_element_by_tag_name('iframe')
driver.switch_to.frame(iframe)
#第三种方法:

driver.find_element_by_name('email').send_keys('gaolei131010')
driver.find_element_by_name('password').send_keys('qweqwe123')
driver.find_element_by_id('dologin').click()


滚动条操作
from selenium import  webdriver
from  time import sleep
driver=webdriver.Chrome()
driver.get('https://www.jd.com/')
driver.implicitly_wait(10)
driver.maximize_window()
滑动到底部
win1='window.scrollTo(0,20000)'  #向下滑动20000px
driver.execute_script(win1)
sleep(2)
滑动到底部
win2='window.scrollTo(0,0)'
driver.execute_script(win2)

第二种
jsl='var a = document.documentElement.scrollTop=20000'
driver.execute_script(jsl)

缓慢滑动
n=0
while n < 20000:
    n+=1000
    js2='var a = document.documentElement.scrollTop'+str(n)
    sleep(2)


keys类
from selenium import  webdriver
from selenium.webdriver.common.keys import Keys             #导入一个Keys类
from  time import sleep
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(10)
driver.maximize_window()
driver.find_element_by_id('kw').send_keys('selenium')
sleep(1)
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)   #删除一个字母
sleep(1)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')  #全选
sleep(1)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')  #剪切
sleep(1)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'V')  #粘贴
sleep(1)
driver.find_element_by_id('kw').send_keys(Keys.ENTER)        #回车


def find_element(locator,*value):
    '''封装一个元素定位方法(上面代码使用太多find_element)'''
    sleep(1)
    driver.find_element_by_id('kw').send_keys(*value)

if __name__ == '__main__':
    find_element('kw','selenium')
    find_element('kw',Keys.BACK_SPACE)
    find_element('kw',Keys.CONTROL,'a')
    find_element('kw',Keys.CONTROL,'x')
    find_element('kw',Keys.CONTROL,'v')
    find_element('kw',Keys.ENTER)



from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('http://192.168.137.128/bbs/forum.php')
driver.maximize_window()
driver.find_element_by_id('ls_username').send_keys('admin')
driver.find_element_by_id('ls_password').send_keys('123456')
driver.find_element_by_css_selector('.pn').click()

把上边的代码进行封装
from  selenium import webdriver
class Bbs:
    def __init__(self):  #创建一个构造函数
        self.driver=webdriver.Chrome()
        self.driver.get('http://192.168.137.128/bbs/forum.php')
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

    def login(self):
        '''封装一个登录的方法'''
        self.driver.find_element_by_id('ls_username').send_keys('admin')
        self.driver.find_element_by_id('ls_password').send_keys('123456')
        self.driver.find_element_by_css_selector('.pn').click()

    def manage_center(self):
        self.login()
        self.driver.find_element_by_link_text('管理中心').click()

if __name__ == '__main__':
    b=Bbs()
    # b.login()
    b.manage_center()


unittest框架介绍
import unittest            #导入unittest

#TestCase这是类用来组织和管理自动化测试用例的
class Test(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        print('类开始')

    @classmethod
    def tearDownClass(cls) -> None:
        print('类结束')

    def setUp(self) -> None:
        print('方法结束')

    def tearDown(self) -> None:
        print('方法结束')

    def test002(self):
        print(222)

    def test001(self):
        print(111)

    def test_a(self):
        print(333)

    def test_B(self):
        print(444)

    def cook(self):
        print(555)

if __name__ == '__main__':
    unittest.main()               #运行unittest单元测试框架里面的所有代码,函数的入口

1.在unittest框架里面写的用例名称必须以test开头
2.用例运行顺序按照用例名称ASCII码  0-9   A-Z   a-z
3.方法开始和方法结束在每个用例进行之前和结束都会运行一次
4.类开始和类方法在所有用例运行前和后只会运行一次






# 自动化测试用例运行方法
# # 第一种
import  unittest
from selenium import webdriver
from time import sleep
from ui_auto.HTMLTestRunner3_New import HTMLTestRunner
class Test_Baidu(unittest.TestCase):

    def setUp(self):
        self.driver=webdriver.Chrome()
        self.driver.get('https://www.baidu.com/')
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

    def tearDown(self):
        sleep(3)
        self.driver.quit()

    def test001(self):
        self.driver.find_element_by_id('kw').send_keys('selenium')

    def test002(self):
        self.driver.find_element_by_id('kw').send_keys('python')

# def all_case():
#     '''封装一个套件,套件就是用来装用例的,相当于是一个容器'''
#     suite=unittest.TestSuite()                    #创建一个suite对象,用来添加需要运行的用例
#     # suite.addTest(Test_Baidu('test001'))          #把test001这条用例添加到套件里
#     # suite.addTest(Test_Baidu('test002'))
#     suite.addTests([Test_Baidu('test001'),Test_Baidu('test002')])
#     return suite

if __name__ == '__main__':
    # 第一种方法,运行了上面封装的所有用例
    # unittest.main()
    #第二种方法(运行套件里面添加的部分用例)
    # runner=unittest.TextTestRunner()  #创建一个运行用例的对象
    # runner.run(all_case())            #运行上面定义的套件里面的用例
    #第三种方法:通过模糊匹配用例运行
    start_dir=r'D:\Project\dcs8\ui_auto'
    #模糊匹配ui_auto这个目录下面需要运行的用例
    discover=unittest.defaultTestLoader.discover(start_dir=start_dir,pattern='less*.py')
    print(discover)                #打印出来显示搜索哪些用例
    filename=r'D:\Project\dcs8\ui_auto'+'\\'+'_ui_report.html'
    print(filename)                #D:\Project\dcs8\ui_auto\_ui_report.html
    f=open(filename,'wb')          #wb是用二进制的方式写入到filename这个文件里
    runner = HTMLTestRunner(stream=f,
                            title='UI自动化测试报告',
                            description='用例执行情况如下',
                            tester='dcs8')
    runner.run(discover)           #运行模糊匹配出来的用例
    f.close()                      #关闭文件对象
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册