Java selenium中的find元素是否检查标记是否已提前关闭?

Java selenium中的find元素是否检查标记是否已提前关闭?,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,我使用selenium方法find element来检查标记是否存在。例如— driver.findElements(By.xpath("//meta[@name='keywords']"); 我不确定标记是否未正确打开或关闭,Selenium是否仍能在网页上找到该元素?如果您的目标是验证网页的HTML,则可以使用W3C标记验证服务。它是一个基于SOAP的服务。只需添加对项目的引用,并在文档中构建一个请求作为示例- 如果要手动检查,只需将所需的URL粘贴到此处:简言之:可能,但不能保证。取决于

我使用selenium方法find element来检查标记是否存在。例如—

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

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

如果您的目标是验证网页的HTML,则可以使用W3C标记验证服务。它是一个基于SOAP的服务。只需添加对项目的引用,并在文档中构建一个请求作为示例-
如果要手动检查,只需将所需的URL粘贴到此处:

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

在long中:selenium的
findElements
方法和suchlink实际上并不检查html,而是检查浏览器的DOM。现在浏览器非常擅长发现构造糟糕的html(缺少结束标记等),因此有可能已经发现标记的错误并将其包含在DOM中。如果是这样,那么selenium将在DOM中找到它;但是,如果浏览器无法理解标记试图说什么,并且没有包含它,那么selenium将找不到它。

selenium只在浏览器提供的DOM上运行元素选择器。一般来说,浏览器会在几乎所有HTML之上创建DOM(元素树)——它是特意构建的,用于处理诸如非闭合对元素、格式错误的HTML等情况。但是每个浏览器的行为可能会有所不同

所以答案很简单,就是否定。Selenium没有检查这一点,它很可能会找到元素,因为浏览器(为Selenium提供数据)有自己的启发式方法来解析HTML,甚至缺少结束元素。因此,从Selenium的角度来看,它看起来可能是完全“有效”且无问题的HTML


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

这实际上不是关于
selenium
。一般来说,浏览器在使HTML格式良好方面做得很好。谢谢Anton!我被要求使用WebDriver。@为了测试,您可以很容易地将其作为WebDriver测试的一部分;您可以使用webdriver导航到正确的页面,然后提取页面源代码,将其提交到W3C标记验证API并检查结果。这比编写自己的代码来验证页面源代码要好得多。我完全同意上面的说法,这也是我的想法,如果我不够清楚,很抱歉。所以基本上我不能完全依靠Selenium来确保标签构造正确。我需要相应地编码它。