这个项目放到论坛之后,有很多热心的小伙伴试用,并且在 github 上面也点赞和 fork。 感谢各位的支持!
不过可能大家使用习惯的问题, 遇到有什么问题,或者看到我在下面的回帖里回复了 qq 号, 就直接加了 qq 进行咨询。由于工作等方面的原因,不可能实时在 qq 上进行回复,并且不少问题都是帖子和回复贴里有的,所以感觉沟通效率不高。
因此,现在暂时屏蔽 qq 号,如果对于该项目有任何使用上的疑问,欢迎通过下面的方式进行反馈:
github 地址: https://github.com/jerrylizilong/autotest_platform \ https://jerrylizilong.github.io/autotest_platform/
参考帖子:
之前使用 Python + flask 开发的 selenium 自动化测试用例管理、执行平台,终于克服懒癌把业务相关的信息剥离掉,代码放到了 GitHub 上面:
基于 python+selenium 的自动化测试管理、执行平台。
python 3.4 以上
selenium : 建议使用 3.0 以上版本
mysql : 建议 5.5 以上
基于 flask 进行开发,进行用例、用例集、步骤等的增删改查等功能。
启动 flask:
python run.py
python core.py
python atx_core.py
# atx 配置
isUseATX=True # True 代表使用 atx
ATXHost = 'http://172.16.100.168:8002' # 对应的 atxserver 地址
git clone https://github.com/jerrylizilong/autotest_platform.git
cd autotest_platform
pip3 install -r requirements.txt
db_host='localhost'
db_port='3306'
db_user='root'
db_password='yourpassword'
database='test_auto_new'
# smtp 发送邮件相关配置:
is_email_enable = False #发送邮件开关
flask_host = 'http://localhost:5000' # 邮件中的报告链接会使用
smtp_server_host = 'smtp.163.com' # 如使用其他的smtp 服务,请修改对应host 和端口
smtp_server_port = '25'
smtp_from_email = 'youraccount@163.com' # 发送邮件的邮箱账号
smtp_default_to_email = 'youraccount@163.com' # 默认接收邮件的邮箱账号
smtp_server_user = smtp_from_email
smtp_server_password = 'yourpassword' # 发送邮件的邮箱密码
# atx 配置
isUseATX=True
ATXHost = 'http://localhost:8000'
python run.py
此时可通过访问 localhost:5000 访问登录界面。
初始用户及密码: admin/0
python core.py
python atx_core.py
# atx 配置
isUseATX=True # True 代表使用 atx
ATXHost = 'http://172.16.100.168:8002' # 对应的 atxserver 地址
可以按以下两种方式进行接入:
服务端启动:
python run_service.py
将通过 9998 端口监听节点启动、关闭状态
selenium grid 节点启动: 将 app/client 目录复制到已安装 selenium driver 的服务器/PC 中,修改 client.py 文件中 host 为服务端对应地址,并启动:
python client.py
服务启动后,会启动 selenium server,并注册到服务器中。
拉取相关镜像:
docker pull selenium/hub
docker pull selenium/node-chrome
docker pull selenium/node-firefox
启动 hub :
docker network create grid
docker run -d -p 4444:4444 --net grid --name selenium-hub selenium/hu
启动节点:
# 建议 NODE_MAX_INSTANCES、NODE_MAX_SESSION 两个参数都设置为 10,便于并发执行
docker run -e NODE_MAX_INSTANCES=10 -e NODE_MAX_SESSION=10 -d --net grid -e HUB_HOST=selenium-hub selenium/node-firefox
docker run -e NODE_MAX_INSTANCES=10 -e NODE_MAX_SESSION=10 -d --net grid -e HUB_HOST=selenium-hub selenium/node-chrome
用例步骤说明:
例子:在百度中输入 selenium,并验证查询结果是否正确。
Chrome,前往|http://www.baidu.com,填写|id@@kw@@selenium,点击|id@@su,验证|Web Browser Automation,截图
步骤解析:
- Chrome: 调用 Chrome driver 进行测试。
- 前往|http://www.baidu.com : 前往目标页。
- 填写|id@@kw@@selenium : 在 id 为 kw 的元素中输入 selenium。
- 点击|id@@su : 点击 id 为 su 的元素。
- 验证|Web Browser Automation : 验证页面中是否出现 ‘Web Browser Automation’ 的文字。
- 截图: 对当前页面进行截图并保存。
某些公共的步骤,可以封装为公共方法进行调用:
还可对用例进行如下管理:
请查看这篇文章的介绍:
https://testerhome.com/topics/11738
样例:
Android|com.your.packagename,点击 |id@@com.your.packagename:id/btn_login,等待 |2,点击 |name@@GuestLogin,等待 |5,截图,
相关的步骤已封装在 app/core/atx_step.py 中,具体包括:
Android : 打开指定已安装的 app(通过包名)
填写: type_text
点击: click(by id/name/description/class)
截图: take_screenshot
由于我测试的 app 功能较为简单,目前只封装了这几个方法,如果需要可增加封装对应的方法。
这个功能有助于提高用例的输入效率。 如下图示是如何添加一条《在百度搜索 testerhome 并截图》的例子:
脑图集成部分代码已提交:
https://github.com/jerrylizilong/autotest_platform
更新说明:
使用说明:
这个可以有,支持另外开发者上传代码吗
学习了,后期可以将 macaca appium atx 等兼容进来
我这边已经集成了 appium 和 atx(之前集成的 macaca ,因为感觉不稳定,替换成了 appium 和 atx),不过这次整理的代码里没包括这块
想问下,存储在数据库中的关键字和对应的值是如何转化为可执行的测试用例的,例如 appium 所能执行的,看了下源码没太懂,代码能力较菜
读取关键字对应值:
调用:
keywords.keywords().getPara(keyword)
方法:
def getPara(self, keyword):
result = 0
log.log().logger.info(keyword)
sql = string.Template(
"select paraCount, template, elementTemplate from `test_keyword` where `keyword`= '$index' limit 1;")
sql = sql.substitute(index=keyword)
result = useDB.useDB().search(sql)
if len(result):
return result[0][0], result[0][1],result[0][2]
else:
return '','',''
转换为可执行语句:
调用:
conmod, element = self.convertToComend(template,paraCount,steps,elementTemplate)
通过对应的模板,传入对应参数后,转换为可执行命令。
转换有两种:
当步骤中描述:
填写 |id@@input_box@@ghw
转换为命令:
driver.find_element_by_id("input_box").send_keys("ghw")
def select(self,driver,para_list):
method, value, option_method, option_value = para_list[0],para_list[1],para_list[2],para_list[3]
from selenium.webdriver.support.select import Select
if option_method =='index':
comd = 'Select(driver.find_element_by_%s("%s")).select_by_%s(%s)' %(method,value,option_method,option_value)
else:
if option_method == 'text_part':
self.select_by_visible_text(driver.find_element(by=method,value=value),option_value)
else:
if option_method == 'text':
option_method = 'visible_text'
comd = 'Select(driver.find_element_by_%s("%s")).select_by_%s("%s")' % (
method, value, option_method, option_value)
log.log().logger.info(comd)
exec(comd)
time.sleep(2)
模板:
extend.extend().select(driver,["$para1","$para2","$para3","$para4"])
步骤中描述:
选择 |id@@selectBox@@index@@1
extend.extend().select(driver,["id","selectBox","index","1"])
请查看这篇文章的介绍:
https://testerhome.com/topics/11738
样例:
Android|com.your.packagename,点击 |id@@com.your.packagename:id/btn_login,等待 |2,点击 |name@@GuestLogin,等待 |5,截图,
相关的步骤已封装在 app/core/atx_step.py 中,具体包括:
Android : 打开指定已安装的 app(通过包名)
填写: type_text
点击: click(by id/name/description/class)
截图: take_screenshot
由于我测试的 app 功能较为简单,目前只封装了这几个方法,如果需要可增加封装对应的方法。
已经很不错了,想知道下,执行任务那块是怎么做的呢,多线程吗??
思路不错,有时间研究下重构下
no hubs is availabe 就是没有可用的节点
你看下是否已经启动了对应的 selenium server , 并添加到 节点管理里面。
已经在 docker 中启动了 selenium-hub 还有 Chrome,而且把节点添加到了节点管理中,但是每次启动都是这个一样的报错
需要填写的是 selenium 的 ip 和端口, 实际上就是通过类似的 selenium server 地址进行测试: http://XXX.XXX.XXX.XX:4444/grid/console
另外需要留意下 docker 里的 selenium 能否被你的脚本访问
http://xxx.xxx.xxx.xx:4444/grid/console 看下你配的节点在部署的服务器上能否正常访问。 如果访问不了,服务器会认为这个节点已经关闭了,从而更新为已关闭。
如果是 docker 的, 看下如何开启 docker 容器的网络权限到外网访问。
这是因为这个进程已经被占用掉了。
建议启动 docker 的时候把最大进程设置为 10, 这样可以并发执行,提高使用率:
sudo docker run -e NODE_MAX_INSTANCES=10 -e NODE_MAX_SESSION=10 -d --net grid -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-firefox-debug
你是在 ide 里运行吗?
这应该是 python 的模块没有识别到,可以这样做:
方法 1: 直接在 ide(如 pycharm)里运行, 它会自动把当前目录加入到 pythonpath 里面进行识别
方法 2: 在 app 同级,新增一个 py 文件:
from app.core import coreservice
coreservice.coreservice()
然后直接运行这个文件,应该就没有这个问题
截图看得不是很清晰,最好拿具体的错误信息去搜一下。
看起来应该是你的 selenium server 版本不兼容。
selenium server 版本
你的 selenium 节点是怎么启动的? java -jar selenium.xxx.jar 这种方式吗? 看下这个 jar 包是什么版本的
为什么执行用例的时候,只提示 sucess,然后并没有启动浏览器执行用例?
把你的 core service 报错截图来看看?
另外说明一下几个文件的启动顺序:
python client.py 提示错误: other system is not supported yet !
已经解决了,谢谢楼主!ChromeDriver 没有被检测到
修改 coredriver.py 的
driver = webdriver.remote.webdriver.WebDriver(command_executor=server_url,desired_capabilities=desired_caps_web) 为 driver = webdriver.Chrome()
我一直想做一个这平台,但一想到做,就觉得 HTML,js,css 基础不好,搞不定
应该是通用的格式啊,不过 android 我用的不多,所以对应的关键字封装的目前只有 点击、填写、截图、等待 等几个
出错的是 点击文字 , 这个方法我在 android 下是没封装的,可以用 点击 |name@@XXX 来替代;
同时跑多个设备,需要先新建 测试用例集, 然后关联用例时选择需要执行的 设备列表, 然后再点击关联
to 1. 只有测试用例集(自动化测试》test suite )执行完才会生成对应报告和发邮件, 否则每条用例执行都发一次邮件通知就太频繁了。
我们的菜单也是类似这样的结构,我对应的解决方法是:
以上方案实在不行的话,可以考虑用 xpath 的相对路径定位。
哈,巧合了。我是使用 Java + springboot + Appium / Selenium,实现了一套类似功能的 UI 自动化测试平台。正在准备抽离业务代码做下开源分享,刚巧看到你的这篇帖子,学习一下。
2018-11-16 更新:
数据表不存在,看下 init.sql 的数据是否已经导入到你的数据库里面
数据表不存在,看下 init.sql 的数据是否已经导入到你的数据库里面。
图片上传和弹出浮层的选择框用什么方法,我试了一下,好像都不能用
图片上传如果是 input 类型,可以试下 填写文件 方法
弹框的选择看是什么类型,如果是 select 也可以用 选择 方法
大神我想问一下,我想在您的平台里实现,读取页面中指定元素的文字并写入到一个文本框里,可以实现么,我试了试改步骤,总是不行
刚刚做了一个简单的实现,添加了一个复制方法:
复制: 将某个元素的内容(value、text、innertext)复制填写到另一个元素中。
刚刚已经提交到最新代码里了,可以更新下来看看。
insert into `test_keyword` ( `keyword`, `paraCount`, `template`, `elementTemplate`, `example`, `description`, `status`) values('复制','4','extend.extend().copy_from_another_element(driver,[\"$para1\",\"$para2\"],[\"$para3\",\"$para4\"])','driver.element_by_$para1(\"$para2\")','复制|id@@kw@@id@@su','将后一个元素的内容复制填入到前一个元素中','1');
更新后之前的用例为啥都不见了 而且跑 case 的时候提示 failed to change window state to normal, current state is maximized
还有一个问题我想问一下,怎么才能把平台里设计的用例备份或者导出一下,省的我一不小心弄错东西用例又白做了,谢谢您了
你是重新初始化了数据库吗? 或者看下 app/config.py 文件是否覆盖了,导致没连上数据库
搞定了大神,我把 mysql 重启了一下然后重新执行了一下 init.sql 就好了,但是我又发现一个问题,执行 init.sql 会覆盖 case 和节点数据吗?那我下次在更新的时候要怎么操作才能在不丢失数据的情况下升级,谢谢啦
init sql 是在初始化的时候才要做的,如果你已经初始化过,就不要轻易去执行了,否则可能把你原来的数据给清掉
可以对比下你的版本和最新的版本,看新增了什么 sql 语句需要执行的
楼主是怎么实现 web 端通过关键字编辑用例,然后在手机真机上运行的?卡在这里很久了,因为之前我是 C/S 结构
我是用的 atx server,通过 wifi 无线连接手机进行测试。
appnium 的话可以搜一下论坛里的帖子,之前看到有人分享过怎么进行管理
请问能同时运行多个任务么? 如果有不同的环境需要同时跑自动化,那么这些任务是怎么组织和分发?
所有的任务都是转换为单条测试用例进行管理的。
例如分别有 A、B、C 三个任务,分别有 100 条用例,那么定时任务就会查到有 300 条用例待执行,自动按设定的并发数(默认为 6 )并发执行。
我这边是没问题的,如果你本地用 selenium 可以执行,可以检查一下:
填写 方法就是按 driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div/div[1]/div[2]/form/div[3]/div[2]/div/span/span/div[1]/span/input").send_keys("I:\3333.jpg") 这种格式进行封装的,所以如果 selenium 直接运行 ok ,理论上这样调用也没问题
从后台获取用例的完整信息,是在 js 里实现的
html 里的调用:
<script>window.onload =function(){document.getElementById('btn_reset').click();}</script>
对应的 js :
/static/scripts/core/test_case.js
// 编辑表单
function get_edit_info(active_id)
{
if(!active_id)
{
alert('Error!');
return false;
}
$.ajax(
{
url: "/test_case.json",
data:{"id":active_id,"type":"test_case"},
type: "get",
dataType:"json",
beforeSend:function()
{
return true;
},
success:function(data)
{
if(data)
{
// 解析json数据
var data = data;
var data_obj = data.rows
// 赋值
$("#id").val(active_id);
$("#name").val(data_obj.name);
$("#steps").val(data_obj.steps);
$("#description").val(data_obj.description);
$("#type").val(data_obj.isPublic);
var isPublic = data_obj.isPublic;
if(isPublic == 1)
{
$("#type").val('公共用例');
setModule('公共用例');
}else{
$("#type").val('普通用例');
setModule('普通用例');
}
$("#module").val(data_obj.module);
}
else
{
$("#tip").html("<span style='color:red'>失败,请重试</span>");
// alert('操作失败');
}
},
error:function()
{
alert('请求出错');
},
complete:function()
{
// $('#tips').hide();
}
});
return false;
}
全部是用你的,我就是改了名字而已(里面的方法名也都改了),但就是不显示;我也查看了你 test_case 的搜索方法,但和你一样呀,你也只查询了 id 而已,但网页最后有数据。
js 里面的赋值应该没多大关系,我都是默认的,但用例名称也不显示
htm 的 reset 按钮有的,网页也和你一样,但是也没有数据,只有 id
一步步排查吧:
JS 打印日志过了,触发了
接口调用成功,debug 模式有 id 传进来
但问题就是只传了 id,我用了你原来的文件,讲道理 modle 和名称起码应该可以和 id 一起传进来,但现在都没有。
老哥,现在有空么,能帮我查看下么
楼主,各种弹框,页面,ifame 的切换,你这里怎么设计的?
都是封装 selenium 的方法处理,例如:
def switchIframe(self,driver,para_list):
method, value = para_list[0], para_list[1]
# 切换 iframe
if method=='css':
method = By.CSS_SELECTOR
driver.switch_to_frame(driver.find_element(by = method,value=value))
time.sleep(2)
def switchWindow(self,driver):
for name in driver.window_handles:
if name != driver.current_window_handle:
driver.switch_to.window(name)
time.sleep(2)
最近我也在做这方面内容,和你差不多也是这样维护的,发现用例维护进来的错误率太高了,最后本地搞了个简单的测试脚本...
大神,想问下 这里面接口这部分是怎么操作的呢?
你好,想问一下单条测试用例可以运行,但是关联到测试集里就一直处于等待执行不知道是什么原因
请问答主用例的编写是没有采用 POM 模式吗?我看百度搜索的例子元素定位是直接写死在测试步骤中的,那如果我有 50 个案例均用到了同一个元素,后面元素定位信息改变了,那我是需要修改 50 个案例吗?
我还没有采用 POM 的模式,其实也可以做个增强,增加一个自定义对象的功能,把这种使用很多次的元素作为对象管理起来。
另一方面,如果你某些步骤是被多个用例使用到的,就有必要抽出来作为公共方法。
感谢楼主分享,前面都很顺利,selenium 节点也自动加载了但是却发现调不起 chromedrive,最后参考 64 楼的方法成功调用了
麻烦问一下楼主如果我想去数据库断言数据正确性怎么处理的
我现在没有做这种处理。
思路应该是封装一个从数据库读取数据的方法,然后把获取到的数据和页面上需要的数据进行断言对比就可以了。
那我应该封装到那个文件里面,app/core/extend.py 这个?
“” 执行类型为 Chrome 时,不能关联 android 模块的用例, “” 否则无法执行!,我有些安卓用例需要在运营后台配置,这个限制在哪取消掉
这里的执行类似是指属于 web 的用例,还是属于 android 的用例。 因为对应具体的用例类型是不一样的(内部应用的驱动不一样,一个是 selenium ,一个是 uiautomator2 ),所以限制了不能混在同一个用例集里执行。
建议可以分开两个用例集,一个是 web 相关的用例,一个是 android 相关的用例。
楼主,我想问下。当用例集点击执行后,我观察代码是向数据库中 update 了一条数据。那么具体执行是从哪边,就是调用 selenium 执行的过程从哪边看到?小白一枚,希望楼主不吝赐教。
将数据库中的数据转成可执行的语句是哪边?谢谢楼主!
你看下 coreservice.py 文件的代码,其实是一个轮询,如果发现有待执行状态的用例或者用例集,就会开始执行;而界面上操作的 update,就是把用例集更新为待执行的状态。
具体执行 selenium 的方法,可以从 coreservice 方法开始跟踪,最后是由 process.py 里的 main 方法执行单条用例的
好的,谢啦老哥!
楼主,你好。目前这个框架的用例好像没有部分执行功能也无法指定执行该用例的节点。请问是这样吗?如果是的话,请问方便加一下这两个功能吗?
1.在执行用例前可指定某些步骤不执行。
2.指定用例在某个特定的节点上执行,如果没有指定则随机选取一个可用的执行。
这种不是常规的需求吧,例如前几个步骤不执行,那流程还可以正常执行吗?
如果要这么做,把用例编辑一下,删掉不执行的步骤就可以了(效果和注释掉对应的代码一样)
至于指定节点,这个平台也是没有这个需求的,我的设计就是只要有可执行的节点就能执行。如果需要的话,要改对应查找节点的逻辑。
非常感谢楼主!另外,我想发红包感谢下,楼主能留个微信号吗?
atxserver2 的/api/v1/devices 没有 ip 的信息,需要用/api/v1/user/devices/${UDID}这个接口获取 atxAgentAddress 的地址信息 并且接口请求需要带上 token
method = SERVER2 就能获取到所有的有效设备了
/api/v1/devices 返回中只能拿到设备的 UDID 然后根据 UIDID 请求/api/v1/user/devices/${UDID} 拿到 atxAgentAddress 就能链接到设备了
老哥,我把项目部署到了服务器上,但是本地的 selenium 无法执行。我修改了本地的 client.py 中的地址,其他还有什么地方要修改的吗?
另外,那个分布式执行应该是怎么进行的?
update:2019-05-22
脑图集成部分代码已提交:
https://github.com/jerrylizilong/autotest_platform
你的 service.py 在哪台机运行,就填那台机的 IP
如果都是本地,填 127.0.0.1
另外,4444 端口和 9998 端口分别是干啥的?为啥要先 isOpen() 本地的 4444 端口。
客户端和服务器端建立 TCP 连接时在 9998 端口上吗?
4444 端口是 selenium Server 是默认端口,client 和 service 是通过 9998 端口进行通信
你的 client.py 是怎么启动的啊,没有启动 selenium server 就自动退出了。
这个 client 要做的事情是:
你现在的情况,是第三步没起来,你看下是不是改了代码配置还是说没下载 client 目录对应的 jar 包。
xpath : 点击 |xpath@@value
验证: 第二个页面是什么意思?打开另外一个窗口吗? 是的话,要先 切换窗口
就是登陆成功之后页面的文字,图片或者按钮的文字验证不成功,文本的文字可以验证成功了;如果验证页面数据是不是和数据库数据一致该怎么验证呢?
接口的模块是没有请求方式么 post 和 get
默认是 post,需要的话自己看下如何修改吧
近期工作很忙,没时间维护这个项目,所以不推荐用接口测试这个模块,或者自己做二次开发吧
能不能讲下单元测试怎么操作的呢,感谢
忍不住问下,Blueprint 这个有注册么,我想尝试着增加新的模块,但是一直提示 page not found!
提个问题,xpath 无法使用类似//a[contains(@href,'地址')] 模糊搜索定位,这样会被逗号进行切割,导致定位失败!
在 pycharm 跑其他用例,用的是同一个 chromedriver,用例可以跑通,应该不是 chromedriver 版本的问题
你确认一下看看,提示的版本是 2.20,可能和我代码里提供的 selenium Server(3.11)版本不一致
selenium server 3.11 这个版本对应多少版本的 chromedriver 呢?
你好 想问下这个使用 flask 传参给 selenium selenium 可以实现持久化吗
上面那个问题解决了 感谢回复,,这几天一直在试用这个 还有个问题想请教下 楼主 有没有尝试过 把这个发布出来 部署在 iis 上 去使用呢,我尝试部署 在 iis 上不成功 期待回复
我理解这是 Python 的服务,Windows 下直接启动就可以了,应该不需要使用到 IIS 吧?
执行 “UI 自动化测试用例整理举例 - 百度首页” 的几个用例之后,只会进百度首页 然后什么都不干 过会就关掉了 显示执行失败 截图全是百度首页
用命令行在 envs 环境内启动了 run.py 和 core.py 然后 java -jar 启动的 app/client 里面的 selenium service,自己下的新版本 3.141.59 chromedriver 也是去官网刚下的和版本对应的版本。。。
没用过上传图片的功能,你可以找 KittyMinder 的源码看一下,我只是把它集成到 flask 而已
有什么问题在这里问吧,我 QQ 号现在不用了
另外我刚换了工作,新公司没有用这个框架,所以我尽量回复你,但是没办法帮你调试或者开发新功能了
请问个问题,docker 下执行用例时,经常会有用例出现 WebDriverException: Message: Session [750685c9031b369275b84fd4f5569b9e] was terminated due to BROWSER_TIMEOUT 这种报错,有什么办法解决吗?
楼主,遇到弹窗,如何定位当前页面弹出窗口上的确认按钮,步骤加入切换后还需不需要填入参数了,我看你是有"$para1","$para2"] 两个参数要求,可是我填了定位的参数,每次到切换就出错了,就是无法点击到弹窗上的确认按钮
大佬你的框架哪里可以接入三方 api 的,公司项目现在登录有图形验证码校验的问题,我用百度 AIP ORC 识别的方法来通过验证。。现在想改下框架
建议你可以试下这么改:把识别的过程封装为一个关键字,然后在需要的时候调用这个方法进行识别。
具体怎么封装新的关键字,可以看下上面正文里的说明
楼主楼主,我点测试用例集页,用例集上那个执行,但是只发送了邮件,但是并没有执行测试用例,是本身就没功能吗? 如果把执行详情的重跑全部用例那个接口接到外面的执行上面,前端要改哪个文件,不是很懂前端
应该是没有重跑所有用例。
如果要改,你就把这个 执行 按钮绑定的方法,改成和详情页 重跑全部用例 按钮绑定的方法一样就可以了,具体的方法你可以右键属性查看;修改的话,应该是在 test_suite.js 这个文件里
大佬,昨天搭建了一下,用着很好,不过有个情况不知道怎么写,就是用例之前传递变量。比如我先获取了这个订单号,然后定位到搜索框想输入这个订单号。
还行问下,想知道的用例报错的详细信息,怎么看哈。就是堆栈报出来的错
想请教一下作者 怎么样可以一直测试 比如说挂到服务器上 执行一个小时 或者更久
看一下是不是你电脑的 IP 地址换了?
Chrome 和 IE 访问的都是同一个 IP 地址和 URL 吗?
我怀疑是你的服务器端无法访问到你本地的 selenium server,所以提示 4444 is down.
建议你检查一下这块,比如网关,端口什么的是否有限制,或者直接从服务 Telnet 一下你本地的地址和端口看是否能通
楼主好 我想问一下 公共模块怎么关联到测试集里
公共模块是作为用例的一部分嵌进去的。你可以写一条用例,然后调用公共用例,或者看一下公共用例是不是可以直接关联到用例集里面。
因为这个项目我已经两年多没有在用了,所以有些细节不是很记得了。
在 app/templates/uitest/test_case.html 文件,29 行这个 option 里面改成你要的名字,或者增加 option 就可以了
看起来是你用的 selenium 版本兼容性问题。 你先试试本地直接跑 selenium 是不是能跑起来? 就随便用 python 写个 selenium 的测试脚本,能调起浏览器和打开网页就基本上没问题了
301 个评论和这么多点赞: 这比那个 Java 写接口自动化的好很多了吧,居然没加精
看你的截图,失败的是 验证 的那个步骤,也就是断言失败了。
你可以点开旁边的截图看看具体是什么问题,有可能是你用错了关键字
博主,我部署不上 atxserver2,一直提示 wait-for-db.sh 文件有非法字符,web1 无法启动,这个能解决吗?如果不能的话,我安装 stf,你的项目代码要改吗?
楼上的朋友们,这个项目我已经五年没维护了,所以你们如果遇到问题请尽量自己尝试解决和二次开发,恕我现在没办法帮到你们。 所以请慎重选择这个项目哈,抱歉!
采用 grid,怎样解决文件上传和下载的问题
感谢楼主的开源,后来为了应对公司的需求,在平台编辑的脚本,然后把脚本放到了用 java 实现的本地服务执行,就可以把自动化平台放到公网,本地起个客户端服务,就可以测试网页了,原本的模式自动化平台和 selenium-server 服务之间,不允许有内外网跳转的网络环境,就有所限制