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

标签 java selenium webdriver listener screenshot

有没有办法——也许是通过监听器——对每个加载的新页面进行截图?截图本身没问题,我可以做到,我只需要一种让它自动发生的方法,这样我就不必在每次点击某些东西之前手动输入 screenshto 方法。

我正在查看 WebDriverEventListner 监听器,但它似乎不能真正用于检测任何页面加载,而无需预先指定将被单击的元素/将加载的页面?

最佳答案

您可以通过 EventFiringWebDriver 更轻松地实现这一目标

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

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);

通过实现 WebDriverEventListener 创建一个 WebDriverListener 类界面

它有很多方法,例如beforeClickOnafterClickOnbeforeNavigateToafterNavigateTobeforeFindBy, 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();

            }

        }

类似地,您可以重写上面指定的其他方法,也用于检查标题,如 afterNavigateTo,并在页面标题更改时截取屏幕截图。

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

关于java - 使用 Selenium Webdriver (java) 自动截取每个新页面的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31508461/

相关文章:

javascript - 如何在 Python Selenium 中输入自动填充的文本字段

java - 如何在 Selenium 中使用 CSS 选择器找到 TinyMCE 编辑器的主体?

java - 使用 Webdriver 接受不受信任的 SSL 证书,用于单击菜单选项时打开的窗口

java - 使用 MySQL DB 中的一些数据填充 Swing 表

java - 将 bean 放入 map 中,以按名称从工厂获取 bean

java - 鼠标点击时如何获取二维数组中元素的位置?

java - 如何检查元素何时从一个类移动到另一个类

java - 在 REST Assured 中,如何检查响应中是否存在某个字段?

c# - 是否可以使用 Visual Studio 获取集成测试的代码覆盖率数据?

Java - Selenium - boolean 方法总是返回 false