使用Selenium Webdriver(java)自动截取每个新页面的屏幕截图

And*_*rio 3 java selenium screenshot webdriver listener

有没有办法 - 也许有一个听众 - 截取每个加载的新页面的截图?截取屏幕本身没有问题,我可以这样做,我只需要一种方法让它自动发生,所以我不必在每次点击某些内容之前手动输入screenshto方法.

我正在看WebDriverEventListner监听器,但它似乎无法真正用于检测任何页面加载而没有事先指定将被加载的元素/将加载的页面?

Vic*_*cky 5

您可以通过EventFiringWebDriver更轻松地实现此目的

EventFiringWebDriver是一个包含任意WebDriver实例的包装器,它支持注册WebDriverEventListener,例如用于记录目的.

WebDriver driver = new FirefoxDriver();
//create an object of EventFiringWebDriver and pass the driver instance
EventFiringWebDriver wd = new EventFiringWebDriver(driver);
//create an object of  class WebDriverListener and pass the driver instance
WebDriverListener eventListener = new WebDriverListener(driver);
wd.register(eventListener);
Run Code Online (Sandbox Code Playgroud)

通过实现WebDriverEventListener接口创建WebDriverListener类

它有很多方法,如beforeClickOn,afterClickOn,beforeNavigateTo,afterNavigateTo,beforeFindBy,afterFindBy.这些方法会自动相应的行动,除权后调用:beforeFindByafterFindBy之前和发现的元素后自动调用

   String title=""; //initially keep title empty
    //will automatically be called after click on an element
    public void afterClickOn(WebElement element, WebDriver driver) {

            //title is not equal to previous page title

            if(driver.getTitle()!=title){

            //take screenshot

            //assign the current title to string title
            title=driver.getTitle();

            }

        }
Run Code Online (Sandbox Code Playgroud)

类似地,你可以覆盖上面指定的其他方法,也可以像afterNavigateTo一样检查标题,并在页面标题发生变化时截取屏幕截图.

希望这有助于你...如果你需要任何进一步的帮助,请回来