我正在为在iOS和Android上运行的Web应用程序编写UI自动化。这些测试在远程电话设备上运行。到目前为止,具有相同URL的测试已成功运行Android,但它们在iOS设备上失败。
根本原因: 我有一个测试套件,套件中的每个测试都必须通过身份验证工作流程并导航到测试页面。当我在iPhone Safari上运行测试时,第一个测试执行正常。当第二个测试开始时,初始测试URL直接落在主页上(跳过身份验证部分,驱动程序仍然会搜索用户名,密码字段),因为cookie已经存储在浏览器中。
使用driver.manage.deleteAllCookies()
无济于事。
有什么办法可以自动删除存储在Safari浏览器中的cookie吗?
P.S:测试套件适用于Android平台。技术细节:
测试框架 - Selenium
移动自动化框架 - Appium
设备:iPhone - 版本11(在云上设置内部工具以执行测试套件)
浏览器:Safari
答案 0 :(得分:0)
我相信你可能偶然发现bug in appium for iOS。我相信iOS驱动程序使用javascript获取cookie,这意味着它无法看到带有 httponly 或安全标志的cookie。要确认这一点,请登录您的应用程序,然后在iOS和Android上运行以下代码:
int clear = 0;
int secure = 0;
Set<Cookie> cookies = driver.manage().getCookies();
for (Cookie cookie : cookies) {
if(cookie.isSecure()) {
secure++;
} else {
clear++;
}
}
System.out.println("Found " + secure + " secure cookies");
System.out.println("Found " + clear + " clear cookies");
可以使用远程调试协议而不是javascript来修复Appium中的行为以使用cookie。
解决方法可能需要在每次运行时使用干净的模拟器(慢)或确保在开始测试之前完全注销。
答案 1 :(得分:0)
我也遇到过这种issue
driver.manage.deleteAllCookies()
此方法不适用于Real device(iPhone)Safari。 for Reference:https://github.com/appium/appium/issues/10568。
我已解决此问题:
使用此流程,您可以解决问题。
希望这会对您有所帮助。
祝你好运!!!!