所以我想要做的就是单击仅在 iOS 模拟器上弹出的对话框(iOS 14.5,Appium Java-Client 7.3.0)。
该对话框来自 Anyline,因为我当然在模拟器上没有摄像头。如果有任何方法可以隐藏此对话框,它也可以解决我的问题,我尝试使用功能但它不起作用。
cap.setCapability("autoAcceptAlerts", false);
cap.setCapability("autoDismissAlerts", false);
选择对话框没问题,我可以检查对话框是否在这里:
@iOSXCUITFindBy(accessibility = "Anyline SDK cutout UI")
public IOSElement anylineDialog;
这是它的样子:
所以下一步就是单击它在开始时工作的 ok 按钮,但现在我什至不能在 Appium Inspector 中选择它了。在我刚刚使用这个之前:
@iOSXCUITFindBy(accessibility = "OK")
public IOSElement okButton;
我不知道为什么它不再工作了,但我仍然可以在 TestProject 的帮助下选择它。我测试了很多不同的选择器,但没有奏效。(此工具也推荐使用accessibility =“OK”的那个)
我总是得到这个异常,我不知道如何修复它,try catch 也不起作用:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
我尝试了这个页面上的东西,我也得到了 OK 按钮作为这个代码片段显示的唯一按钮。
HashMap<String, String> args = new HashMap<>();
args.put("action", "getButtons");
List<String> buttons = (List<String>)driver.executeScript("mobile: alert", args);
同样来自同一个站点,我尝试了相同的结果。
args.put("action", "accept");
args.put("buttonLabel", "OK");
driver.executeScript("mobile: alert", args);
也许这是具体的,但如果有人知道我如何解决它,我将非常感激。