找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
8)下拉框
from selenium import webdriver
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/select.html')
driver.maximize_window()

s = driver.find_element_by_name('select')      #定位到下拉框
第一种方式  索引值开始   是0开始
Select(s).select_by_index(3)             #桔子
第二种方法
Select(s).select_by_value('banana')      #香蕉
Select(s).select_by_visible_text('桃子')    #桃子
9)警告型弹框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/alert.html')
driver.maximize_window()
alert = driver.switch_to.alert
print(alert.text)
sleep(3)
# alert.accept()       #点击确定
# alert.accept()       #在确定
alert.dismiss()      #取消按钮
alert.accept()      #取消后在确定
11)确认弹框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/enter.html')
driver.maximize_window()

driver.find_element_by_class_name('alert').click()    #点击确认弹框
alert = driver.switch_to.alert
print(alert.text)

alert.accept()      #点击确定
# alert.dismiss()   #点击取消
12)输入型弹框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/prompt.html')
driver.maximize_window()

driver.find_element_by_class_name('alert').click()

alert = driver.switch_to.alert
sleep(3)
alert.send_keys('http://www.baidu.com')
alert.accept()      #点击确定
# alert.dismiss()     #点击取消
13)iframe框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('http://mail.163.com/')
driver.maximize_window()
第一种方法定位iframe框
iframe = driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe[1]')   #定位到iframe
driver.switch_to.frame(iframe)        #进入到iframe
第二种方法  ==》页面的iframe索引值,从0开始
driver.switch_to.frame(0)    #进入到iframe
第三种方法
iframe = driver.find_element_by_tag_name('iframe')    #iframen 标签
driver.switch_to.frame(iframe)    #进入到iframe

sleep(3)
driver.find_element_by_name('email').send_keys('13923876846')
driver.find_element_by_name('password').send_keys('Duanzl888')
driver.find_element_by_id('dologin').click()
driver.switch_to.default_content()       #退出iframe框
14)滚动条
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()

driver.get('http://www.jd.com')
driver.maximize_window()

#往下滑的操作
js1 = 'window.scrollTo(0,20000)'
driver.execute_script(js1)

sleep(3)
#往上滑操作
js2 = 'window.scrollTo(0,0)'
driver.execute_script(js2)
14)Keys类
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.maximize_window()
driver.find_element_by_id('kw').send_keys('pythonn')
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)     #删除最后一个字符
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')    #全选
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')    #剪切
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'v')   #粘贴
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.ENTER)   #点击确定
def find_element(locator,*value):
'''
封装一个定位元素的公共方法
:param locator:
:param value:
:return:
'''
# sleep(2)# return driver.find_element_by_id(locator).send_keys(value)
if name == 'main':
find_element('kw','pythonn')
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('su', Keys.ENTER)
15)我们之前写的脚本叫作线性脚本,需要把这些封装在类里面
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()

driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
driver.maximize_window()
sleep(3)
driver.find_element_by_id('userAccount').send_keys('admin')
driver.find_element_by_id('loginPwd').send_keys('123456')
driver.find_element_by_id('loginBtn').click()
需要封装在类里面
from selenium import webdriver
from time import sleep

class Cms(object):

def init(self):     #构造函数
self.driver = webdriver.Chrome()      #创建driver对象

self.driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
self.driver.maximize_window()
self.driver.implicitly_wait(5)

def login(self):
'''
封装一个登录函数
:return:
'''
self.driver.find_element_by_id('userAccount').send_keys('admin')
self.driver.find_element_by_id('loginPwd').send_keys('123456')
self.driver.find_element_by_id('loginBtn').click()
sleep(3)
def center(self):
'''
封装一个用户中心函数
:return:
'''
self.driver.find_element_by_xpath('//*[@id="menu-user"]/dt').click()

if name == 'main':
c = Cms()     #创建一个对象
c.login()
c.center()
16、为了解决用例分离的问题我们引用了unittest单元测试框架
python中有哪些框架:unittest pytest nose junit
unittest 单元测试框架的作用,最开始的作用用来做单元测试,测试用例组织和管理
我们的ui自动化用例
import unittest      #导入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):      #unitest运行用例的顺序规则ASCII  0-9  A-Z  a-z
print(111)

def test_a(self):
print(444)

def test_A(self):
print(333)

def dcs(self):      #unittest 测试框架只会运行test开头的用例
print(555)

if name == 'main':
unittest.main()       #unittest测试框架是运行用例的入口,main是函数,所用就是运行所有的用例
17、需求:百度搜索python和selenium
import unittest
from selenium import webdriver
from time import sleep
from dcs9_ui_auto.HTMLTestRunner3_New import HTMLTestRunner
class Baidu_Test(unittest.TestCase):
def setUp(self) -> None:    self.driver = webdriver.Chrome()      #创建driver对象    self.driver.get('http://www.baidu.com')    self.driver.maximize_window()    self.driver.implicitly_wait(5)def tearDown(self) -> None:    sleep(5)    self.driver.close()    #退出浏览器def test01(self):    self.driver.find_element_by_id('kw').send_keys('python')def test02(self):    self.driver.find_element_by_id('kw').send_keys('selenium')
#把用例放进一个套件里面
def all_case():
suit = unittest.TestSuite()      #创建一个suit对象,类似一个容器,用来装测试用例
# 第一种方法 单条用例# suit.addTest(Baidu_Test('test01'))     #把test01这个测试用例装进suit里面# 第二种方法# suit.addTests([Baidu_Test('test01'),Baidu_Test('test02')])## return suit       #把装好的用例suit套件返回给函数调用处,谁调用all_case函数,就拿到了用例
if name == 'main':
# 1、第一种运行方式
# unittest.main()    #运行所有的用例
# 2、运行用例的第二种(单条用例)# runner = unittest.TextTestRunner()   #根据TextTestRunner类创建一个runner对象                                    #然后runner对象调用run方法运行用例# runner.run(all_case())# 运行用例的第三种方法(自动化搜索用例)# 自动化搜索用例+自动运行+生成报告 defaultTestLoader  是TestLoader类的对象#discover()方法会自动化搜索特定路径中以lesson开头并且py结尾的模块中test开头的用例start_dir = 'C:\my_project\dcs\dcs9_ui_auto'   #当前模块包的路径filename = start_dir+'\\ui_report.html'     #生成报告的路径和名称f = open(filename,'wb')     #wb 是以二进制的方式往filename 文件里面写入测试结果后的报告discover = unittest.defaultTestLoader.discover(start_dir,pattern='lesson*.py')#自动化搜索用例runner =HTMLTestRunner(stream=f,title='百度自动化测试报告',                       description='测试结果如下:',tester='小段')runner.run(discover)
8)下拉框
from selenium import webdriver
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/select.html')
driver.maximize_window()

s = driver.find_element_by_name('select')      #定位到下拉框
第一种方式  索引值开始   是0开始
Select(s).select_by_index(3)             #桔子
第二种方法
Select(s).select_by_value('banana')      #香蕉
Select(s).select_by_visible_text('桃子')    #桃子
9)警告型弹框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/alert.html')
driver.maximize_window()
alert = driver.switch_to.alert
print(alert.text)
sleep(3)
# alert.accept()       #点击确定
# alert.accept()       #在确定
alert.dismiss()      #取消按钮
alert.accept()      #取消后在确定
11)确认弹框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/enter.html')
driver.maximize_window()

driver.find_element_by_class_name('alert').click()    #点击确认弹框
alert = driver.switch_to.alert
print(alert.text)

alert.accept()      #点击确定
# alert.dismiss()   #点击取消
12)输入型弹框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('file:///D:/lesson2/%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E7%9A%84%E8%AF%BE%E4%BB%B6/20.11.16%E5%8F%B7-18%E5%8F%B7%20%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%9C%88%E4%B9%8B%E7%AC%AC11%E8%AE%B2%EF%BC%9A%E5%A4%9A%E6%B5%8B%E5%B8%88ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E4%B9%8Bselenium/elem/prompt.html')
driver.maximize_window()

driver.find_element_by_class_name('alert').click()

alert = driver.switch_to.alert
sleep(3)
alert.send_keys('http://www.baidu.com')
alert.accept()      #点击确定
# alert.dismiss()     #点击取消
13)iframe框
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('http://mail.163.com/')
driver.maximize_window()
第一种方法定位iframe框
iframe = driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe[1]')   #定位到iframe
driver.switch_to.frame(iframe)        #进入到iframe
第二种方法  ==》页面的iframe索引值,从0开始
driver.switch_to.frame(0)    #进入到iframe
第三种方法
iframe = driver.find_element_by_tag_name('iframe')    #iframen 标签
driver.switch_to.frame(iframe)    #进入到iframe

sleep(3)
driver.find_element_by_name('email').send_keys('13923876846')
driver.find_element_by_name('password').send_keys('Duanzl888')
driver.find_element_by_id('dologin').click()
driver.switch_to.default_content()       #退出iframe框
14)滚动条
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()

driver.get('http://www.jd.com')
driver.maximize_window()

#往下滑的操作
js1 = 'window.scrollTo(0,20000)'
driver.execute_script(js1)

sleep(3)
#往上滑操作
js2 = 'window.scrollTo(0,0)'
driver.execute_script(js2)
14)Keys类
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.maximize_window()
driver.find_element_by_id('kw').send_keys('pythonn')
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)     #删除最后一个字符
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')    #全选
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')    #剪切
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'v')   #粘贴
sleep(3)
driver.find_element_by_id('kw').send_keys(Keys.ENTER)   #点击确定
def find_element(locator,*value):
'''
封装一个定位元素的公共方法
:param locator:
:param value:
:return:
'''
# sleep(2)# return driver.find_element_by_id(locator).send_keys(value)
if name == 'main':
find_element('kw','pythonn')
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('su', Keys.ENTER)
15)我们之前写的脚本叫作线性脚本,需要把这些封装在类里面
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()

driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
driver.maximize_window()
sleep(3)
driver.find_element_by_id('userAccount').send_keys('admin')
driver.find_element_by_id('loginPwd').send_keys('123456')
driver.find_element_by_id('loginBtn').click()
需要封装在类里面
from selenium import webdriver
from time import sleep

class Cms(object):

def init(self):     #构造函数
self.driver = webdriver.Chrome()      #创建driver对象

self.driver.get('http://cms.duoceshi.cn/cms/manage/login.do')
self.driver.maximize_window()
self.driver.implicitly_wait(5)

def login(self):
'''
封装一个登录函数
:return:
'''
self.driver.find_element_by_id('userAccount').send_keys('admin')
self.driver.find_element_by_id('loginPwd').send_keys('123456')
self.driver.find_element_by_id('loginBtn').click()
sleep(3)
def center(self):
'''
封装一个用户中心函数
:return:
'''
self.driver.find_element_by_xpath('//*[@id="menu-user"]/dt').click()

if name == 'main':
c = Cms()     #创建一个对象
c.login()
c.center()
16、为了解决用例分离的问题我们引用了unittest单元测试框架
python中有哪些框架:unittest pytest nose junit
unittest 单元测试框架的作用,最开始的作用用来做单元测试,测试用例组织和管理
我们的ui自动化用例
import unittest      #导入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):      #unitest运行用例的顺序规则ASCII  0-9  A-Z  a-z
print(111)

def test_a(self):
print(444)

def test_A(self):
print(333)

def dcs(self):      #unittest 测试框架只会运行test开头的用例
print(555)

if name == 'main':
unittest.main()       #unittest测试框架是运行用例的入口,main是函数,所用就是运行所有的用例
17、需求:百度搜索python和selenium
import unittest
from selenium import webdriver
from time import sleep
from dcs9_ui_auto.HTMLTestRunner3_New import HTMLTestRunner
class Baidu_Test(unittest.TestCase):
def setUp(self) -> None:    self.driver = webdriver.Chrome()      #创建driver对象    self.driver.get('http://www.baidu.com')    self.driver.maximize_window()    self.driver.implicitly_wait(5)def tearDown(self) -> None:    sleep(5)    self.driver.close()    #退出浏览器def test01(self):    self.driver.find_element_by_id('kw').send_keys('python')def test02(self):    self.driver.find_element_by_id('kw').send_keys('selenium')
#把用例放进一个套件里面
def all_case():
suit = unittest.TestSuite()      #创建一个suit对象,类似一个容器,用来装测试用例
# 第一种方法 单条用例# suit.addTest(Baidu_Test('test01'))     #把test01这个测试用例装进suit里面# 第二种方法# suit.addTests([Baidu_Test('test01'),Baidu_Test('test02')])## return suit       #把装好的用例suit套件返回给函数调用处,谁调用all_case函数,就拿到了用例
if name == 'main':
# 1、第一种运行方式
# unittest.main()    #运行所有的用例
# 2、运行用例的第二种(单条用例)# runner = unittest.TextTestRunner()   #根据TextTestRunner类创建一个runner对象                                    #然后runner对象调用run方法运行用例# runner.run(all_case())# 运行用例的第三种方法(自动化搜索用例)# 自动化搜索用例+自动运行+生成报告 defaultTestLoader  是TestLoader类的对象#discover()方法会自动化搜索特定路径中以lesson开头并且py结尾的模块中test开头的用例start_dir = 'C:\my_project\dcs\dcs9_ui_auto'   #当前模块包的路径filename = start_dir+'\\ui_report.html'     #生成报告的路径和名称f = open(filename,'wb')     #wb 是以二进制的方式往filename 文件里面写入测试结果后的报告discover = unittest.defaultTestLoader.discover(start_dir,pattern='lesson*.py')#自动化搜索用例runner =HTMLTestRunner(stream=f,title='百度自动化测试报告',                       description='测试结果如下:',tester='小段')runner.run(discover)


分享至 : QQ空间
收藏

0 个回复

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