请问是开源的吗
不行
谢谢你的建议,之前遇到这个问题,我就有这方面的意向,但是没有找到比较合适的教程,尝试下载了一个很常见的用于自动化测试的 iOS 的 demo 源代码,但是当时看了还是一头雾水,确实是需要再找找资料把这方面的基础补充一下。
谢谢,我去确认一下这个方面的可能性。
login_tests_json_report = "./outputs/reports"
login_tests_html_report = "./outputs/reports/login"
pytest.main(["-m login", f"--alluredir={login_tests_json_report}", "--clean-alluredir"])
pytest.main(["--lf", f"--alluredir={login_tests_json_report}"])
os.system(f"allure generate {login_tests_json_report} -o {login_tests_html_report} --clean")
os.system(f"allure serve {login_tests_json_report}")
一次 clean alluredir,一次不 clean
另外下面的--clean 不能删
不是,输入新的值,即用 send_keys(),它是在已有的内容后面添加(这确实是 clear 的问题,我也确实可以用其他方法解决)。
但是,我的意思是,我发现无法获取用户在输入框输入的值,并且对 qq 等 app 进行了验证,也问了公司 app 的开发,说输入框中的值存在于 text 中,然而公司的 app 打印出来为空,而 qq 的情况如上面所示(取得是 value 属性的值)。而且输入新的值后,再获取 text,是空的。
我是问的这个情况。
请问为何我去获取这个输入框的 text,会出现 11 楼我说的那种情况?
可以看一下这个 page_source :
<?xml version="1.0" encoding="UTF-8"?><AppiumAUT><XCUIElementTypeApplication type="XCUIElementTypeApplication" name="QQ" label="QQ" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="0">
<XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="0">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="0">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="0">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="0">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="0">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="0">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" accessible="false" x="0" y="0" width="375" height="667" index="0"/>
<XCUIElementTypeImage type="XCUIElementTypeImage" name="登录界面" label="登录界面" enabled="true" visible="false" accessible="true" x="0" y="0" width="375" height="667" index="1"/>
<XCUIElementTypeImage type="XCUIElementTypeImage" enabled="true" visible="true" accessible="false" x="0" y="0" width="375" height="667" index="2"/>
<XCUIElementTypeImage type="XCUIElementTypeImage" enabled="true" visible="false" accessible="false" x="133" y="108" width="109" height="51" index="3"/>
<XCUIElementTypeOther type="XCUIElementTypeOther" name="帐号框" enabled="true" visible="true" accessible="false" x="40" y="190" width="295" height="56" index="4">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" accessible="false" x="40" y="190" width="295" height="56" index="0"/>
**<XCUIElementTypeTextField type="XCUIElementTypeTextField" value="QQ号/手机号/邮箱" name="帐号" label="" enabled="true" visible="true" accessible="true" x="102" y="190" width="170" height="56" index="1"/>**
<XCUIElementTypeButton type="XCUIElementTypeButton" name="帐号列表" label="帐号列表" enabled="true" visible="true" accessible="true" x="292" y="190" width="25" height="56" index="2"/>
<XCUIElementTypeButton type="XCUIElementTypeButton" name="头像" label="头像" enabled="false" visible="false" accessible="false" x="50" y="198" width="40" height="40" index="3">
<XCUIElementTypeImage type="XCUIElementTypeImage" enabled="true" visible="false" accessible="false" x="50" y="198" width="40" height="40" index="0"/>
</XCUIElementTypeButton>
</XCUIElementTypeOther>
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" accessible="false" x="40" y="258" width="295" height="56" index="5">
<XCUIElementTypeSecureTextField type="XCUIElementTypeSecureTextField" value="输入密码" name="密码" label="" enabled="true" visible="true" accessible="true" x="90" y="258" width="195" height="56" index="0"/>
</XCUIElementTypeOther>
<XCUIElementTypeButton type="XCUIElementTypeButton" name="登录按钮" label="登录" enabled="true" visible="true" accessible="true" x="152" y="371" width="71" height="71" index="6"/>
<XCUIElementTypeButton type="XCUIElementTypeButton" name="手机号登录" label="手机号登录" enabled="true" visible="true" accessible="true" x="47" y="585" width="62" height="26" index="7"/>
<XCUIElementTypeButton type="XCUIElementTypeButton" enabled="true" visible="true" accessible="false" x="135" y="593" width="2" height="10" index="8"/>
<XCUIElementTypeButton type="XCUIElementTypeButton" name="找回密码" label="找回密码" enabled="true" visible="true" accessible="true" x="162" y="585" width="51" height="26" index="9"/>
<XCUIElementTypeButton type="XCUIElementTypeButton" enabled="true" visible="true" accessible="false" x="239" y="593" width="2" height="10" index="10"/>
<XCUIElementTypeButton type="XCUIElementTypeButton" name="新用户注册" label="新用户注册" enabled="true" visible="true" accessible="true" x="266" y="585" width="62" height="26" index="11"/>
</XCUIElementTypeOther>
</XCUIElementTypeOther>
</XCUIElementTypeOther>
</XCUIElementTypeOther>
</XCUIElementTypeOther>
</XCUIElementTypeWindow>
<XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="false" accessible="false" x="0" y="0" width="375" height="667" index="1">
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" accessible="false" x="0" y="0" width="375" height="667" index="0"/>
</XCUIElementTypeWindow>
<XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="false" accessible="false" x="0" y="0" width="375" height="667" index="2">
<XCUIElementTypeStatusBar type="XCUIElementTypeStatusBar" enabled="true" visible="false" accessible="false" x="0" y="0" width="375" height="20" index="0"/>
</XCUIElementTypeWindow>
</XCUIElementTypeApplication></AppiumAUT>
加粗部分是我取的元素,我想我应该没有取错?
print("2", driver.find_element_by_ios_predicate('name == "帐号"').text)
关于第二条的补充:
用腾讯 qq 进行测试,也是和我用公司软件测试一样,测试脚本:
sleep(10)
print("1", driver.find_element_by_ios_predicate('name == "帐号"').text)
driver.find_element_by_ios_predicate('name == "帐号"').clear()
print("2", driver.find_element_by_ios_predicate('name == "帐号"').text)
driver.find_element_by_ios_predicate('name == "帐号"').send_keys("123456")
print("3", driver.find_element_by_ios_predicate('name == "帐号"').text)
输出结果:
1 QQ号/手机号/邮箱 # 说明这里text取得是value
2 QQ号/手机号/邮箱 # 我看了app,这里clear无效了
3 # 这个地方,是在默认的qq号后面连着添加的
APP Inpector:
开始怀疑自己是不是真的哪里做的不对?还是这是常见现象
这不是 ios 的自带键盘吗
这就是完整的键盘,上面没有一行,我知道,有的上面有一个 Done,但是我的没有
开发和我都不知道怎么弄
好的,我试试。谢谢你
这两句生成 allure 报告,请问如果注释掉如何生成呢
是我写的哪里不对吗?
你可以看到我上面的问题是你写的方式,但是,遇到了 allure 报告无法获取到前面一次的执行结果的问题
请问 clear 无效的情况遇到过吗
而且对输入框 clear() 无效,appium ios 坑这么多的吗
请问如何设置?我搜到的关于这个的资料比较少。
谢谢!!
尝试了 element.send_keys("\n") 也没有用。
我尝试了,但是 allure 报告中只会出现第二次的部分错误的测试用例,不会出现所有的测试用例。如( https://testerhome.com/topics/30265 )所展示的报告。请问是我的命令哪里写的不对吗,还是这是 pytest 的一个缺陷。
pytest-xdist 我没有注意过,因为我觉得 ui 自动化测试应该无法实现分布式,参数--looponfail 可以直接用吗,另外,最重要的是,这个可以和 allure 结合嘛
我想问一下,怎么实现所有用例跑完之后再将失败了的用例重跑一次?我发现 pytest-rerunfailures 是一个用例失败之后马上重跑的
不好意思,被网上的资料误导了,我懂了,插件 pytest-repeat 没有 reruns 这个参数