Selenium 用于打印sendKeys数据的WebDriver日志记录
我一直在使用Firefox日志,如下所示-Selenium 用于打印sendKeys数据的WebDriver日志记录,selenium,selenium-webdriver,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和CharSeq
((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包含执行、已执行、异常等的日志信息是由
RemoteWebDriver
类中的execute()
方法创建的。执行行在触发命令之前,执行行在收到响应之后。execute()
因此,在使用findElement()
的情况下,映射将包含定位器策略(在日志信息中使用),例如id、css等以及要使用的值(日志信息中的值)。如果是sendKeys()
,则仅将id(WebElement的内部id)和值(要输入的数据)作为参数发送。这就是您在日志信息中看到的全部内容
现在,RemoteWebElement
将定位器详细信息存储在foundBy String私有变量中,该变量包含定位器策略和值。另外,RemoteWebElement
的toString()方法会打印出这个变量的内容。您需要在发送到execute()的RemoteWebElement
类(在本例中为sendKeys
方法)的参数映射中包含这两个参数中的任何一个
method,如果我的回答正确,您应该获得详细信息。About<您需要在RemoteWebElement类的参数映射中包含这两个参数中的任何一个。>我想我读错了,因为sendKeys
方法已经将字符串参数
输入到字段中。当我使用RemoteWebElement
中的toString
方法时,它会得到元素定位器(解决了一个问题),但输入框中要键入的实际内容仍然丢失。要发送的内容在参数映射中以键“value”显示,但它包含一个CharSequence数组,因此toString()方法提供对象地址。您可以在sendKeys()方法中包含此映射中的另一个参数,并使用“value”的字符串表示形式。记录器现在将输出实际值。似乎selenium的当前版本确实在beforeChangeValueOf
API中有charSequence参数-我刚刚将charSequence转换为字符串并打印了值:)