有没有办法——也许是通过监听器——对每个加载的新页面进行截图?截图本身没问题,我可以做到,我只需要一种让它自动发生的方法,这样我就不必在每次点击某些东西之前手动输入 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 类界面
它有很多方法,例如beforeClickOn
、afterClickOn
、beforeNavigateTo
、afterNavigateTo
、beforeFindBy
, afterFindBy
。这些方法将在相应的操作后自动调用,例如:beforeFindBy
和 afterFindBy
在查找元素前后自动调用
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/