当前位置 : 主页 > 网络安全 > 测试自动化 >

自动化实战例子

来源:互联网 收集:自由互联 发布时间:2021-06-19
# import nnlog# ## my_log = nnlog.Logger(‘dashu.log‘,when=‘D‘,backCount=5) # 日志名称 更新方式‘D‘时每天 backCount:最大保存数量# # my_log.debug("debug level")# # my_log.info("info level")# # my_log.warning("warin
# import nnlog# ## my_log = nnlog.Logger(‘dashu.log‘,when=‘D‘,backCount=5) # 日志名称 更新方式‘D‘时每天  backCount:最大保存数量# # my_log.debug("debug level")# # my_log.info("info level")# # my_log.warning("waring level")# # my_log.error("error level")# from selenium import webdriver# driver = webdriver.Chrome() # 创建浏览器服务# # 请求目标网址# driver.get(‘http://ui.imdsx.cn/uitester/‘)# 1、发送的http请求# selenium 是第三方提供的包# selenium提提供了18种定位方式# 1、id# element = driver.find_element_by_id(‘i1‘)# print(element)# # 向input输入字符串# element.send_keys(‘1111‘)# # 2、class定位 如果重复则取所有class中第一个# element = driver.find_element_by_class_name(‘classname‘)# print(element)# element.send_keys(‘1111‘)# # 3、css selector# # id=‘i1‘# # #i1# # <input id=‘i1‘># # element = driver.find_element_by_css_selector(‘#i1‘)# element = driver.find_element_by_css_selector(‘input[placeholder="请通过CSS SELECTOR定位元素"]‘)# element = driver.find_element_by_css_selector(‘.classname‘)# element.send_keys(‘1111‘)# 操作滚动条# js = ‘window.scrollTo(0,0);‘# driver.execute_script(js)# import time# time.sleep(2)# ele = driver.find_element_by_css_selector(‘#i1‘)# # ele.send_keys(‘滚动条‘)# 4、name的定位方式# ele = driver.find_element_by_name(‘name‘)# ele.send_keys(‘通过name定位‘)# 5、通过xpath# driver.find_element_by_xpath(‘//input[@placeholder="请通过CLASSNAME定位元素"]‘)# 6、tag name 很不常用# ele = driver.find_element_by_tag_name(‘input‘)# ele.send_keys(111)# 7、link_text# ele = driver.find_element_by_link_text(‘跳转大师兄博客地址‘)# ele.click()# 8、模糊linktext# ele = driver.find_element_by_partial_link_text(‘大师兄博客‘)# ele.click()# 一共18种定位方式# # 单数# 1、id# 2、class# 3、name# 4、css    *************# 5、xpath  *************# 6、linktext# 7、模糊linktext# 8、tagname# 复数8种 所有复数形式的定位  都会返回列表 无论列表中是一个元素 还是多个元素# eles = driver.find_elements_by_class_name(‘classname‘)# print(eles)# eles[0].send_keys(‘111‘)# 留个作业 ---自己回去把8种复数 都练习一下# 还有2种是上面16种的抽象方法# 获取当前浏览器大小# 下午:# from selenium import webdriver# driver = webdriver.Chrome() # 创建浏览器服务# # 请求目标网址# driver.get(‘http://ui.imdsx.cn/uitester/‘)## # 获取浏览器的大小# # print(driver.get_window_size())# # # 最大化浏览器# # driver.maximize_window()# # 设置浏览器大小# # driver.set_window_size(500,500)# # **** 获取当前浏览器tag的指针# print(‘点击前---> %s‘%driver.current_window_handle)## # **** 获取浏览器所有的tag指针# print(‘点击前---> %s‘%driver.window_handles)## # 1、打开uitester的页面# # 2、打印一下 当前的指针和所有指针## # 3、定位新建标签页面的元素 并点击# driver.maximize_window()# js = ‘window.scrollTo(0,0);‘# driver.execute_script(js)# import time# time.sleep(2)# driver.find_element_by_css_selector(‘a[href="/new-index/"]‘).click()# # 4、在打印一次当前的指针和所有指针 作对比# # **** 获取当前浏览器tag的指针# print(‘点击后---> %s‘%driver.current_window_handle)## # **** 获取浏览器所有的tag指针# print(‘点击后---> %s‘%driver.window_handles)# 截图 3种截图  用as file就可以了# driver.get_screenshot_as_file(‘tupian1.png‘)# 关闭和退出# driver.maximize_window()# js = ‘window.scrollTo(0,0);‘# driver.execute_script(js)# import time# time.sleep(2)# driver.find_element_by_css_selector(‘a[href="/new-index/"]‘).click()# time.sleep(5)# driver.quit()# 退出驱动# driver.quit()# 关闭当前指针(句柄)# driver.close()# element 的操作# ele = driver.find_element_by_css_selector(‘#i1‘)# ele.send_keys(‘元素操作‘)# import time# time.sleep(2)# # 清除input的文案# ele.clear()# 判断元素是否可见# 判断元素是否勾选# on = driver.find_element_by_css_selector(‘#on‘)# off = driver.find_element_by_css_selector(‘#off‘)# print(on.is_selected())# print(off.is_selected())# switch ****************# switch windowsfrom selenium import webdriverdriver = webdriver.Chrome()  # 创建浏览器服务# 请求目标网址driver.get(‘http://ui.imdsx.cn/uitester/‘)driver.maximize_window()js = ‘window.scrollTo(0,0);‘driver.execute_script(js)import timetime.sleep(2)# driver.find_element_by_css_selector(‘a[href="/new-index/"]‘).click()# # 赋值handles# handles=driver.window_handles# print(‘点击后---> %s‘%handles)# # 切换前打印当前的handle# print(‘切换前的handle-->: %s‘%driver.current_window_handle)# # 切换到最新打开的页面 划横线代表当前的api调用方式已经过时# # driver.switch_to_window(handles[1])# # driver.switch_to.window(handles[1])# # 切换后再打印当前的handle# print(‘切换后的handle-->: %s‘%driver.current_window_handle)# # 像新建的tab页面的元素sendkeys# driver.find_element_by_css_selector(‘#newtag‘).send_keys(‘切换tab‘)# 切换iframe ************************# # 先在默认打开的页面定位元素 并sendkeys# driver.find_element_by_css_selector(‘#i1‘).send_keys(‘没切换iframe‘)# # 切换iframe# # driver.switch_to_frame()# driver.switch_to.frame(‘top-frame‘)## # 切换完iframe后 在操作frame里面的元素# driver.find_element_by_css_selector(‘#newtag‘).send_keys(‘切换后newtag的html‘)## # 切换进 百度的iframe# driver.switch_to.frame(‘baidu-frame‘)## # 定位百度的输入框 并操作# driver.find_element_by_css_selector(‘#kw‘).send_keys(‘水瓶座‘)## # # 一次直接跳到最外层或者说是跳到默认层# # driver.switch_to.default_content()# ## # # 清掉id为i1的元素value# # driver.find_element_by_css_selector(‘#i1‘).clear()## # 返回到当前html的上层# driver.switch_to.parent_frame()# # 清掉new的value# driver.find_element_by_css_selector(‘#newtag‘).clear()## # 返回到当前html的上层# driver.switch_to.parent_frame()# # 清掉id为i1的value# driver.find_element_by_css_selector(‘#i1‘).clear()# iframe 如果没有name字段则可以 通过find 先定位iframe 在切换# 先在默认打开的页面定位元素 并sendkeys# driver.find_element_by_css_selector(‘#i1‘).send_keys(‘没切换iframe‘)# # 切换iframe# # driver.switch_to_frame()# # driver.switch_to.frame(‘top-frame‘)# iframe = driver.find_element_by_css_selector(‘[src="/new-index/"]‘)# driver.switch_to.frame(iframe)## # 切换完iframe后 在操作frame里面的元素# driver.find_element_by_css_selector(‘#newtag‘).send_keys(‘切换后newtag的html‘)# alert# driver.find_element_by_css_selector(‘#alert‘).click()# confirm# driver.find_element_by_css_selector(‘#confirm‘).click()# # # 取消# # driver.switch_to.alert.dismiss()# 确认# driver.switch_to.alert.accept()# select **# from selenium.webdriver.support.select import Select# driver.maximize_window()# js = ‘window.scrollTo(0,1800);‘# driver.execute_script(js)# import time# time.sleep(2)# sele = driver.find_element_by_xpath(‘//select[1]‘)# print(sele)# Select(sele).select_by_value(‘4‘)# 先接收select标签# 在拼接option的css 定位方式# 在select标签中找符合条件的标签# 判断一下他是否被选中# 没选中则  在点击一次# 鼠标悬浮操作# 1、从业务角度来说  完全模拟业务from selenium.webdriver.common.action_chains import ActionChains# div = driver.find_element_by_css_selector(‘#a‘)# 隐藏的单击按钮# clickButton = driver.find_element_by_css_selector(‘#dis1‘)# 判断他是否可见# print(‘悬浮前:%s‘%clickButton.is_displayed())# 每次调用一个函数 都不是立即执行,而是存到列表中 统一通过perform一起执行# ActionChains(driver).move_to_element(div).click(clickButton).perform()# print(‘悬浮后:%s‘%div.is_displayed())# 2、暴力破解 直接将display none干掉# js = "document.getElementById(‘dis1‘).style.display=‘‘;"# driver.execute_script(js)# time.sleep(1)# clickButton = driver.find_element_by_css_selector(‘#dis1‘)# clickButton.click()# 拼图# s1 = driver.find_element_by_css_selector(‘#dragger‘)# t1 = driver.find_element_by_css_selector(‘#i1‘)# ActionChains(driver).drag_and_drop(s1,t1).perform()# *******************   等待  ******************************# 1、time 固定等待  无论你是否出现了 他都等那么久 最傻的一种# import time# time.sleep(2)# 2、隐士等待 不够稳定 一般傻用这个# driver.implicitly_wait(10)# 3、显示等待 聪明人用这个from selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By# ele = WebDriverWait(driver,10,0.2).until(EC.visibility_of_element_located((By.CSS_SELECTOR,‘#i1‘)))# ele.send_keys(1111)m = EC.visibility_of_element_located((By.CSS_SELECTOR,‘#i11‘))res = WebDriverWait(driver,10,0.5).until(m)res.send_keys(1111)
网友评论