当前位置: 首页 > news >正文

影响网站排名原因php开源网站 网上商城

影响网站排名原因,php开源网站 网上商城,怎么网上注册公司,在线设计装修目录#xff1a; selenium多浏览器处理执行 javascript 脚本headless无头浏览器使用capability配置参数解析企业微信实战cypress测试框架介绍Playwright测试框架介绍 1.selenium多浏览器处理 多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE 等)web 应用应该能在任何…目录 selenium多浏览器处理执行 javascript 脚本headless无头浏览器使用capability配置参数解析企业微信实战cypress测试框架介绍Playwright测试框架介绍 1.selenium多浏览器处理 多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE 等)web 应用应该能在任何浏览器上正常的工作这样能吸引更多的用户来使用 多浏览器测试概述 是跨不同浏览器组合验证网站或 web 应用程序功能的过程是兼容性测试的一个分支用于保持功能和质量的一致性适用于面向客户的网站和组织内部使用的站点 多浏览器的实现方案 pytest hook 函数 pytest_addoption 添加命令行参数组/命令行参数pytest_configure 解析命令行选项每个插件都会用到这个hook函数 pytest_addoption 与 pytest_configure pytest_addoption parser.getgroup 创建/获取组名addoption 添加一个命令行选项pytest_configure: 通过config 对象的getoption()方法获取命令行参数将命令行获取到的内容赋值给变量 代码示例 def pytest_addoption(parser: Parser):hdc parser.getgroup(hdc)hdc.addoption(--browser) 运行结果 代码示例 conftest.py from _pytest.config.argparsing import Parserdef pytest_collection_modifyitems(session, config, items: list):print(items)for item in items:item.name item.name.encode(utf-8).decode(unicode-escape)item._nodeid item.nodeid.encode(utf-8).decode(unicode-escape)def pytest_addoption(parser:Parser):# group 将下面所有的 option都展示在这个group下。mygroup parser.getgroup(hdc)# 注册一个命令行选项mygroup.addoption(--browser,# 参数的默认值defaultChrome,# 存储的变量(起别名)destwo_shi_bie_ming,# 参数的描述信息helpset your browser,such asChrome, Firefox, Headless...)global_env {}def pytest_configure(config):#使用别名browser config.getoption(wo_shi_bie_ming, defaultChrome)# browser config.getoption(--browser, defaultChrome)print(f通过命令行获取的浏览器为{browser})tmp {browser: browser}global_env.update(tmp) test_demo.py import time from selenium import webdriver from web_automation_testing.test_multi_brower.conftest import global_envclass TestSearch:def setup_class(self):self.browser global_env.get(browser)if self.browser firefox:self.driver webdriver.Firefox()else:self.driver webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(3)def teardown_class(self):self.driver.quit()def test_get(self):self.driver.get(https://www.baidu.com/)time.sleep(2)assert True运行结果 2.执行 javascript 脚本 JavaScript简介 JavaScript 是一种具有函数优先的轻量级解释型或即时编译型的编程语言可以嵌入到HTML页面对浏览器事件做出响应也可以基于Node.js技术进行服务器端编程 自动化测试中使用JavaScript脚本 使用场景部分场景使用selenium原生方法无法解决 修改时间控件滚动到某个元素其他场景 JavaScript 使用思路 页面调试 js 脚本Selenium执行js JavaScript调试方法 进入 console 调试js 脚本如果有返回值则会在浏览器返回 JS 脚本-元素操作 通过 css 查找元素 点击元素对应clickinput标签对应的值(对应send_keys)元素的类属性元素的文本属性 // 百度首页https://www.baidu.com/ // 修改属性值 document.querySelector(#kw).value 邯郸学院 // 点击操作 document.querySelector(#su).click()// 淘宝首页 https://www.taobao.com/ // 修改元素的类属性 document.querySelector(#J_SiteNavMytaobao).className site-nav-menu site-nav-mytaobao site-nav-multi-menu J_MultiMenu site-nav-menu-hover// 测试人首页https://ceshiren.com/ // 获取元素内的文本信息 document.querySelector(#ember63).innerText JS脚本滚动操作 页面滚动到底部指定到滚动的位置 document.documentElement.scrollTop10000 document.querySelector(css表达式).scrollIntoView(); Selenium执行js Selenium执行js 调用执行js方法在 js 语句中添加 return代码可以获取js的执行结果结合 find_element 方法 代码示例 from time import sleep from selenium import webdriver from selenium.webdriver.common.by import Bydef test_select_down():driver webdriver.Chrome()driver.implicitly_wait(3)driver.maximize_window()# 打开网址driver.get(https://www.taobao.com/)# 修改下拉框属性sleep(1)driver.execute_script(document.querySelector(#J_SiteNavMytaobao).classNamesite-nav-menu site-nav-mytaobao site-nav-multi-menu J_MultiMenu site-nav-menu-hover)driver.find_element(By.XPATH, //*[text()已买到的宝贝]).click()sleep(5)driver.quit()def test_data_time():# 打开网址driver webdriver.Chrome()driver.implicitly_wait(3)driver.maximize_window()driver.get(https://www.12306.cn/index/)sleep(1)# 修改出发日期driver.execute_script(document.querySelector(#train_date).value2022-12-22)sleep(1)# 打印出发日期 返回值的使用train_data driver.execute_script(return document.querySelector(#train_date).value)print(train_data)sleep(3)3.headless无头浏览器使用 是一个配置浏览器启动的选项类用于自定义和配置Driver会话常见使用场景 设置无头模式:不会显示调用浏览器避免人为干扰的问题。设置调试模式:调试自动化测试代码浏览器复用https://sites.google.com/a/chromium.org/chromedriver/capabilities 添加启动配置(arguments)-Python版本 无头模式 --headless窗体最大化 start-maximized指定浏览器分辨率 window-size1920x3000 from selenium import webdriver from selenium.webdriver.common.by import Bydef test_chrome_pref():options webdriver.ChromeOptions()# 无头模式options.add_argument(--headless)# 窗体最大化options.add_argument(start-maximized)# 指定浏览器分辨率options.add_argument(window-size1920x3000)driver webdriver.Chrome(chrome_optionsoptions)# 打开测试人页面driver.get(https://ceshiren.com/)# 点击登录login_button_text driver.find_element(By.CSS_SELECTOR, .login-button).textprint(login_button_text)driver.quit()4.capability配置参数解析 capability概述 Capabilities是WebDriver支持的标准命令之外的扩展命令(配置信息)配置web驱动的属性如浏览器名称、浏览器平台等。结合Selenium Grid完成分布式、兼容性等测试官网地址 https://www.selenium.dev/zh-cn/documentation/webdriver/capabilities/shared/ Selenium Grid Selenium Grid 允许我们在多台机器上并行运行测试并集中管理不同的浏览器版本和浏览器配置而不是在每个单独的测试中。 官网地址https://www.selenium.dev/documentation/grid/ 演示环境https://selenium-node.hogwarts.ceshiren.com/ui# 保证本地可以正常调通实例化Remote()类并添加相应的配置 远程地址设备配置 代码示例 import time from selenium import webdriver from selenium.webdriver.common.by import Bydef test_capabilitie1():# 切换成 windows 就会报错capabilities {browserName:chrome,platformName:windows}# 通过 desired_capabilities 添加配置信息driver webdriver.Chrome(desired_capabilitiescapabilities)driver.implicitly_wait(5)driver.get(https://ceshiren.com/)text driver.find_element(By.CSS_SELECTOR, .login-button).textprint(text)time.sleep(30)driver.quit()def test_capabilitie2():hogwarts_grid_url https://selenium-node.hogwarts.ceshiren.com/wd/hubcapabilities {browserName:chrome,browserVersion:101.0}# 配置信息# 实例化Remote获取可以远程控制的driver实例对象# 通过 command_executor 配置selenium hub地址# 通过 desired_capabilities 添加配置信息driver webdriver.Remote(command_executorhogwarts_grid_url,desired_capabilitiescapabilities)driver.implicitly_wait(5)driver.get(https://ceshiren.com/)text driver.find_element(By.CSS_SELECTOR, .login-button).textprint(text)time.sleep(3)driver.quit() 5.企业微信实战 6.cypress测试框架介绍 cypress简介 基于 JavaScript 的前端测试工具可以对浏览器中运行的任何内容进行快速、简单、可靠的测试对每一步操作都支持回看覆盖了测试金字塔模型的所有测试类型【界面测试集成测试单元测试】底层协议不采用 WebDriver Cypress官网https://www.cypress.io/ cypress与selenium对比 项目CypressSelenium支持语言JavascriptJava, Python, Javascript, Ruby, C#等支持浏览器Chrome、Electron各种主流浏览器主要使用者前端开发人员QA使用的测试框架Mocha无限制是否需要浏览器驱动器否需要测试速度快略慢录制测试视频、快照支持支持但需要写代码社区支持略显薄弱强大 cypress环境部署 安装node.js 官网地址https://nodejs.org/zh-cn/安装cypress 初始化项目npm init配置淘宝镜像npm config set registry http://registry.npm.taobao.org安装cypressnpm install cypress --save-dev打开cypress npx cypress open cypress基本用法 describe 声明一个测试用例集合beforeEach 测试用例前置操作相当于setupit 声明一个测试用例cy.get 定位元素用css定位type 输入文本click 点击操作should 断言 使用vscode装一下插件  npm init npm install cypress –-save-dev 7.Playwright测试框架介绍 Playwright 简介 Playwright 官网https://playwright.dev/python/docs/introWeb 自动化测试框架。跨平台多语言支持。支持 Chromium、Firefox、WebKit 等主流浏览器自动化操作。 Playwright 的优点 支持所有流行的浏览器。速度更快更可靠的执行。更强大的自动化测试配置。强大的工具库Codegen、Playwright inspector、Trace Viewer。 Playwright 原理 Playwright 与 selenium 对比 项目PlaywrightSelenium是否需要驱动否需要对应浏览器 webdriver支持语言Java, Python, JavascriptJava, Python, Javascript, Ruby, C#等支持浏览器Chrome、Firefox 等Chrome、Firefox 等通讯方式websocket 双向通讯协议http 单向通讯协议使用的测试框架无限制(pytest,unittest)无限制(pytest,unittest)测试速度快慢录制测试视频、快照支持支持社区支持微软thoughtworks 公司 Playwright 核心工具 Codegen通过记录你的操作来生成测试。 将它们保存为任何语言。Playwright inspector 检查页面、生成选择器、逐步执行测试、查看点击点、探索执行日志。Trace Viewer捕获所有信息以调查测试失败。 Playwright 跟踪包含测试执行截屏、实时 DOM 快照、动作资源管理器、测试源等等。 Playwright 环境安装 安装 playwright 插件 pip install pytest-playwright安装所需的浏览器 playwright install 官网介绍https://playwright.dev/python/docs/intro Codegen # 设定展示窗口大小 playwright codegen --viewport-size800,600 地址 # 指定设备 playwright codegen --deviceiPhone 11 地址 其他参数https://playwright.dev/python/docs/codegen Codegen-保存登录状态 场景单点登录、验证码问题 # 保存登录状态 playwright codegen --save-storageauth.json # 加载认证信息 playwright codegen --load-storageauth.json 地址 Playwright 常用API  Actions | Playwright Python 常用API含义start()实例化playwrightchromium().launch()打开chrome浏览器new_page()打开一个窗口页面page.goto()跳转到某个地址page.locator(““)定位某个元素click()点击元素fill()输入内容keyboard().down()键盘事件screenshot()截图操作 Playwright 使用实例 from playwright.sync_api import sync_playwright, expectdef test_playwright():# 实例化playwrightplaywright sync_playwright().start()# 打开chrome浏览器,headless默认是True,无头模式,这里设置为False方便查看效果browser playwright.chromium.launch(headlessFalse)# 打开一个窗口页面page browser.new_page()# 在当前窗口页面打开测试人网站page.goto(https://ceshiren.com/)# 定位搜索按钮并点击page.locator(#search-button).click()# 定位搜索框并输入web自动化page.locator(#search-term).fill(web自动化)# 使用keyboard.down模拟键盘的enter事件page.keyboard.down(Enter)# 断言搜索结果result page.locator(.listli:nth-child(1) .topic-titlespan)expect(result).to_contain_text(自动化)# 截图page.screenshot(path./datas/screenshot/screenshot.png)# 用例完成后先关闭浏览器browser.close()# 然后关闭playwright服务playwright.stop()Trace Viewer 简介 Trace viewer | Playwright Python Trace Viewer 使用 from playwright.sync_api import sync_playwright, expectdef test_playwirght_trace():# 实例化一个playwright对象playwright sync_playwright().start()# 启动谷歌浏览器模式使用无头模式browser playwright.chromium.launch(headlessFalse)# trace 的配置# 1. 生成 一个 context 实例context browser.new_context()# 2. 添加 trace 的配置信息context.tracing.start(screenshotsTrue, snapshotsTrue, sourcesTrue)# 3. 使用填加了trace 配置的 context 实例去实例化一个page对象page context.new_page()# 跳转到ceshiren页面page.goto(https://ceshiren.com/)# 点击搜索按钮 输入css定位page.locator(#search-button).click()# 输入搜索的内容 输入css定位page.locator(#search-term).fill(appium)# 按下回车键page.keyboard.down(Enter)# time.sleep(3)result page.locator(.results .item:nth-child(1) .topic-title)expect(result).to_contain_text(appium)# 4. 在关闭浏览器之前一定要结束tracecontext.tracing.stop(path./datas/playwirght_trace.zip)browser.close()# 打开trace  playwright show-trace trace.zip
http://www.zqtcl.cn/news/666670/

相关文章:

  • 自己做网站不想买空间 自己电脑可以做服务器吗?下载建设网站软件
  • 有服务器自己怎么做网站百度广告电话号码是多少
  • 一个网站 两个数据库沈阳市住房和城乡建设厅网站
  • 重庆建站网站流程及费用制作网页界面工具
  • 设计师家园官网wordpress 4.9 优化
  • 主机屋空间安装织梦后台程序后怎么弄成淘宝客网站襄阳网站制作
  • 怎么建设分销模式手机网站宜昌做网站的公司
  • 网上商城网站设计网页设计作业欣赏
  • 育才网站建设网站访问慢原因
  • 网站建设方案 备案品牌网站推广软件
  • 桓台县建设局网站前端开发入门培训
  • 前端怎么在猪八戒网站接单做烟台网站开发技术
  • 济南烨铭网站建设做英文网站2014
  • 哪个餐饮店微网站做的有特色3d动画制作收费标准
  • h5旅游网站开发wordpress的站点地址如何配置
  • 网站正在维护中 模板招远网站建设
  • 福田欧曼银河报价seo文章是什么
  • 古云网站建设模具培训网站建设
  • 帮助企业做网站的销售卫浴洁具公司网站模板
  • 解释seo网站推广网站域名和空间费用
  • 深圳市珠宝网站建设手机网站框架
  • 晋城推广型网站开发dw做网站模板
  • 万网一个ip建立多个网站网页设计注册页面代码
  • 网站建设6000元地方门户网站有哪些
  • 十大SEO网站外链建设误区排版设计教程入门初学者
  • 网站基本维护网站设计软件下载
  • 网站开发的需求文档大型网站外链是怎么建设的
  • 网站建设实训心得与建议网站建设一般需要多少费用
  • 国内怎么打开WordPress网站wordpress制作api文件路径
  • 义乌网站开发公司wordpress段子模板