虫师Selenium2+Python_6、Selenium IDE

P155——创建测试用例
  1. 录制脚本
  2. 编辑脚本
  3. 定位辅助
P159——Selenium IDE 命令
在浏览器中打开URL,可以接受相对路径和绝对路径两种形式
open
open(url)
单击链接、按钮、复选框和单选框
click(elementLocator)
模拟键盘的输入,向指定的input中输入值
type(inputLocator,value)
根据optionSpecifier选项选择器来选择一个下拉菜单选项
select(dropDownLocator,optionSpecifier)
模拟单击浏览器的后退按钮
goBack()
选择一个弹出窗口
select(windowId)
根据指定时间暂停Selenium脚本执行
pause(millisenconds)
模拟页面元素事件被激活的处理动作
fireEvent(elementLocatore,evenName)
模拟单击浏览器关闭按钮
close
P162——断言与验证
P167——等待与变量
1、启用火狐插件Selenium IDE

 

2、点击红点进行脚本录制
3、使用Selenium IDE导出脚本,选择导出Python语言的脚本

 

4、在命令行中运行该脚本,报错。这是因为Python文件在第10行没有类名导致

 

5、导出脚本的源码如下,添加一个hello类名,再运行
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class hello(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://www.baidu.com/"
self.verificationErrors = []
self.accept_next_alert = True
def test_(self):
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id("kw").click()
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(u"你好")
driver.find_element_by_id("su").click()
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException as e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException as e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
运行成功:

 

转载于:https://www.cnblogs.com/TomBombadil/p/10977809.html

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

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

相关文章

flow 静态类型检查 js

1、flow介绍 https://ustbhuangyi.github.io/vue-analysis/prepare/flow.html#为什么用-flow 2、使用 (1)安装flow (2)项目目录的test.js文件 类型推断: /*flow*/function split(str) {return str.split( )}split(1…

页面监听,一段时间内不操作网页,就自动跳转到登录页

需求:用户在 5 分钟内没有操作网页,就自动跳转到登录页。 环境:jquery 项目,有公共的 js 文件 。 在所有页面都引用的 js 文件中添加下面代码: //判断用户是否在5分钟内未操作页面,如果没有操作&#xff…

页面刷新 vuex 数据重新被初始化

1、原因 vuex里用来存储的也只是一个全局变量,当页面刷新,该全局变量自然不存在了。 2、解决 使用localStorage存储一份 (1)storage.js /*** vuex localStorage plugin*/const IS_ALL 0export default function storagePlugi…

小程序 循环中有多个input,怎么获取每个input输入框的值

像上面这样的,使用form表单结构不太合理。官方文档中 wx.createSelectorQuery() 方法我这里总是打印不出值,所以只好通过输入框的事件来做判断,因为提交时,上面所有的输入框都是要有值的,也就意味着这些输入框都会使用…

了解JUnit的Runner架构

几周前,我开始创建一个小的JUnit Runner( Oleaster ),它允许您使用Jasmine方式在JUnit中编写单元测试。 我了解到,创建自定义JUnit Runners实际上非常简单。 在本文中,我想向您展示JUnit Runner在内部如何工…

琼瑶哀悼丈夫去世

转载于:https://www.cnblogs.com/gitwow/p/10982911.html

vue 简单实用的elementUI表格封装

在写这个表格组件之前,要了解 slot 插槽的使用。 目录 1.子组件:子组件调用父组件的方法 this.$parent.方法名 2.父组件使用 2.1 父组件(普通表格): 2.2 父组件(表格中的某一项数据需要修改&#xff0…

【学习】012 垃圾回收机制算法分析

垃圾回收机制概述 Java语言中一个显著的特点就是引入了垃圾回收机制,使c程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念&#xff0…

介绍JBoss BPM Suite安装程序

本周,我们想向您介绍JBoss BRMS和JBoss BPM Suite产品随附的一个鲜为人知的安装程序组件。 请注意,当前所有的演示项目都要求您下载JBoss BPM Suite可部署的eap zip产品文件和JBoss EAP 6.1.1 zip产品文件。 展望未来,我们将迁移所有项目&am…

自动装箱,拆箱和NoSuchMethodError

J2SE 5为Java编程语言引入了许多功能。 这些功能之一是自动装箱和拆箱 ,这是我几乎每天都没有考虑过的功能。 它通常很方便(尤其是与收藏夹一起使用时),但有时会导致一些令人讨厌的惊喜 ,即“ 怪异 ”和“ 疯狂” 。 在…

vue 动态显示三级路由

无需 vuex、本地存储实现动态显示三级路由。 目录 一、需求描述: 二、代码 2.1 路由配置 1. 我的一级菜单和二级菜单的路由配置的: 2. 三级菜单的路由配置: 3. 上面有几个变量和要注意的细节: 2.2 封装导航栏 2.3 封装面…

第二章 Vue快速入门-- 18 v-for中key的使用注意事项

注意:如果属性和方法还没定义直接使用的话&#xff0c;就会报 xxx is not defined 导致界面不能正常显示。我看视频教程里老师的可以直接使用&#xff0c;而且界面正常显示&#xff0c;可能是vue版本不同吗&#xff1f;还不清楚 1 <!DOCTYPE html>2 <html lang"…

vue 后端返回二进制流文件,前端如何实现下载?

目录 1. axios 请求二进制流文件导出文件 1.1 后台返回的二进制流&#xff1a; 1.2 使用&#xff1a; 1.3 需要注意以下几点&#xff1a; 2. 关于 arraybuffer 和 blob 2.1 ArrayBuffer 和 blob 2.2 区别 2.3 相互转换 3. 主要参考&#xff1a; 1. axios 请求二进制…

python量化之路:获取历史某一时刻沪深上市公司股票代码及上市时间

python量化之路&#xff1a;获取历史某一时刻沪深上市公司股票代码及上市时间 最近开始玩股票量化&#xff0c;由于想要做完整的股票回测&#xff0c;因此股票的上市和退市信息就必不可少。因为我们回测的时候必须要知道某一日期沪深股票的成分包含哪些对吧。所以我们要把沪深全…

《网页设计创意书》读后感

刚刚收到《网页设计创意书》&#xff0c;确实有点惊喜&#xff0c;开始以为是像之前审读的书一样是一叠叠的打印纸&#xff0c;没想到是一本成品书&#xff0c;拿到手上沉甸甸的&#xff0c;随便翻看了一下&#xff0c;没想到里面竟然还是全彩页印刷的&#xff0c;本书的第一感…

游戏AI –行为树简介

游戏AI是一个非常广泛的主题&#xff0c;尽管有很多资料&#xff0c;但我找不到能以较慢&#xff0c;更容易理解的速度缓慢介绍这些概念的东西。 本文将尝试解释如何基于行为树的概念来设计一个非常简单但可扩展的AI系统。 什么是AI&#xff1f; 人工智能是参与游戏的实体表现…

liteos错误处理(十一)

1. 概述 1.1 基本概念 错误处理指用户代码发生错误时&#xff0c;系统调用错误处理模块的接口函数&#xff0c;完成上报错误信息&#xff0c;并调用用户自己的钩子函数&#xff0c;进行特定的处理。 错误处理模块实现OS内部错误码记录功能。OS内部错误码无法通过接口返回&#…

js 变量提升与函数提升

规则&#xff1a; 函数的提升优先于变量提升。同名的函数会覆盖同名的函数与变量。同名的变量不会覆盖同名的函数。 示例代码1&#xff1a; <!DOCTYPE html><html lang"zh"><head><meta charset"UTF-8" /><meta name"vi…

mockJs文档(一)

Mock.js 官网 目录 1. 开始安装 1.1 Node&#xff08;CommonJS&#xff09; 1.2 CMD方式 2. 语法规范 2.1 数据模板定义规范 DTD 2.1.1. 属性值是字符串 String 2.1.2. 属性值是数字 Number 2.1.3. 属性值是布尔型 Boolean 2.1.4. 属性值是对象 Object 2.1.5. 属性值…

小程序 获取手机号

【参考小程序开发文档&#xff1a;开发-指南-开放能力-用户信息-获取手机号】 地理位置 wx.getLocation(Object object) | 微信开放文档 手机号 获取手机号 | 微信开放文档 微信信息 小程序与小游戏获取用户信息接口调整&#xff0c;请开发者注意升级。 | 微信开放社区 目录…