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"));
そのため、何らかの理由で失敗することもあれば、うまくいくこともあります。非常にランダム。iframe のリストを作成する 80 行目は、常に機能しているとは限りません。他の iframe が動的に作成される前にリストが作成される可能性があるため、他の iframe に切り替えることはできません。しかし、これを修正する方法がわかりません。