• [问题求助] 疑似web插件执行失败
    WeAutomate Studio已安装wa-web拓展模块谷歌浏览器也启用拓展程序但仍然无法捕捉网页元素,无法使用获取下载等控件求大神指点
  • [技术干货] 自动化测试——selenium(完结篇)-转载
     一、元素操作方法 方法: 1、.send_keys()  # 输入方法 2、.click()  # 点击方法 3、.clear()  # 清空方法 注意:在输入方法之前一定要清空操作!!  # 导包 from time import sleep from selenium import webdriver  # 实例化浏览器 driver = webdriver.Chrome()  # 打开网址 driver.get('https://www.baidu.com/')  # 需求 ele = driver.find_element_by_css_selector('#kw') ele.send_keys('易烊千玺') sleep(2)  # 清空 ele.clear() ele.send_keys('王嘉尔')  # 时间轴看效果 sleep(3)  # 关闭页面 driver.quit() 二、浏览器操作方法 常用的浏览器操作系统API  # 方法 """ 1、driver.maximize_window()  # 最大化浏览器 2、driver.set_window_size(w,h)  # 设置浏览器大小 单位像素 【了解】 3、driver.set_window_position(x,y)  # 设置浏览器位置  【了解】 4、driver.back() # 后退操作 5、driver.forward() # 前进操作 6、driver.refrensh() # 刷新操作 7、driver.close() # 关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口) 8、driver.quit() # 关闭driver对象启动的全部页面 9、driver.title # 获取当前页面title信息 10、driver.current_url # 获取当前页面url信息 """ """ 应用:driver.maximize_windows()  # 窗口最大化      driver.set_window_size(w,h) # 设置浏览器大小 【了解】      driver.set_window_position(x,y) # 设置浏览器窗口位置 【了解】 """  from time import sleep from selenium import webdriver  driver = webdriver.Chrome()  driver.get('https://www.baidu.com/') # 窗口最大化 driver.maximize_window() sleep(1) # 设置浏览器宽,高 【了解】 driver.set_window_size(1000, 1000) sleep(1) # 设置窗口浏览器位置  【了解】 driver.set_window_position(200, 200)  sleep(3)  driver.quit()  """ driver.close() # 关闭当前主窗口,默认启动的界面就是主窗口 driver.quit() # 关闭全部页面 driver.title  # 获取页面标题 driver.current_url  # 获取页面地址  """  from time import sleep from selenium import webdriver  driver = webdriver.Chrome()  driver.get('https://www.sogou.com/') driver.find_element_by_link_text('图片').click()  # 这两个属性可以用来做断言使用 print("当前页面标题:", driver.title) print("当前页面的url:", driver.current_url)  # 这里关闭的是原始页面,而不是新的页面,只有完成页面切换才可以关闭新的页面 # 场景:关闭单个页面使用 driver.close() sleep(3)  # 关闭浏览器驱动对象的所有页面 driver.quit() 注意:driver.close() ,当前关闭的是主窗口,只有完成页面切换才可以关闭当前新的页面  提示:  1、driver.title 和 drivet.current_url是属性没有括号。应用场景:一般判断上不操作是否执行成功。  2、driver.maximize_window() 一般为前置代码放到获取driver地址后,进行浏览器窗口的最大化  3、driver.refresh() 向浏览器重新发出请求,刷新页面,在cookie 会用到  4、driver.close() 和 driver.quit() 的区别:  close():关闭当前主窗口 quit():关闭由driver对象启动的所有页面 如果只有一个窗口那么quit()和 close()没有区别。 三、获取元素信息操作 常用元素信息操作API  """ 方法: 1、text 获取元素的文本; 如:driver.text 2、size 获取元素的大小: 如:driver.size 3、get_attribute 获取元素属性值;如:driver.get_attribute("id") ,传递的参数是元素的属性名 4、is_displayed 判断元素是否可见 如:element.is_displayed() 5、is_enabled 判断元素是否可用 如:element.is_enabled() 6、is_selected 判断元素是否被选中 如:element.is_selected()  """ """ text  获取元素文本 ,没有() size  获取元素大小 ,没有() get_attribute("属性名") 获取的是属性值 """  from time import sleep from selenium import webdriver  driver = webdriver.Chrome()  driver.get('https://www.sogou.com/') ele = driver.find_element_by_id('query') print("目标元素尺寸:", ele.size)  new_ele = driver.find_element_by_id('hanyu') print("目标元素文本:", new_ele.text)  link = driver.find_element_by_link_text("图片") print("目标元素属性值:", link.get_attribute('id'))  sleep(3)  # 关闭浏览器驱动对象的所有页面 driver.quit()  """ is_displayed() 判断元素是否可见,如:element.is_displayed is_enabled() 判断元素是否可用, 如:element.is_enabled is_selected() 判断元素是否被选中,如:element.is_selected """  from time import sleep from selenium import webdriver  driver = webdriver.Chrome()  driver.get('file:///D:/桌面/page/注册A.html') # 判断元素是否可见,不可见并不代表不能定位 span = driver.find_element_by_name('sp1') print("元素是否可见:", span.is_displayed())  btn = driver.find_element_by_id('cancelA') print("元素是否可用:", btn.is_enabled())  check = driver.find_element_by_id('lia') print("元素是否被选中:", check.is_selected())  sleep(3)  # 关闭浏览器驱动对象的所有页面 driver.quit() 注意:里面的返回的结果都是True 和 False。  四、鼠标操作 (需要实例化鼠标对象) 1、我们有了鼠标为什么还要使用鼠标操作??  ​ 为了满足丰富的html鼠标效果,必须使用对应的方法。  2、鼠标时间对应的方法在那个类中?  ​ ActionChains类,实例化 鼠标对象  导包:  from selenium.webdriver.common.action_chains import ActionChains 1 3、鼠标事件常用的操作 ☆  """ 1、context_click(element) # 右击 2、double_click(element)  #双击 3、double_and_drop(source, target)  # 拖拽 4、move_to_element(element)  # 悬停 【重点】 5、perform()  # 执行以上事件的方法 【重点】 """ 4.1 鼠标右键及双击 """ 鼠标操作: context_click() 右键 double_click() 鼠标双击 """ from time import sleep from selenium import webdriver from selenium.webdriver import ActionChains  driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 定位目标 ele = driver.find_element_by_id('kw') # 实例化 鼠标对象 action = ActionChains(driver)、  # 鼠标右键 action.context_click(ele)  # 鼠标双击 action.double_click(ele)  # 鼠标执行操作!!!不执行没效果 action.perform()  sleep(3)  driver.quit() 4.2 鼠标拖拽 """ 鼠标操作: # 鼠标拖拽 action.drag_and_drop(source, target) """ from time import sleep from selenium import webdriver from selenium.webdriver import ActionChains  driver = webdriver.Chrome() driver.get('file:///D:/桌面/page/drag.html')  red = driver.find_element_by_xpath('//*[@id="div1"]') blue = driver.find_element_by_xpath('//*[@id="div2"]')  # 实例化鼠标 action = ActionChains(driver) # 鼠标拖拽 action.drag_and_drop(red, blue) # 鼠标执行 action.perform()  sleep(3)  driver.quit() 4.3 鼠标悬停 【重点】 """ 鼠标操作: # 鼠标悬停 【重点】 action.move_to_element(element) """ from time import sleep from selenium import webdriver from selenium.webdriver import ActionChains  driver = webdriver.Chrome() driver.get('https://www.baidu.com/') driver.maximize_window() ele = driver.find_element_by_id('s-usersetting-top')  # 实例化鼠标 action = ActionChains(driver) # 鼠标悬停 action.move_to_element(ele) # 鼠标执行 action.perform()  sleep(3)  driver.quit() 注意: selenium 框架虽然提供了 鼠标右键方法,但是没有提供选择右键菜单方法,可以通过键盘快捷键操作实现  五、键盘操作(不需要实例化对象)☆ 1、说明:键盘对应的方法在Keys类中  # 包 from selenium.webdriver.common.keys import Keys 2、快捷键(这里只讲windows操作系统的快捷键):  ​ CONTROL: Ctrl键  ​ BACK_SPACE : 等价于 BACKSPACE (删除)  ​ 其他:可以藏奥Keys底层的定义  3、应用  # 单键 element.send_keys(Keys.XXX) # 组合键 element.send_keys(Keys.XXX, 'a') # 注意这里的组合键都是小写 """ 键盘操作 """ from time import sleep from selenium import webdriver from selenium.webdriver.common.keys import Keys  driver = webdriver.Chrome() driver.get('https://www.baidu.com/')  ele = driver.find_element_by_id('kw') ele.send_keys('易烊千玺') sleep(1) ele.send_keys(Keys.BACK_SPACE) sleep(1) # 组合键 Ctrl + a 全选 ,注意这里的组合键都是小写 ele.send_keys(Keys.CONTROL, 'a') sleep(1) ele.send_keys(Keys.CONTROL, 'x') sleep(1) ele.send_keys(Keys.CONTROL, 'v')  sleep(3)  driver.quit()  六、元素等待 1、为什么要设置元素等待  ​ 由于电脑配置或网络原因,在查找元素时,元素代码未在第一时间内被加载出来,而抛出未找到元素异常。  2、什么是元素等待  ​ 元素在第一次未找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素,继续执行代码,如果超出设置的时长未找打元素,抛出未找到元素异常。  3、元素等待分类  ​ 隐式等待:针对全局元素生效;(讲这个)  ​ 显示等待:稍微麻烦,有兴趣的可以下去了解,他是针对单个元素生效。  隐式等待方法:  driver.implicitly_wait(30) # 一般情况下设置30秒 1 ​ 特色:  1. 针对所有元素生效。 2. 一般情况下为前置必写代码(1.获取浏览器驱动对象;2. 最大化浏览器;3. 设置隐式等待) 1 2 """ 隐式等待 """ from time import sleep from selenium import webdriver from selenium.webdriver.common.keys import Keys  driver = webdriver.Chrome() # 1、获取浏览器驱动对象 driver.get('file:///D:/桌面/page/注册A等待.html') # 2、窗口最大化 driver.maximize_window() # 3、设置隐式等待 driver.implicitly_wait(30) ele = driver.find_element_by_id('userA') ele.send_keys('admin')  sleep(3)  driver.quit() 七、下拉框(需要实例化下拉框) 1、为什么单独使用下拉框?  ​ 1)、如果option选项没有value值的化,css定位或其他定位就不太方便。  2、使用Select类  ​ 1)、导包:from selenium.webdriver.support.select improt Select  ​ 2)、实例化下拉框:s = Select(element)  ​ 3)、调用方法:s.select_by_index()索引从0开始  3、Select类提供的方法  ​ 1)、select_by_index() # 通过索引定位  ​ 2)、select _by_value() # 通过value值  ​ 3)、select_by_visible_text() # 显示文本  """ Select类方法: 需要实例化下拉框元素定位 """ from time import sleep  from selenium import webdriver from selenium.webdriver.support.select import Select  driver = webdriver.Chrome() driver.get('file:///D:/桌面/page/注册A.html') ele = driver.find_element_by_id('selectA')  # 实例化下拉框 s = Select(ele)  # index 索引方法 s.select_by_index(1) sleep(1)  # value 属性值选择目标元素 s.select_by_value('sz') sleep(1)  # text 采用文本的方式选择目标信息 s.select_by_visible_text('A北京')  sleep(3)  driver.quit() 自定义弹窗,由于可以鼠标右击检查选项获取元素信息,所以出现自行已弹窗的时候,直接定义目标元素,并进行移除操作即可。  九、滚动条 1、为什么要是用滚动条?  ​ 在一些特殊场景中,一些按钮是在页面最下角,需要使用滚动条拉到最底层。  2、操作步骤  Selenium框架中没有专门处理滚动条的方法,需要通过调用 Js 代码实现操作;  ​ 1)、第一步:设置操作滚动条操作语句:js_down="window.scollTo(0,1000)"  ​ > 0:为左边距-----》水平滚动条  ​ > 1000: 为垂直滚动条  ​ 2)、第二步:调用执行js方法,将设置js语句传入方法中  ​ > 方法:driver.execute_script(js_down)  ​  """ 滚动条:selenium中没有滚动条方法,需要js代码实现 1、准备js代码:"window.scrollTo(0, 1000)" 2、执行js代码:driver.execute_script(js的变量) """ from time import sleep from selenium import webdriver  driver = webdriver.Chrome()  driver.get('file:///D:/桌面/page/注册A.html') sleep(2) # 1、准备js代码 js_down = "window.scrollTo(0, 1000)" # 2、执行js代码 driver.execute_script(js_down)  sleep(3)  driver.quit() 十、切换frame表单 ☆ 1、应用场景:  处于frame 中的元素,虽然可以获取元素信息,但是代码执行时无法定位元素,因此需要先切换到frame,再进行元素定位操作。  2、如何切换frame  方法:driver.switch_to.frame("id/name/element") 传入的是代表frame唯一的特征值  """ frame的切换 """ from time import sleep from selenium import webdriver  driver = webdriver.Chrome()  driver.get('file:///D:/桌面/page/注册实例.html')  # 切换到frame driver.switch_to.frame('idframe1') # 在frame表单中填写信息 driver.find_element_by_id('userA').send_keys('admin')  sleep(3)  driver.quit() 10.1 连续切换frame 说明:如果要连续切换frame必须要先回到默认页面,才能够实现下一个frame的切换  回到主页面的方法:driver.switch_to.default_content()  """ 需要默认切换到frame 方法:driver.switch_to.default_content() """ from time import sleep from selenium import webdriver  driver = webdriver.Chrome()  driver.get('file:///D:/桌面/page/注册实例.html')  driver.switch_to.frame('idframe1') driver.find_element_by_id('userA').send_keys('admin')  driver.switch_to.default_content() driver.switch_to.frame('myframe2') driver.find_element_by_id('userB').send_keys('admin4')  sleep(3)  driver.quit() 十一、多窗口的切换 ☆ 1、为什么要切换多窗口  ​ 页面是存在多窗口的,但是selenium默认焦点只会在主窗口上的所有元素,不切换窗口,就不能操作除主窗口以外的窗口内元素。  2、如何切换  每个窗口都有唯一的一个句柄值,那么我们就可以通过句柄值来完成窗口的切换操作  ​ 方法:  ​ 1)、driver.current_window_handle (获取当前的句柄值)  ​ 2)、driver.window_handles ( 获取当前由driver启动所有窗口句柄)  ​ 3)、driver.switch_to.window(handle) —> 切换窗口  """ 多窗口切换 driver.current_window_handle  获取当前的句柄值 driver.window_handles  获取driver启动的所有窗口句柄 driver.switch_to.window(handles[-1]) 切换窗口操作 """ from time import sleep  from selenium import webdriver  driver = webdriver.Chrome()  driver.get('file:///D:/桌面/page/注册实例.html')  driver.find_element_by_id('ZCB').click() # 1、获取当前的句柄值 # print("当前的句柄值是:", driver.current_window_handle)  # 2、 # 1).切换窗口操作,driver.window_handles 获取driver启动的所有窗口句柄 handles = driver.window_handles  # 2).切换窗口工作 driver.switch_to.window(handles[-1]) driver.find_element_by_id('userB').send_keys('admin9')  sleep(3)  driver.quit() 注意:这里的窗口切换也对应到了 close() 方法的作用,现在使用close()就是关闭当前页面,如果还想重新操作原始页面,务必完成窗口切换。  十二、截图操作 使用的方法:  driver.get_screenshot_as_file(imgepath)  参数:  imagepath:为图片要保存的目录地址及文件名称  """ 截图:driver.get_screenshot_as_file(imgepath) """ from time import sleep  from selenium import webdriver  driver = webdriver.Chrome()  driver.get('https://www.baidu.com/')  driver.find_element_by_xpath('//*[@id="kw"]').send_keys('易烊千玺') # 截图方法,建议使用png格式 , ./为当前路径,  ../为上一级路径 driver.get_screenshot_as_file('./info.png')  sleep(3)  driver.quit()  注意:指定图片存放的路径,需要自己手动创建文件夹  十三、验证码 1、什么是验证码?  ​ 一种随机生成的信息(文字,数字,图片)  2、验证码的作用?  ​ 防止恶意请求  3、验证码的处理  ​ 这边讲的是cookie解决  4、使用cookie 登录  ​ 客户端登录账号后,将登录状态的想关 cookie 信息发给服务器保存,再发送去请求,携带cookie信息如果跟服务器保留的一致,则服务器认为客户端是登录状态。  5、这里实现自动登录的功能  ​ 1)、准备工作,在客户端登录的状态下,获取cookie字段   2、方法步骤:  1、整理cookie信息为字典数据,对应的是name和value,保存的一个变量中 2、调用方法添加cookie     driver.add_cookie(cookie变量) # 3、刷新页面 -->发送cookie给服务器验证     driver.refresh() cookie 的value就不给你们了,怕你们登录我的账号😂😂😂  """ 验证码: {'name':'BDUSS', 'value':'............................'} """ from time import sleep  from selenium import webdriver  driver = webdriver.Chrome()  driver.get('https://www.baidu.com/') driver.maximize_window()  # 1、整理cookie信息为字典数据,对应的是name和value,保存的一个变量中 cookie_value = {'name':'BDUSS', 'value':'........................'}  # 2、调用方法添加cookie driver.add_cookie(cookie_value)  # 3、刷新页面 -->发送cookie给服务器验证 driver.refresh()  sleep(3)  driver.quit() 演示:  ​ 终于把Selenium 给完结了,完结撒花❀❀❀❀❀❀❀❀❀❀ ,这里面的方法都要掌握,然后可以找需求文档练习,铁汁们,觉得笔者写的不错的可以点个赞哟❤🧡💛💚💙💜🤎🖤🤍💟,收藏关注呗,你们支持就是我写博客最大的动力!!!! ———————————————— 版权声明:本文为CSDN博主「鸢也」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_54219272/article/details/123338773 
  • [技术干货] 应用场景分享——【appium】手机自动化环境搭建与案例分享
    手机自动化环境搭建与案例分享,如果附件中内容有需要修正的地方请跟帖,感谢支持!ext_appautomate_1_0_1.zip WeAutomate 设计器插件,需要导入。导入方式参考论坛帖子。样例及录像参考跟帖里的内容
  • [技术干货] python自动化测试——unittest二次开发之根据不同的粒度实现多线程执行测试用例(一)-转载
    一、Unittest用例的执行流程TestRunner的工作流程:遍历测试类中的测试用例,调用用例对象的run方法将测试用例的结果保存到TestResult中1、单线程执行测试用例特别注意:如果测试粒度按照文件为单位,那么文件中的测试类执行顺序就能得到保证如果测试粒度按照测试类为单位,那么测试类中的测试用例执行顺序就能得到保证如果测试粒度按照测试用例为单位,并且用例与用例之间有关联,那么测试用例执行顺序得不到保证import unittestfrom unittest import TestCase,TestSuite,TestLoader,TestResult'''粒度——》测试文件粒度——》测试类粒度——》用例级别'''from concurrent.futures.thread import ThreadPoolExecutor#todo 加载用例到测试套件中suite=unittest.defaultTestLoader.discover(r'D:\project_development\测试开发\day11\testcases')print('-------------------------单线程执行--------------------------------------')#todo 创建一个测试结果记录器result=unittest.TestResult()#todo 执行测试套件suite.run(result)print(suite)print('用例执行的结果,',result)二、测试套件的结构1、目录如下:2、测试文件test_demo1.pyimport timeimport unittestfrom ddt import ddt,data@ddtclass DemoA1(unittest.TestCase):@data(1,2,3,6)def test_demoa1(self,item):time.sleep(1)print('---------test_demoa1--------',item)@ddtclass DemoA2(unittest.TestCase):@data(1,2,3,6)def test_demoa2(self,item):time.sleep(1)print('---------test_demoa2--------',item)test_demo2.pyimport timeimport unittestfrom ddt import ddt,data@ddtclass DemoB1(unittest.TestCase):@data(1,2,3,6)def test_demob1(self,item):time.sleep(1)print('---------test_demob1--------',item)@ddtclass DemoB2(unittest.TestCase):@data(1,2,3,6)def test_demob2(self,item):time.sleep(1)print('---------test_demob1--------',item)test_demo3.pytest_demo4.py3、代码调试截图三、测试套件的结构1、将测试套件拆分为模块级别特别注意套件可以直接执行,套件中有run方法model_suite=[m for m in suite]result=unittest.TestResult()创建一个线程池对象,一共创建了4个模块,所以max_workers最大为4with ThreadPoolExecutor(max_workers=4) as tp: #创建一个线程池对象for i in model_suite:#i.run(result)tp.submit(i.run,result)2、将测试套件拆分为类级别class_suite=[]for m in suite:for c in m:class_suite.append(c)result=unittest.TestResult()with ThreadPoolExecutor(max_workers=8) as tp:for i in class_suite:tp.submit(i.run,result)3、将测试套件拆分为用例级别case_list=[]for m in suite:for c in m:for i in c:case_list.append(i)result=unittest.TestResult()with ThreadPoolExecutor(max_workers=32) as tp:for i in case_list:tp.submit(i.run,result)四、封装一个可以并发运行unittest测试用例的函数,参数接收两个参数,一个suite(测试套件)和mode(任务粒度:),根据传入的参数model,来对测试套件进行任务拆分,进行并发执行import unittestfrom unittest import TestCase,TestSuite,TestLoader,TestResult'''粒度——》用例级别粒度——》测试类'''from concurrent.futures.thread import ThreadPoolExecutor#todo 加载用例到测试套件中suite=unittest.defaultTestLoader.discover(r'D:\project_development\测试开发\day11\testcases')print('-------------------------多线程执行--------------------------------------')def run_cases(suite,model):#判断任务执行粒度task_list = []if model=='case':for m in suite:for c in m:for i in c:task_list.append(i)elif model=='cls':for m in suite:for c in m:task_list.append(c)else:task_list=[i for i in suite]result=unittest.TestResult()with ThreadPoolExecutor(max_workers=8) as tp:for i in task_list:tp.submit(i.run,result)run_cases(suite,'asd')————————————————版权声明:本文为CSDN博主「YZL40514131」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/YZL40514131/article/details/126982705
  • [问题求助] Roma API网关-测试接口:Authorization failed
    租户:Hi-stylhoc问题:综合安防-视频调阅板块功能调测:按调测步骤到最后一步Roma应用“Hi-stylhoc__视频标准接口”下,“获取设备列表”接口测试一直报:Authorization failed,最早相同的参数测试过一次,是正常的,今天测试一直不正常只传channel参数能正常查询,参数全传就报错,参数正确的:【日志信息】(可选,上传日志内容或者附件)
  • [新手课堂] 开始一个简单的接口测试(Python)
    利用python发送第一个请求关于HTTP请求,建议大家提前了解一下,再来看该篇文章该篇文章以简单的登录接口为例,干货来了:首先利用python发请求就会用到request库,先导入进来import requests1导入该库之后,就开始代码主体部分了#首先我们要把我们要测试接口API写进来url="http://localhost:8080/jwshoplogin/user/login.do"#紧接着把我们需要的参数定义一下userinfo={"username":"大娟",           "password":"Aa111111"}#参数定义完成后,就该让这个请求带着这个参数去乖乖的请求服务器了,下面的代码意思为将响应回来的信息以文本格式给到resres=requests.post(url,data=userinfo).text#得到响应信息后,将他打印出来print(res)这个为该接口正常响应回来的信息,作为测试我们当然要写个断言来判断他响应回来的对不对嘛,#.find这个方法是在响应回来的信息里面找登录成功四个字,找不到会返回-1负一的值msg=res.find("登录成功")if msg>0:    print("测试通过")else:    print("测试失败")一个简单的接口测试就这么完成了。将请求参数进行参数化处理这时候我们用到的是csv文件,现将csv库倒进来,还有我们必要的request库import requestimport csv下面是代码主体,具体解释我会写进代码里url='http://localhost:8080/jwshoplogin/user/login.do'#上面url就不解释了,但是userinfo我要说下,这里为空是因为我一会在文件里读取的内容放到这里面userinfo={}#下面的两个是对文件的操作,r为对文件读(read),w为对文件写(write)file1=open("interfacePara.csv",'r')file2=open("loginResult.csv","w")#这个意思为将读出来的内容放到table里面table=csv.reader(file1)for row in table:#第一次循环#将读到的第一行第一列的值给到username    userinfo["username"]=row[0]#将读到的第一行第二列的值给到password    userinfo["password"]=row[1]#这时候userinfo拿到的值为username="大娟",password="Aa111111"    response=requests.post(url,data=userinfo).text#查看一下响应回来的信息    print(response)    print(row[2]) #在响应回来的信息里面找csv文件里的第一行第三列的值,然后做判断,写到文件loginResult.csv里面    r=response.find(row[2])    if r>0:        print("测试通过") #因为在csv文件里每个分割是用逗号分割的所以这个要加上逗号,而且是英文格式的大家不要搞错,"\n"是换行的意思        file2.write(row[0]+","+row[1]+","+row[2]+","+"测试通过"+"\n")    else:        print("测试异常")        file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试失败" + "\n")
  • [问题求助] 基础功能测试
    123456789
  • [问题求助] 代码提交任务完不成,接口测试任务也完不成了吗?
    你们可以吗?支支招撒
  • [专题汇总] 【XXX产品】【XXX功能】一句话描述问题
    软件测试的真正意义在于发现错误,而不在于验证软件是正确的。再严密的测试也不能完全发现软件当中所有的错误,但是测试还是能发现大部分的错误,能确保软件基本是可用的,所以在后续使用的过程中还需要加强快速响应的环节。结合软件测试的理论,故障暴露在最终客户端之前及时主动的去发现并解决。这一点就需要加强研发队伍的建设。在系统性能测试方面需要重视。经过这次培训中多个案例的讲解,让我了解到系统在上线之后会有很多不能预知的性能问题,需要在上线之前实现进行模拟,以规避风险,包括大数据量访问,高并发数等等。当然也有很多应对手段,没有哪种手段可称为最完美,只有最合适的,需要灵活掌握,综合运用以达到最优程度,这是个很值得研究的领域。
  • [交流吐槽] 日常任务代码提交和接口测试还是不行啊
    日常任务代码提交和接口测试还是不行啊,这周依然没恢复,大家都 能完成吗
  • [交流吐槽] 提交 代码完不成后,接口测试也完不成了
    提交 代码完不成后,接口测试也完不成了,最近几天都 这样
  • [交流吐槽] 好像又出bug了,接口测试完不成了
    今天接口测试任务完成不了了,试了好几个区豆失败
  • [交流吐槽] 执行接口测试用例 任务完成不了了
    哎,每天获得的码豆都在减少
  • [问题求助] 【ROMA产品】【API网关功能】接口测试场景问题
    【功能模块】API网关功能【操作步骤&问题现象】1、API网管进行接口测试,多次访问接口,存在接口返回为空的场景,但是在live data中测试不存在;PS:确认接口返回是有数据的2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] 支持鲲鹏的网络性能测试工具,可以测试lvs、dpvs、nginx
    可以使用dperf对网卡、四层负载均衡、七层负载均衡、nginx等进行测试,支持鲲鹏平台。dperf: 100Gbps开源压力测试工具dperf 支持HTTP协议,可以测试nginx的性能
总条数:210 到第
上滑加载中