找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
alert弹窗(警告型)from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('file:///D:/Python37/HTML/alert.html')
driver.implicitly_wait(10)
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:///D:/Python37/HTML/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:///D:/Python37/HTML/prompt.html')
driver.implicitly_wait(5)
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(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
driver.switch_to.default_content()      #退出iframe

driver.find_element_by_id('img_out_1812974111').click()     # 点击头像
sleep(2)
driver.find_element_by_id('key').send_keys('珠宝')

driver.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys()

from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('https://mail.163.com/')
driver.implicitly_wait(5)
driver.maximize_window()

ifarme=driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe[1]')
driver.switch_to.frame(ifarme)
# driver.switch_to.default_content()
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()

id,name,class有数字存在时新进入页面对应值可能会发生改变,导致无法定位到元素,(定位时尽可能找非数字的)
Ctrl+f   可在网页界面输入数据进行搜索

滚动条操作

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)

# 滑动到顶部
win1='window.scrollTo(0,0)'         #滑动到纵坐标0px的位置
driver.execute_script(win1)

第二种
js1='var a=document.documentElemment.scrolloTop=20000'
driver.execute_script(js1)

缓慢滑动
n=0
while n<20000:
    n+=800
    js2='var a=document.documentElemment.scrolloTop'+str(n)
    driver.execute_script(js2)
    sleep(2)



from selenium import webdriver
from selenium.webdriver.common.keys import 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('哈哈嘿嘿滚')
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 xxx(a,*value):
    sleep(1)
    driver.find_element_by_id(a).send_keys(*value)


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


把代码封装到类里边去
from selenium import webdriver
class Bbs:
    def __init__(self):
        self.driver=webdriver.Chrome()
        self.driver.get('http://192.168.86.128/bbs/forum.php')
        self.driver.implicitly_wait(10)
        self.driver.maximize_window()

    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_class_name('pn').click()
    def manage(self):       #封装管理中心
        # self.login()
        self.driver.find_element_by_link_text('管理中心').click()

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



unittest框架介绍
import unittest     #导入这个库

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_D(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 Text_Baibu(unittest.TestCase):

    类开始和结束只开启一个窗口,然后按用例执行下一步操作(不会重开新窗口)
    @classmethod
    def setUpClass(cls) -> None:
        cls.driver = webdriver.Chrome()
        cls.driver.get('https://www.baidu.com/')
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls) -> None:
        sleep(2)
        cls.driver.quit()

    方法开始和方法结束开启多个窗口,用例执行操作(不会重开新窗口)
    def setUp(self) -> None:
        self.driver = webdriver.Chrome()
        self.driver.get('https://www.baidu.com/')
        self.driver.implicitly_wait(10)
        self.driver.maximize_window()

    def tearDown(self) -> None:
        sleep(2)
        self.driver.quit()

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


    def test002(self):
        self.driver.find_element_by_id('kw').send_keys('一朵花')


    def test003(self):
        self.driver.find_element_by_link_text('地图').click()

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

if __name__ == '__main__':
    第一种方法,运行上面所有的用例
    unittest.main()
    第
分享至 : QQ空间
收藏

0 个回复

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