我有好几个测试同事从测试转了产品,和他们交流了下,转产品之前一定要对产品有热情,感兴趣,然后再转。而不是说觉得测试工作无聊转到产品,产品的工作量不一定测试工作量低,各种画交互,设计需求,无止境的需求评审会,写 PPT 汇报 Boss,和研发撕逼等等。所以要看你自己转产品的动机是什么?
从你的第一张截图报错信息来看,是说你 css 定位(css selector)的方式不支持。你点击报错信息跳转代码,检查下里面哪个地方使用了 css 定位的。
谢谢支持!
自己坐个沙发。
你那个直接获取元素的宽高是不准确的,你要获取滑动的坐标点位置,然后去滑动。
坐标点获取可以使用绝对坐标或者相对坐标,我的博客有关于滑动的实践,你可以参考一下:
Appium 服务是否指定 pb 端口。我的博客有详细的操作实践,可以参考:Appium 多进程并发测试
什么时候开课啊,是网络课程吗?
目前使用了一种替代方案实现了缩放,结合 MultiAction 和 TouchAction。
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
# 放大
def zoom():
action1 = TouchAction(driver)
action2 = TouchAction(driver)
zoom_action = MultiAction(driver)
action1.press(x=x*0.4, y=y*0.4).move_to(x=x*0.1, y=y*0.1).wait(500).release()
action2.press(x=x*0.6, y=y*0.6).move_to(x=x*0.8, y=y*0.8).wait(500).release()
print('start zoom...')
zoom_action.add(action1, action2)
zoom_action.perform()
# 缩小
def pinch():
action1=TouchAction(driver)
action2=TouchAction(driver)
pinch_action=MultiAction(driver)
action1.press(x=x*0.1, y=y*0.1).move_to(x=x*0.4, y=y*0.4).wait(500).release()
action2.press(x=x*0.8, y=y*0.8).move_to(x=x*0.6, y=y*0.6).wait(500).release()
print("start pinch...")
pinch_action.add(action1, action2)
pinch_action.perform()
补充一下测试环境:
你用的是什么模拟器啊,建议你重启下 Appium 服务和模拟器看看。
使用 appium-doctor 先做个全面体检吧:
1.安装 appium-doctor: npm install appium-doctor -g
2.在控制台输入命令:appium-doctor 看到如下提示说明整体环境配置成功。
C:\Users\Shuqing>appium-doctor
info AppiumDoctor Appium Doctor v.1.4.3
info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor ✔ The Node.js binary was found at: D:\program files\nodejs\node.exe
info AppiumDoctor ✔ Node version is 6.11.3
info AppiumDoctor ✔ ANDROID_HOME is set to: E:\Andriod_sdk
info AppiumDoctor ✔ JAVA_HOME is set to: C:\Program Files\Java\jdk1.8.0_05
info AppiumDoctor ✔ adb exists at: E:\Andriod_sdk\platform-tools\adb.exe
info AppiumDoctor ✔ android exists at: E:\Andriod_sdk\tools\android.bat
info AppiumDoctor ✔ emulator exists at: E:\Andriod_sdk\tools\emulator.exe
info AppiumDoctor ✔ Bin directory of %JAVA_HOME% is set
info AppiumDoctor ### Diagnostic completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor
这个是由于你的 toast 内容为中文,由于字符编解码问题导致不能识别,需要在代码顶部写注释如下即可
# coding=utf-8
站在测试角度我觉得选自己最能上手的语言完成就好,就拿我之前公司产品来说底层是 C,C++ ,应用层是 C# 来开发的。我不能能花大量时间把 C++,C# 语言学习精通(而且光 C++ 这门语言门槛就不低了)。
首先将各个功能模块进行独立封装,比如封装登录操作 def login():, 退出操作:def logout():
。伪代码如下:
def login():
def logout():
然后你接下来要设计的测试用例是先登录再退出,就可以再封装一个方法比如 def test_loginout_action() 在这个方法先调用登录,再调用退出。
def test_loginout_action()
def login():
def logout():
外包现在确实不值得去了,最主要还是扎扎实实提高自身实力。
身体是革命的本钱。
繁体字,台湾同胞吗?
好的,知道了。谢谢!
基于楼上的答案,这里封装为一个方法如下:
def kill_appiumServer(self,port):
#查找对应端口的pid
cmd_find='netstat -aon | findstr %s' %port
print(cmd_find)
result = os.popen(cmd_find)
text = result.read()
pid=text[-5:-1]
#执行被占用端口的pid
cmd_kill='taskkill -f -pid %s' %pid
print(cmd_kill)
os.popen(cmd_kill)
appium desktop 都是封装好的,无法使用命令来启动。另外想问一下,你那边关闭 appium 服务是怎么实现的?是用 taskkill /f 直接全部关闭 node.exe 进程还是其他方式呢?
将 stdout=stdout=subprocess.PIPE 改为:stdout=open('E:/logs.log','a') 就可以了。
是我们公司的一个智能家居事业部的指纹锁,3000 多一把。具体就不说品牌名称了(怕被 HR 看到请去喝茶。。)老板朋友出于情义买了一把,结果出了这个闹剧,客户电话还打不通。老板把相关负责人骂了一顿,太打脸了。
还有看似高大上的指纹锁,结果客户买了晚上按指纹进不了家门,求客户心理阴影面积。。。