找回密码
 立即注册

推荐阅读

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

#确认型弹框
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('file:///E:/DCSXX/html/enter.html')
driver.implicitly_wait(5)
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:///E:/DCSXX/html/prompt.html')
driver.implicitly_wait(5)
driver.maximize_window()
driver.find_element_by_class_name('alert').click()   #点击输入型弹窗位置
t=driver.switch_to.alert
t.send_keys('http://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(5)
driver.maximize_window()
driver.find_element_by_link_text('你好,请登录').click()
driver.find_element_by_class_name('QQ-icon').click()        #点击选择QQ方式登录
sleep(2)
iframe=driver.find_element_by_id('ptlogin_iframe')   #定位到iframe框
driver.switch_to.frame(iframe)                               #进入到iframe框
driver.find_element_by_id('img_out_1661708058').click()      #点击QQ头像登录
# driver.switch_to_default_content()                           #退出iframe框
# sleep(5)
driver.find_element_by_id('key').send_keys('鞋子')

#登录163邮箱
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('https://mail.163.com/')
driver.implicitly_wait(5)
driver.maximize_window()
iframe=driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe[1]')
driver.switch_to.frame(iframe)
driver.find_element_by_name('email').send_keys('YJ9211023')
driver.find_element_by_name('password').send_keys('YThj980623')
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(5)
driver.maximize_window()
#滑动到底部
win1='window.scrollTo(0,20000)'
driver.execute_script(win1)
sleep(2)
#滑动到顶部
win2='window.scrollTo(0,0)'
driver.execute_script(win2)

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

#缓慢滑动:
n=0
while n<20000:
    n+=100
    js2='var a=document.documentElement.scrollTop='+str(n)
    driver.execute_script(js2)
    sleep(1)

# Keys类
from selenium import webdriver
from selenium.webdriver.common.keys import Keys    #导入一个key类
from time import sleep
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(5)
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(locator).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
class Bbs:
    def __init__(self):       #创建一个构造函数
        self.driver_lt = webdriver.Chrome()
        self.driver_lt.get('http://192.168.0.17/bbs/forum.php')
        self.driver_lt.maximize_window()
        self.driver_lt.implicitly_wait(10)
    def login(self):          #封装一个登录的方法
        self.driver_lt.find_element_by_id('ls_username').send_keys('admin')
        self.driver_lt.find_element_by_id('ls_password').send_keys('123456')
        self.driver_lt.find_element_by_class_name('pn').click()
    def manage_center(self):   #封装一个管理中心
        self.login()
        self.driver_lt.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-9A-Za-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'E:\projects\dcs8\ui_auto'
#模糊匹配ui_auto这个目录下面需要运行的用例
discover=unittest.defaultTestLoader.discover(start_dir=start_dir,pattern='less*.py')
# print(discover)     #打印出来显示搜索到哪些用例
filename=r'E:\projects\dcs8\ui_auto'+'\\'+'_ui_report.html'
#print(filename)
f=open(filename,'wb')   #wb是用二进制的方式取写入到filename这个文件里
runner=HTMLTestRunner(stream=f,
                      title='UI自动化测试报告',
                      description='用例执行情况如下',
                      tester='dcs8')
runner.run(discover)     #运行模糊匹配出来的用例
f.close()               #关闭文件对象

分享至 : QQ空间
收藏

0 个回复

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