硒:通过JavaScript刮除所有元素属性会返回错误的结果

时间:2018-08-29 16:27:05

标签: javascript java selenium selenium-webdriver webdriver

我正在使用以下代码通过javascript抓取所有元素属性:

((JavascriptExecutor) driver).executeScript("var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value}; return items;", element);

尽管此主要是仅返回标识有问题元素的属性,但我发现此代码返回的某些属性实际上与所需元素不对应。

要点:

如果您导航到http://google.com并通过(.//input[contains (@role,'combobox')])(或许多其他XPath中的任何一个)识别搜索框,然后执行上述JS代码,它将返回属性(.//input[contains (@class,'gsfi lst-d-f')])实际上与搜索框相对应。实际上,使用FireBug时页面上甚至不存在此属性。

我确实注意到,虽然相似的文本隐藏在页面的样式标签中,但是即使在那儿我也没有找到与该文本完全匹配的文本。无论哪种情况,它仍然与所讨论的元素都不对应。

JS为什么返回此文本,并且有解决方法?

谢谢

0 个答案:

没有答案