在selenium中找到元素是否检查标签是否正确关闭?

时间:2015-05-11 19:19:31

标签: java selenium selenium-webdriver webdriver

我正在使用selenium方法查找元素来检查标签是否存在。对于前 -

driver.findElements(By.xpath("//meta[@name='keywords']");

我不确定标签是否未正确打开或关闭,Selenium是否仍会在网页上找到该元素?

3 个答案:

答案 0 :(得分:1)

如果您的目标是验证页面的HTML,则可以使用W3C标记验证服务。它是一个基于SOAP的服务。只需添加对项目的引用并构建请求作为文档中的示例 - https://validator.w3.org/docs/api.html 如果您想手动检查,只需在此处粘贴所需的网址:https://validator.w3.org/

答案 1 :(得分:1)

Selenium only 运行浏览器提供的DOM上方的元素选择器。通常,浏览器会在几乎任何HTML之上创建DOM(元素树) - 它是故意构建来处理这种情况,因为不是封闭的对元素,格式错误的HTML等。但每个浏览器的行为可能有所不同。 / p>

所以答案就是没有。 Selenium没有对此进行检查,它很可能会找到该元素,因为浏览器(为Selenium提供数据)具有如何解析HTML甚至缺少关闭元素的启发式方法。所以从Selenium的角度来看,它看起来像是完全有效的"和没有问题的HTML。

要检查HTML有效性,我建议使用不同的工具,例如W3 validatorHTML tidy项目。

答案 2 :(得分:0)

简而言之:也许,但不能保证。取决于浏览器。

总之:selenium的findElements方法和这样的链接实际上没有检查html - 他们检查浏览器的DOM。现在浏览器非常擅长弄清楚构造错误的html(缺少结束标记等),因此它有可能弄清楚标记的错误并将其包含在DOM中。如果是这样,那么selenium会找到它(在DOM中);但是如果浏览器无法解决标签试图说的内容并且没有包含它,那么硒就无法找到它。