我正在使用 Selenide 编写浏览器测试。在这个测试中,我必须切换到不同的 iframe 几次。当我用 Chrome 运行这个测试时,它运行良好。但是当我使用 phantomjs 时,有时它可以工作,有时它会失败。我看不出它失败的原因。
这是我收到的错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.codeborne.selenide.impl.CollectionElement.getWebElement(CollectionElement.java:29)
at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:82)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:56)
at com.sun.proxy.$Proxy1.getAttribute(Unknown Source)
at automationFramework.PegaRulesetCheck.main(PegaRulesetCheck.java:8)
java 代码很长,所以我只会展示它失败的部分。
79. /*Get the list of iframes*/
80. List<SelenideElement> myIframes = $$("iframe");
81. System.out.println("Switching to iframe " + myIframes.get(myIframes.size() - 1).getAttribute("name"));
所以出于某种原因,有时它会失败,有时它会起作用。很随意。我怀疑第 80 行创建 iframe 列表并不总是有效。可能是在动态创建其他 iframe 之前创建了列表,因此无法切换到其他 iframe。但我不知道如何解决这个问题。