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()
第
|
|