我一直在使用Firefox日志记录 -
((FirefoxDriver) webDriver).setLogLevel(Level.INFO);
这让我记录了以前的所有浏览器操作 -
INFORMATION: Executed: [057a3eaa-2878-454b-bd52-89f7053e32cc, findElement {using=xpath, value=//input[contains(@id,'_j_username')]}]
但sendKeys操作使用id和CharSequence对象记录隐藏信息 -
INFORMATION: Executing: sendKeysToElement [057a3eaa-2878-454b-bd52-89f7053e32cc, sendKeysToElement {id={17d0dee8-81e5-a741-975d-c7be4612f2ce}, value=[Ljava.lang.CharSequence;@1ce858f9}]
更有用的信息是要发送到浏览器的元素定位器和测试数据。如何从浏览器日志记录中准确获取此信息?
我在selenium 2.53.1
答案 0 :(得分:1)
包含执行,执行,异常等的日志记录信息由execute()
类中的RemoteWebDriver
方法创建。执行行在命令被触发之前执行,并在接收到响应之后执行。 execute()
方法将命令作为字符串,将映射作为参数,其中包含要执行的命令所需的详细信息。
因此,在findElement()
的情况下,地图将包含定位器策略(在日志信息中使用),例如id,css等以及要使用的值(日志信息中的值)。在sendKeys()
的情况下,只有id(WebElement的内部id)和值(要输入的数据)作为参数发送。这就是您在日志信息中看到的全部内容。
现在RemoteWebElement
将定位器详细信息存储在 foundBy字符串私有变量中 - 包含定位器策略和值。此外,RemoteWebElement
的 toString()方法打印出此变量内容。您需要将{2}中的任何一个包含在RemoteWebElement
类(在本例中为sendKeys
方法)中的参数映射中,该映射将发送到execute()
方法,您应该获取详细信息我是对的。