不难发现其 id 属性是“kw”,因此可以使用 id 来进行元素定位。driver 表示为创建的一个 webdriver 对象,代码为:
element = driver.find_element_by_id("kw")
复制代码
2.2 通过link text属性进行定位
访问网页的时候,我们可以通过超链接的方式链接到下层的网页或者其他网站,通过查找网页的 link text 属性,模拟对链接文本的单击操作就可以实现自动地访问。该定位方法仅适用于文本链接的场景,通过元素标签对应的文本信息来定位元素,相对其他的元素定位方法,适用的场景比较有限。
例如百度首页上方“新闻”文字的 link text 属性是 “新闻”,可以使用该属性来进行元素定位。
代码为:
element = driver.find_element_by_link_text("新闻")
复制代码
2.3通过XPath属性进行定位
XPath 是英文 XML Path Language 的简称,即 XML 文档路径的定位语言。XPath 基于 XML 的树状结构进行信息的查找,它使用路径表达式定位 XML 文档中的节点或节点集。通过记录由根节点到该节点经过的所有节点的 tagName 等信息,可以形成唯一一条到达该节点的路径表达式。Selenium可以将这种强大的语言应用在 Web 页面元素的定位中,定位的方式通常有绝对路径和相对路径两种。具体如下: (1)绝对路径
绝对路径表达式以“/”开头,它从树形结构的根节点开始,沿着树结构一直到目标节点结束。当元素层级很深的时候,绝对路径表达式会过长,阅读性不好,既影响查找的效率又很难进行维护,因此一般不建议使用。 (2)相对路径
相对路径表达式以“//”开头,它从某个节点开始,沿着树结构一直到目标节点结束。目前常用的浏览器谷歌、火狐等都提供了 XPath 的工具,可以方便地获取XPath 路径。例如百度搜索框的 XPath 属性可以通过定位到该元素,在该元素的 HTML 代码使用快捷菜单“Copy-> Copy XPath”获得 ,其属值为“//*[@id="kw"]”。“//”表示当前页面某个目录下;“*”是通配符,表示匹配任意的节点;“[@id="kw"]”表示匹配的这个元素的 id 属性值等于 kw。 2.4通过CSS属性进行定位
层叠样式表 CSS 是英文 Cascading Style Sheets 的简称,是一种用来表现 HTML 或 XML 等文件样式的计算机语言,它也可以通过浏览器工具查询相关元素的CSS,从而进行元素定位。例如百度搜索框的 CSS 属性可以通过定位到该元素,在该元素的 HTML 代码使用快捷菜单“Copy -> Copy selector”获得,其属性值为#kw。代码可以写成:
element = driver.find_element_by_css_selector("#kw")