selenium中文文档_贝程学院:Selenium与DOM

selenium中文文档_贝程学院:Selenium与DOM_第1张图片

一.为什么学习DOM

Selenium需要定位页面元素,而DOM 代表了整个 HTML 文档的结构,使用 DOM对象可以访问 DOM 中的节点。 WebDriver甚至可以通过执行任意的返回值为 DOM 对象的 JavaScript 语句来查找元素,所熟悉DOM对于Selenium处理页面元素来说如虎添翼。

二.什么是DOM

DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中导航寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。HTML DOM是HTML Document Object Model(文档对象模型)的缩写,HTML DOM则是专门适用与HTML/XHTML的文档对象模型。熟悉软件开发的人员可以将HTML DOM理解为网页的API。它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。 例如JavaScript就可以利用HTMLDOM动态的修改网页。“W3C的文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。W3CDOM标准被分为 3 个不同的部分:核心 DOM - 针对任何结构化文档的标准模型;XML DOM - 针对 XML 文档的标准模型;HTML DOM - 针对 HTML 文档的标准模型。 DOM将HTML和XML文档映射成一个由不同节点组成的树型机构。俗称DOM树。每种节点都对应于文档中的信息或标记,节点有自己的属性和方法,并和其他节点存在某种关系,节点之间的关系构成了节点层次。

三.初识HTMLDOM

因为python没有很直观的处理HTML DOM的库,为了便于学习所以我们用javascript来进行解析处理,本部分学习用js代码来完成。HTML DOM 是 W3C 标准(是 HTML 文档对象模型的英文缩写,Document Object Model for HTML)。它定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法。通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。HTML DOM 独立于平台和编程语言,它可被任何编程语言诸如 Java、JavaScript 和 Python使用。

下面是HTML源码:

 
   
    HTML DOM学习 
   
   
    

DOM构成

dom

DOM树结构:

selenium中文文档_贝程学院:Selenium与DOM_第2张图片
  • DOM模型将整个文档HTML文档看成一个树形结构,并用document对象表示该文档。每个载入浏览器的HTML文档都会成为Document对象。Document对象使我们可以从脚本中对HTML页面中的所有元素进行访问。
  • DOM规定文档中的每个成分都是一个节点(Node):
    • 文档节点(Document):代表整个文档
    • 元素节点(Element):文档中的一个标记
    • 文本节点(Text):标记中的文本
    • 属性节点(Attr):代表一个属性,元素才有属性

当浏览器载入HTML文档时,浏览器解释其代码,按照html的载入顺序在内存中创建这些对象,对象创建完毕后浏览器为这些对象提供了专供javascript脚本可用的可选属性,方法和处理程序。通过这些属性,方法,处理程序,web开发人员很好的完成相应功能的实现。

四.HTMLDOM节点

在DOM中,html文档各个节点被视为各种类型的Node对象,每个Node对象都有自己的属性和方法,利用这些属性和方法可以通过遍历整个文档,由于HTML的复杂性,DOM定义了nodeType来表示节点的类型。

在W3C DOM中,每个容器,独立的元素或者文本块都可以被看作是一个节点,其对应的节点存在父子关系,同时该节点树遵循HTML的结构化本质,如元素包括元素,他们有分别包含了不同的节点。在HTMLdom中有六种不同的节点类型:

selenium中文文档_贝程学院:Selenium与DOM_第3张图片

HTML DOM树中有元素节点,属性节点,文本节点分别介绍:

A. 元素节点

在HTML文档中,各个HTML元素如

等构成了文档结构模型的一个个节点对象,在节点树中又构成了一个个节点,元素可以包含其他元素,例如HTML列表标签生成的列表元素,

你可能感兴趣的:(selenium中文文档)