我创建了一个Selenium Grid代理,我想记录每个完成的命令,问题是我无法找到一种方法来获取命令的响应,例如在" GetTitle"之后命令我想获得"标题"返回。
答案 0 :(得分:0)
您希望在何处完成此日志记录?如果您尝试在自定义代理服务器上记录此日志,则这些日志仅在运行集线器的计算机上可用。那是你要的吗 ?如果是的话,那么你应该如何做到这一点:
在org.openqa.grid.internal.listeners.CommandListener#afterCommand
的重载变体中(此方法应该在您正在构建的DefaultRemoteProxy
扩展对象中提供),通过读取其实体值从javax.servlet.http.HttpServletRequest
中提取此信息然后将其转换为适当的有效载荷。
以下是afterCommand()
的自定义版本中的beforeCommand()
(或)org.openqa.grid.selenium.proxy.DefaultRemoteProxy
方法的显示方式:
org.openqa.grid.web.servlet.handler.SeleniumBasedResponse ar = new org.openqa.grid.web.servlet.handler.SeleniumBasedResponse(response);
if (ar.getForwardedContent() != null) {
System.err.println("Content" + ar.getForwardedContent());
}
如果那不是您想要的,那么您应该考虑利用EventFiringWebDriver
。请查看以下博客,了解如何使用EventFiringWebDriver
。 EventFiringWebDriver
不需要在网格侧进行自定义,它只需要你使用EventFiringWebDriver
,它会在其中包含一个现有的RemoteWebDriver
对象,你注入的侦听器将会帮助你做到这一点。
EventFiringWebDriver
,而是使用装饰的CommandExecutor
来为您记录所有这些信息。