最新网站开发工具h5页面制作代码

news/2025/9/26 10:41:31/文章来源:
最新网站开发工具,h5页面制作代码,网站建设与维护实验报告,晚上必看正能量网站短视频一、前言大家都知道#xff0c;基于Web端的测试的基础框架是需要Selenium做主要支撑的#xff0c;这里边给大家介绍下Web测试核心之基于 Python 的 SeleniumSelenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用…一、前言大家都知道基于Web端的测试的基础框架是需要Selenium做主要支撑的这里边给大家介绍下Web测试核心之基于 Python 的 SeleniumSelenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试并且 Selenium 能够在一个或多个浏览器中执行这些测试。二、环境安装安装 python这个。。。忽略建议 python3.7。安装基于 python 的 selenium 依赖包命令pip install selenium安装浏览器驱动包推荐使用 chrome 浏览器的chromedriver.exe对应 chrome 版本一定要对哦不然运行不起来的安装在哪想放哪放哪不过一般是放在 python 的根目录下。下载地址chromedriver.storage.googleapis.com/index.html安装 PyCharm 这个无脑安装~然后可自定义界面 UI 及编码风格这个。。。忽略三、牛刀小试1. 控制浏览器#codingutf-8from selenium import webdriverdriver webdriver.Chrome()driver.get(http://www.baidu.com)driver.maximize_window() #将浏览器最大化显示driver.set_window_size(480, 800) #设置浏览器宽480、高800显示driver.back() #后退driver.forward() #前进driver.close() #关闭chromedriver.quit() # 退出chrome如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入软件测试技术群603401995群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。2. 对象的定位通过 id 定位find_element_by_id()通过 name 定位find_element_by_name()通过 class 定位find_element_by_class_name()通过 tag 定位find_element_by_tag_name()通过 link 定位find_element_by_link_text()通过 partial_link 定位find_element_by_partial_link_text()通过 xpath 定位find_element_by_xpath()通过 css 定位find_element_by_css_selector()以上几种定位是常规操作应该就基本够用了但是有的时候就是会出现一些诡异的定位失效或者定位到了点击失效的问题这个时候如果用js进行直接执行该事件接下来介绍下非常规操作id 定位document.getElementById()name 定位document.getElementsByName()tag 定位document.getElementsByTagName()class 定位document.getElementsByClassName()css 定位document.querySelectorAll()search_js document.getElementsByName(wd)[0].valueselenium;# 通过name定位然后赋值“selenium”search_js2 document.querySelectorAll(.s_ipt)[0].valueselenium;# 通过css定位然后赋值“selenium”button_js document.getElementById(su).click();# 通过id定位然后执行单击操作button_js2 document.getElementsByClassName(s_btn)[0].click()# 通过className定位然后执行单击操作 driver.execute_script(search_js2)#执行execute_script(script, *args)以上几种定位是可以再度升级可以利用 jQuery 定位一波3. 操作测试对象#codingutf-8from selenium import webdriverdriver webdriver.Chrome()driver.get(http://passport.kuaibo.com/login/)driver.find_element_by_id(user_name).clear() #清除输入框的默认内容driver.find_element_by_id(user_name).send_keys(username)driver.find_element_by_id(user_pwd).clear()driver.find_element_by_id(user_pwd).send_keys(password) #输入输入框的内容为“password”driver.find_element_by_id(dl_an_submit).click() #通过 submit() 来提交操作driver.find_element_by_id(dl_an_submit).submit()sizedriver.find_element_by_id(kw).size #返回百度输入框的宽高 textdriver.find_element_by_id(cp).text #返回百度页面底部备案信息#返回元素的属性值可以是 id、name、type 或元素拥有的其它任意属性attributedriver.find_element_by_id(kw).get_attribute(type) #返回元素的结果是否可见返回结果为 True 或 Falseresultdriver.find_element_by_id(kw).is_displayed()driver.quit() #退出复制代码4. 鼠标键盘事件from selenium import webdriver #引入 Keys 类包from selenium.webdriver.common.keys import Keys #引入 ActionChains 类from selenium.webdriver.common.action_chains import ActionChains... #鼠标事件 #定位到要操作的元素right driver.find_element_by_xpath(xx) #对定位到的元素执行鼠标右键操作ActionChains(driver).context_click(right).perform() #对定位到的元素执行鼠标双击操作ActionChains(driver).double_click(right).perform() #对定位到的元素执行鼠标移动到上面的操作ActionChains(driver).move_to_element(right).perform() #对定位到的元素执行鼠标左键按下的操作ActionChains(driver).click_and_hold(right).perform() #定位元素的原位置element driver.find_element_by_name(xxx) #定位元素要移动到的目标位置target driver.find_element_by_name(xxx) #执行元素的移动操作ActionChains(driver).drag_and_drop(element, target).perform() #键盘事件 #删除多输入的一个 值driver.find_element_by_id(kw).send_keys(Keys.BACK_SPACE) #输入空格键“教程”driver.find_element_by_id(kw).send_keys(Keys.SPACE)driver.find_element_by_id(kw).send_keys(u教程) #ctrlx 剪切输入框内容driver.find_element_by_id(kw).send_keys(Keys.CONTROL,x) #其余的键盘操作类似5. 等待时间#codingutf-8from selenium import webdriver #导入 WebDriverWait 包from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC #导入 time 包import timedriver webdriver.Chrome()driver.get(http://www.baidu.com) #WebDriverWait()方法使用,显示等待,WebDriverWait(driver,超时时长调用频率忽略异常).until(可执行方法超时返回的信息),这里可以调用EC来实现可执行方法is_disappeared WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“kw”).is_displayed()) #until(method, message’ ’),调用该方法提供的驱动程序作为一个参数直到返回值不为 Falseelement.send_keys(selenium) #添加智能等待隐时等待driver.implicitly_wait(30)driver.find_element_by_id(su).click() #添加固定休眠时间强制等待time.sleep(5)driver.quit()6. 组对象定位及层级定位呃忽略7. 多窗口处理#codingutf-8from selenium import webdriver import timedriver webdriver.Chrome()driver.get(http://www.baidu.com/) #获得当前窗口nowhandledriver.current_window_handle #打开注册新窗口driver.find_element_by_name(tj_reg).click()allhandlesdriver.window_handles #循环判断窗口是否为当前窗口for handle in allhandles: if handle ! nowhandle:driver.switch_to_window(handle) print now register window!#切换到邮箱注册标签driver.find_element_by_id(mailRegTab).click()time.sleep(5)driver.close() #回到原先的窗口driver.switch_to_window(nowhandle)driver.find_element_by_id(kw).send_keys(u注册成功)time.sleep(3) #ifrome处理 #这里会自动识别idname如果没有则可以将元素通过选择器找到然后输入该元素即可driver.switch_to_frame(f1)element driver.find_element_by_id(kw)driver.switch_to_frame(element)driver.quit() 复制代码8. 提示窗口处理#codingutf-8from selenium import webdriver import timedriver webdriver.Chrome()driver.get(http://www.baidu.com/) #点击打开搜索设置driver.find_element_by_name(tj_setting).click()driver.find_element_by_id(SL_1).click() #点击保存设置driver.find_element_by_xpath(//div[idgxszButton]/input).click() #获取网页上的警告信息alertdriver.switch_to_alert() #接收警告信息alert.accept() #取消对话框(如果有的话)alert.dismiss() #输入值(如果有的话)alert.send_keys(“xxx”)9. 控制浏览器滚动条这个运用之前提示的jq语句即可实现10. cookie处理主要用途在于处理验证码问题#codingutf-8from selenium import webdriver import timedriver webdriver.Chrome()driver.get(http://www.youdao.com) #向 cookie 的 name 和 value 添加会话信息。driver.add_cookie({name:key-aaaaaaa, value:value-bbbb}) #遍历 cookies 中的 name 和 value 信息打印当然还有上面添加的信息for cookie in driver.get_cookies(): print %s - %s % (cookie[name], cookie[value]) ##### 下面可以通过两种方式删除 cookie ##### # 删除一个特定的 cookiedriver.delete_cookie(CookieName) # 删除所有 cookiedriver.delete_all_cookies()time.sleep(2)driver.close()复制代码四、小结如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入软件测试技术群603401995群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。在熟悉了selenium常见的API基本操作后这里便可以开展实际测试用例的设计了一个良好的自动化测试用例起码符合一下五个条件1、一个脚本是一个完整的场景从用户登陆操作到用户退出系统关闭浏览器。2、一个脚本脚本只验证一个功能点不要试图用户登陆系统后把所有的功能都进行验证再退出系统3、尽量只做功能中正向逻辑的验证不要考虑太多逆向逻辑的验证逆向逻辑的情况很多(例如手 号输错有很多种情况)验证一方面比较复杂需要编写大量的脚本另一方面自动化脚本本身比较脆弱 很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)4、脚本之间不要产生关联性也就是说编写的每一个脚本都是独立的不能依赖或影响其他脚本。5、如果对数据进行了修改需要对数据进行还原。 6、在整个脚本中只对验证点进行验证不要对整个脚本每一步都做验证。最后配合unittest或者testNG单元测试框架实现分层、数据驱动、断言、截图、日志等全方位功能得心应手的开展自动化测试工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪个网站微博做的最好怎么将网站做成小程序

系统:ubuntu17.04数据库主要分文档型和服务型两类:文档型:如sqlite3 (17.04自带/usr/bin/sqlite3)就是一个文件,应用在移动端如手机,pad,家电等服务型:如mysql有服务端(存储数据)和客户端mysql数…

【英语启蒙动画合集】0基础宝宝必看的动画,超全!直接下载~

▼资源展示▼ 01 - SSS儿歌视频」 链接:https://pan.quark.cn/s/e7f58293918a 02 - Super Simple ABCs 自然拼读 链接:https://pan.quark.cn/s/7016192ad6f3 03- RAZ全部29个级别‼️‼️AA-Z(包含Z1 Z2)一定及时存…

基于OPC UA协议的SIMATIC PLC通信实现

一、系统架构设计 +-------------------+| 上位机(OPC UA Client) || (C#/Python/SCADA) |+--------+----------+|v +-------------------+ +-------------------+ | SIMATIC PLC | | OPC UA Serv…

Transformer模型/注意力机制/目标检测/语义分割/图神经网络/强化学习/生成式模型/自监督学习/物理信息神经网络等 - 指南

Transformer模型/注意力机制/目标检测/语义分割/图神经网络/强化学习/生成式模型/自监督学习/物理信息神经网络等 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !import…

AI 自动化智能体训练营 | 借助人工智能提升工作效率,打造自己的智能体工作流

课程背景与解决的问题 你是否也有这样的困扰? 每天被大量重复劳动占据时间? 报表、PPT、文案写得慢,效率低? 想用 AI 提高效率,却不知道从哪入手? 想做副业/创业,但缺乏技术与工具? 👉 这门训练营,将带你从…

无网站网络营销凡客诚品vancl

本文为大家介绍如何使用 串口 接收定长 和 不定长 的数据。 文章目录 前言一、串口接收定长数据1. 函数介绍2.代码实现 二、串口接收不定长数据1.函数介绍2. 代码实现 三,两者回调函数的区别比较四,空闲中断的介绍总结 前言 一、串口接收定长数据 1. 函…

做一个网站以及app多少钱深圳门户网站有哪些

需求:不去掉系统自带launcher的前提下,默认启动指定应用作为launcher现象:应用中带有属性"android.intent.category.HOME",开机会弹出选择界面思路:跳过选择界面,直接选中要启动的launcher并直接…

「Java EE开发指南」用MyEclipse开发的EJB开发工具(一)

「Java EE开发指南」用MyEclipse开发的EJB开发工具(一)如果您需要支持Java EE 5中引入的简化基于注释的POJO编程模型,那么EJB开发工具就是您的正确选择。在此您将了解到:EJB开发工具和EJB项目 持久性支持和EJB项目…

MX-X21

并没有参加 MX 比赛,这是一篇补题笔记。 T3 神人数据,一个显然假的贪心是从前往后能放就放,最后尝试将前后两端合并起来。 然后你会发现将近 50 个测试点还全是多测的情况下,我们仅仅 WA 了最后一个测试点。于是我…

实用指南:解析前端框架 Axios 的设计理念与源码

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

wordpress判断子分类响应式网站建设推荐乐云seo

目录 一、懒惰,尤其是脑子懒的人 1、首先,遇到问题学会自己去网上找答案 2、其次,带着两个及以上的方案 二、经常跟领导唱反调 1、首先,不要在公开场合进行反对,要学会给领导留足面子。 2、其次,一定…

Kubernetes Cilium网络组件和CoreDNS配置

1.部署helm网络组件wget https://mirrors.huaweicloud.com/helm/v3.15.2/helm-v3.15.2-linux-amd64.tar.gztar -zxvf helm-v3.15.2-linux-amd64.tar.gz cp linux-amd64/helm /usr/bin/# helm version version.BuildIn…

深入解析:博客SEO优化实战:从Google到百度,一套可复制的排名增长SOP

深入解析:博客SEO优化实战:从Google到百度,一套可复制的排名增长SOP2025-09-26 10:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: aut…

题解:P10107 [GDKOI2023 提高组] 树

题意:很简单了,不再赘述。 做法: 题解中好像有很牛的 bfs 序做法,太困难了,我只会暴力还常数很大的长链剖分。 首先看到是个 k 邻域问题,那基本上要不然是 bfs 序转化要不然是长链剖分,我只会后面这个东西所以考…

Gitee Wiki:AI赋能的下一代研发知识管理平台如何重塑软件行业协作范式

Gitee Wiki:AI赋能的下一代研发知识管理平台如何重塑软件行业协作范式 在数字化转型浪潮席卷全球的当下,软件研发领域正经历着前所未有的知识管理革命。传统文档管理系统碎片化严重、知识传承断层、安全管控薄弱等问…

COLMAP 安装在ubuntu20服务器上问题解决全记录

系统配置 主机型号:Supermicro SYS-4029GP-TRT2 CPU:Intel Xeon(双路,支持 AVX-512 / OpenMP 4.5) GPU:NVIDIA GPU,CUDA 11.8(驱动对应 515+ 版本) 操作系统:Ubuntu 20.04 LTS 内存:≥ 256 GB 编译器:gcc …

免费带后台的网站模板购物网站开发教学视频

一、接口和抽象类的区别? 方法定义:接口和抽象类,最明显的区别就是接口只是定义了一些方法而已,在不考虑Java8中default方法情况下,接口中只有抽象方法,是没有实现的代码的。(Java8中可以有默认方法) 修饰符:抽象类中的修饰符可以有public、protected和private和<…

完整教程:Prompt Tuning提示词微调工程

完整教程:Prompt Tuning提示词微调工程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

Autodesk Moldflow 2026下载地址与安装教程

软件介绍 Autodesk Moldflow 2026是欧特克公司推出的注塑与压缩成型仿真软件,专为优化塑料产品设计及模具制造流程设计。该版本集成Autodesk Moldflow Data Fitting 2026工具,支持将原始材料数据转换为仿真兼容的.ud…

深入解析:Java SOA集成:从“混乱“到“有序“的3步蜕变之旅!

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …