WebDriver记录以打印sendKeys数据

时间:2016-11-28 10:40:11

标签: selenium selenium-webdriver

我一直在使用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

1 个答案:

答案 0 :(得分:1)

包含执行,执行,异常等的日志记录信息由execute()类中的RemoteWebDriver方法创建。执行行在命令被触发之前执行,并在接收到响应之后执行。 execute()方法将命令作为字符串,将映射作为参数,其中包含要执行的命令所需的详细信息。

因此,在findElement()的情况下,地图将包含定位器策略(在日志信息中使用),例如id,css等以及要使用的值(日志信息中的值)。在sendKeys()的情况下,只有id(WebElement的内部id)和值(要输入的数据)作为参数发送。这就是您在日志信息中看到的全部内容。

现在RemoteWebElement将定位器详细信息存储在 foundBy字符串私有变量中 - 包含定位器策略和值。此外,RemoteWebElement toString()方法打印出此变量内容。您需要将{2}中的任何一个包含在RemoteWebElement类(在本例中为sendKeys方法)中的参数映射中,该映射将发送到execute()方法,您应该获取详细信息我是对的。