单击 Anyline 对话框上的“确定”按钮时出现 WebDriverException

WebDriverException when clicking the OK button on a Anyline dialog

所以我只想点击仅在 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;

这是它的样子:

所以下一步就是单击它在开始时起作用的确定按钮,但现在我什至不能再在 Appium Inspector 中 select 它了。在我使用这个之前:

@iOSXCUITFindBy(accessibility = "OK")
public IOSElement okButton;

我不知道为什么它不再工作了,但在 TestProject 的帮助下我仍然可以 select 它。 我测试了很多不同的 select or 但它不起作用。 (这个工具也推荐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

我尝试了这些东西 on this page 并且我还得到了 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);

也许这是特定的,但如果有人知道我如何解决它,我将非常感激。

您提到的 iOS 错误已在 Appium 1.22.1 和 2.0.0-beta 中修复。确保你是 运行 这些版本之一,你应该没问题。