3
org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - おそらくページが検索されてから変更されました
コマンドの継続時間またはタイムアウト: 30.02 秒
このエラーに関するドキュメントについては、http://seleniumhq.org/exceptions/stale_element_reference.html にアクセスしてください。
ビルド情報: バージョン: '2.18.0'、リビジョン: '15704'、時間: '2012-01-27 17:37:17'
システム情報: os.name: 'Windows XP'、os.arch: 'x86'、os.version: '5.1'、java.version: '1.6.0_17'
ドライバー情報: driver.version: RemoteWebDriver
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド)
    sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39) で
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) で
    java.lang.reflect.Constructor.newInstance (Constructor.java:513) で
    org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:147) で
    org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:113) で
    org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:439) で
    org.openqa.selenium.remote.RemoteWebElement.execute (RemoteWebElement.java:231) で
    org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:72) で
    com.harleydavidson.modelyear.selenium2.testcase.ImageTest.checkColor(ImageTest.java:79)で
    com.harleydavidson.modelyear.selenium2.testcase.ImageTest.chooseModel(ImageTest.java:62)で
    com.harleydavidson.modelyear.selenium2.testcase.ImageTest.testImage(ImageTest.java:28)で
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で
    java.lang.reflect.Method.invoke(Method.java:597) で
    org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) で
    org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) で
    org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:42) で
    org.junit.internal.runners.statements.InvokeMethod.evaluate (InvokeMethod.java:20) で
    org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:28) で
    org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:30) で
    org.junit.runners.ParentRunner.runLeaf (ParentRunner.java:263) で
    org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:68) で
    org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:47) で
    org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) で
    org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) で
    org.junit.runners.ParentRunner.runChildren (ParentRunner.java:229) で
    org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) で
    org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) で
    org.junit.runners.ParentRunner.run(ParentRunner.java:300) で
    org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run (JUnit4TestReference.java:49) で
    org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) で
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:467) で
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:683) で
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java:390) で
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:197) で
原因: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: キャッシュに要素が見つかりません - ページが検索されてから変更された可能性があります
ビルド情報: バージョン: '2.18.0'、リビジョン: '15704'、時間: '2012-01-27 17:37:17'
システム情報: os.name: 'Windows XP'、os.arch: 'x86'、os.version: '5.1'、java.version: '1.6.0_17'
ドライバー情報: driver.version: 不明
    (resource://fxdriver/modules/atoms.js:9557)
    (resource://fxdriver/modules/atoms.js:10153)
    で。
    で。
    で。

Mycodeはこのように書かれています。連続動作用です。最初のアクションは、初めてループ内で正常に機能しています。2 番目のループが開始されると、 StaleElementReferenceException がスローされます。だから私を助けてください、複数のアクションを1つずつ実行する方法..

List<WebElement> colorButtons = driver.findElements(By.xpath("/html/body/div[4]/div[2]/div/div[4]/div[2]/div/img"));

for(WebElement colorButton : colorButtons)
{
    colorButton.click();
}

よろしくナルシ

4

2 に答える 2

4

基本的StaleElementReferenceExceptionに、ページがまだロードされているか、コンテンツが変更されているときに発生します。そのため、いくつかの要素がそこにありましたが、何かが発生し、その要素が DOM になくなりました。

colorButton を手動でクリックすると、ページはどうなりますか? ページの読み込みが開始されるか、何かが表示されることを期待しています。

おそらく、待機を追加するか、ページの別の場所をクリックする必要があります

于 2012-04-12T08:35:05.163 に答える
0

あなたはこれを試すことができます:

List<WebElement> elements = driver.findElements(By. xpath abc));

for(int i=0; i<elements.size(); i++){

    WebElement ele = null;

    if(i<3){

    List<WebElement> elements2 = driver.findElements(By. xpath abc);
    ele = elements2.get(i);
}
于 2012-06-28T16:16:09.340 に答える