这个标题可能具有一定的误导性,我本意是想澄清下webdriver里的get_attribute()和get_property()的区别。但是webdriver本身也是基于HTML和Javascript的DOM树来进行操作和互动的,所以我索性就用了现在的标题。
Attributes针对HTM代码而言。 我们可以为一个HTML元素,添加一些属性。这些在HTML里定义的HTML元素的属性就是Attribute。通常以‘名称=“值”’的形式出现。比如:
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
例中,type,class,name, id, maxlength, autocomplete就是attributes。
Proprty针对DOM结点而言。Property其实就JS对象的属性,我们可以通过dir()方法去查看该JS对象所有支持的Properties。
我曾经试图找出列有所有支持的Properties的文档,但总是发现搜索到的Properties似乎也不是全部。无奈之下,只能使用JS的dir()方法,期望可以尽可能的发现所有的Properties。但是实在太多,我们也只能过一下常见的。
accessKey
autocomplete
autofocus
checked
childElementCount
className
disabled
draggable
height
width
hidden
id
innerHTML
innerText
lang
name
outHTML
outerText
placeholder
requred
readOnly
size
src
tagName
title
type
textContent
value
style
上面是我列举的一些我认为日常可能会用到的properties。细心的同学可能就会发现properties里有一些属性其实是和attributes是重合的。这其实很正常,因为DOM本来就是根据HTML文件生成的,自然会具备HTML元素的一些属性。
那么我们回来在聊一下webdriver里的get_attribute()和get_property()的区别。
首先试图返回指定attribute的值;如果该attribute也不存在,则返回None。
返回元素的指定property的值;如果该property不存在,则返回None。