2016-04-28 77 views
0

我正在写与硒自动化,则需要跟踪的一切,我发现AbstractWebDriverEventListenerEventFiringWebDriver样品,然后手动,但事件不火。有一些工作示例可以查看或在下面发生了什么错误?硒的Java AbstractWebDriverEventListener跟踪事件不火

//+++++++++++++++++++++++++++++++++++++++++++++++++ 
package fooautoweb; 
import foowebtools.EFooBrowserType; 
import foowebtools.FooBrowser; 
public class FooAutoWeb { 
    public static void main(String[] args) throws Exception { 
     FooBrowser bw = FooBrowser.getInstance(EFooBrowserType.FIREFOX); 
     if(bw.gotoUrl("https://www.google.com/ncr")){ 
      System.out.println("equal!"); 
     } 
     System.out.println(bw.getCurrentUrl()); 
     bw.close(); 
     bw = null; 
    } 
} 
//+++++++++++++++++++++++++++++++++++++++++++++++++ 

//+++++++++++++++++++++++++++++++++++++++++++++++++ 
package foowebtools; 
public enum EFooBrowserType { 
    FIREFOX 
} 
//+++++++++++++++++++++++++++++++++++++++++++++++++ 

//+++++++++++++++++++++++++++++++++++++++++++++++++ 
package foowebtools; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.support.events.AbstractWebDriverEventListener; 
public class FooBrowserListener extends AbstractWebDriverEventListener { 
    //------------------------------------------------- 
    @Override 
    public void beforeNavigateTo(String url, WebDriver driver) { System.out.println("Before navigating to: '" + url + "'"); } 
    //------------------------------------------------- 
    @Override 
    public void afterNavigateTo(String url, WebDriver driver) { System.out.println("Navigated to:'" + url + "'"); } 
    //------------------------------------------------- 
    @Override 
    public void beforeChangeValueOf(WebElement element, WebDriver driver) { 
     String msg = "Value of the:" + element.toString() + " before any changes made" 
     System.out.println(msg); 
    } 
    //------------------------------------------------- 
    @Override 
    public void afterChangeValueOf(WebElement element, WebDriver driver) { System.out.println("Element value changed to: " + element.toString());} 
    //------------------------------------------------- 
    @Override 
    public void beforeClickOn(WebElement element, WebDriver driver) { System.out.println("Trying to click on: " + element.toString()); } 
    //------------------------------------------------- 
    @Override 
    public void afterClickOn(WebElement element, WebDriver driver) { System.out.println("Clicked on: " + element.toString()); } 
    //------------------------------------------------- 
    @Override 
    public void beforeNavigateBack(WebDriver driver) { System.out.println("Navigating back to previous page"); } 
    //------------------------------------------------- 
    @Override 
    public void afterNavigateBack(WebDriver driver) { System.out.println("Navigated back to previous page"); } 
    //------------------------------------------------- 
    @Override 
    public void beforeNavigateForward(WebDriver driver) { System.out.println("Navigating forward to next page"); } 
    //------------------------------------------------- 
    @Override 
    public void afterNavigateForward(WebDriver driver) { System.out.println("Navigated forward to next page"); } 
    //------------------------------------------------- 
    @Override 
    public void onException(Throwable error, WebDriver driver) { System.out.println("Exception occured: " + error); } 
    //------------------------------------------------- 
    @Override 
    public void beforeFindBy(By by, WebElement element, WebDriver driver) { System.out.println("Trying to find Element By : " + by.toString()); } 
    //------------------------------------------------- 
    @Override 
    public void afterFindBy(By by, WebElement element, WebDriver driver) { System.out.println("Found Element By : " + by.toString()); } 
    //------------------------------------------------- 
    @Override 
    public void beforeScript(String script, WebDriver driver) { /* non overridden methods of WebListener class */ } 
    //------------------------------------------------- 
    @Override 
    public void afterScript(String script, WebDriver driver) { /* non overridden methods of WebListener class */ } 
    //------------------------------------------------- 
} 
//+++++++++++++++++++++++++++++++++++++++++++++++++ 

//+++++++++++++++++++++++++++++++++++++++++++++++++ 
package foowebtools; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.events.EventFiringWebDriver; 
public class FooBrowser implements AutoCloseable { 
    //------------------------------------------------- 
    private WebDriver _browser; 
    private FooBrowserListener _bevtlistener; 
    private EventFiringWebDriver _bevtfirer; 
    //------------------------------------------------- 
    public static FooBrowser getInstance(EFooBrowserType eFooBrowserType) { 
     FooBrowser bwi = new FooBrowser(); 
     bwi._browser = new FirefoxDriver(); 
     bwi._bevtfirer = new EventFiringWebDriver(bwi._browser); 
     bwi._bevtlistener = new FooBrowserListener(); 
     bwi._bevtfirer.register(bwi._bevtlistener); 
     return bwi; 
    } 
    //------------------------------------------------- 
    public boolean gotoUrl(String url) { 
     boolean reached; 
     this._browser.get(url); 
     reached = (url.equals(this.getCurrentUrl())); 
     return reached; 
    } 
    //------------------------------------------------- 
    public String getCurrentUrl() { 
     return this._browser.getCurrentUrl(); 
    } 
    //------------------------------------------------- 
    @Override 
    public void close() throws Exception { 
     if (this._browser != null) { 
      this._browser.close(); 
      this._browser = null; 
     } 
    } 
    //------------------------------------------------- 
} 
//+++++++++++++++++++++++++++++++++++++++++++++++++ 

回答

0

只需使用this._bevtfirer,而不是this._browser.get this._browser(URL);行和事件被解雇。只需使用this._bevtfirer.get(url);