文章目录
说明:
WebDriver属于Selenium体系中用来操作浏览器的一套API,同时,WebDriver也是Python的一个用于实现Web自动化的第三方库。
首先来看一下百度首页的Web页面,如下:
在这张web页面上,我们看到有 输入框、按钮和文字链接,还有图片、页面底部的文字等。自动化要做的就是模拟鼠标和键盘来操作这些元素,或单击,或输入,或鼠标悬停等操作。
操作这些页面元素的前提就是要找到它们,自动化工具不可能像人一样可以通过肉眼就可以分辨这些元素,并且知道它们是干什么用的,那么自动化工具如何找到它们呢?
接下来我们通过前端工具来看一下这些元素的真实面目。
对于谷歌浏览器,我们只需要按 F12 就可以启用开发者工具查看页面元素,如下:
我们可以看到页面上的元素都是由一行行的代码组成的,它们之间是层级关系组织起来的,每个元素有不同的标签名和属性值。WebDriver就是通过这些信息来找到不同的元素的。
WebDriver提供了8种元素定位方法,在Python中,其对应的方法如下:
元素 | 方法 |
---|---|
id | name |
class name | tag name |
link text | partial link text |
xpath | css selector |
find_element_by_id() | find_element_by_name() |
find_element_by_class_name() | find_element_by_tag_name() |
find_element_by_link_text() | find_element_by_partial_tag_name() |
find_element_by_xpath() | find_element_by_css_selector() |
下面是百度首页的前端代码(Chrome开发者工具查看所得)
<!--STATUS OK-->
<html>
<head>…</head>
<body link=”#0000cc”>
<div data-for="result" id="swfEveryCookieWrap" style="width: 0px; height: 0px; overflow: hidden;">...</div>
<script>…</script>
<div id="wrapper" style="display: block;">
<script>
if(window.bds&&bds.util&&bds.util.setContainerWidth){
bds.util.setContainerWidth();}
</script>
<div id=”head”>
<div class=”head_wrapper”>
<div class=”s_form”>
<div class="s_form_wrapper soutu-env-nomac soutu-env-index">
<div id="lg">
<img hidefocus="true" src="//www.baidu.com/img/bd_logo1.png" width="270" height="129">
</div>
<a href="/" id="result_logo" onmousedown="return c({
'fm':'tab','tab':'logo'})">
<img src="//www.baidu.com/img/baidu_jgylogo3.gif" alt="到百度首页" title="到百度首页">
</a>
<form id="form" name="f" action="/s" class="fm">
<input type="hidden" name="ie" value="utf-8">
<input type="hidden" name="f" value="8">