Le sélénium ERREUR : vicié de référence de l'élément: l'élément n'est pas attaché à la page du document
Je reçois cette erreur, je suis besoin de test de sorte qu'il peut-être mon code, mais je ne suis pas sûr.
Voici mon code:
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "C:\\selenium-2.44.0\\chromedriver.exe");
// System.setProperty("webdriver.ie.driver", "C:\\selenium-2.44.0\\IEDriverServer.exe");
WebDriver driver = new ChromeDriver();
// WebDriver driver = new InternetExplorerDriver();
// WebDriver driver = new FirefoxDriver();
driver.get("https://multichannel-custom-qa.Support/");
driver.findElement(By.id("userID")).sendKeys("REH01");
driver.findElement(By.name("j_password")).sendKeys("YE02year");
driver.findElement(By.name("action")).submit();
String tagName = "";
driver.findElement(By.linkText("Workbench")).click();
WebElement searchBox;
searchBox = driver.findElement(By.xpath("//input[@type='text']"));
searchBox.sendKeys("X1508706");
searchBox.findElement(By.cssSelector("css=button.btn.btn-default")).click();
Thread.sleep(5000);
searchBox.findElement(By.cssSelector("css=button.btn.btn-default"));
searchBox.click();
WebElement link;
link = driver.findElement(By.linkText("X1508706"));
link.click();
Thread.sleep(5000);
Et voici l'erreur:
Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
(Session info: chrome=39.0.2171.95)
(Driver info: chromedriver=2.12.301325 (962dea43ddd90e7e4224a03fa3c36a421281abb7),platform=Windows NT 6.1 SP1 x86) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 214 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:03:00'
System info: host: 'C9090DEF19ED258', ip: '172.22.46.117', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_20'
Session ID: e3c034f27280c888088da4ba7922cdee
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=C:\Users\kxh8178\AppData\Local\Temp\scoped_dir8948_22544}, rotatable=false, locationContextEnabled=true, mobileEmulationEnabled=false, version=39.0.2171.95, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, applicationCacheEnabled=false, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:89)
at driverTest.tests.main(tests.java:33)
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr.. Mais, à partir de votre code, il semble vous essayez de cliquer sur le meme element deux fois. Et, probablement, le premier clic sur l'élément de résultats dans un rafraichissement de la page ou quelque chose, résultant dans les DOM, ce qui explique que dans StaleElementReferenceException.
Ci-dessous l'extrait de code semble être le coupable:
Comme vous pouvez le voir, à la Fois le code "//1 et//2" effectuer la même action sur l'élément. Si vous supprimez l'un d'eux, je pense que votre problème sera résolu.
css=button.btn.btn-default
avec seulementbutton.btn.btn-default
comme laclassname
du bouton, je présume. L'ajout decss
n'est pas la façon de définir uncssSelector
.J'ai édité mon code ci-dessus en conséquence. Veuillez vérifier si cela fonctionne pour vous.utiliser ce code, attendre jusqu'à ce que l'élément est attaché: