org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
...
但是換成By.name()的時候就沒問題。
代碼爲:
(1)MyEventListener.java
package com.aikachin.selenium;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.AbstractWebDriverEventListener;
/**
* @Author: AIkachin
* @Description:
* @Date: Created in 17:21 2017/10/18 0018.
* @Modified by :
*/
public class MyEventListener extends AbstractWebDriverEventListener {
@Override
public void afterNavigateTo(String url, WebDriver driver) {
System.out.println("After navigate to : " + url);
}
@Override
public void afterNavigateBack(WebDriver driver) {
System.out.println("After navigate back to : " + driver.getCurrentUrl());
}
@Override
public void afterClickOn(WebElement element, WebDriver driver) {
System.out.println("After click on : " + element.getText());
}
}
(2)testWebDriverEvent.java部分代碼
使用By.name()就沒問題
@Test public void testWebDriverEvent() throws Exception { driver = new FirefoxDriver(); EventFiringWebDriver eventFiringWebDriver = new EventFiringWebDriver(driver); MyEventListener myEventListener = new MyEventListener(); eventFiringWebDriver.register(myEventListener); eventFiringWebDriver.get(URLofDouban); Thread.sleep(1000); eventFiringWebDriver.get(URLofBaidu); eventFiringWebDriver.navigate().back(); Thread.sleep(1000); eventFiringWebDriver.findElement(By.xpath(".//*[@id='anony-nav']/div[2]/form/span[2]/input")).click(); // eventFiringWebDriver.findElement(By.name("q")).click(); }