如何使用Selenium操纵浏览器打开网页

这是《快速掌握Python Selenium Web自动化》的第2篇

01

简单的使用Selenium

如果完成了上一篇的学习内容,安装好了Python下的Selenium模块,同时下载了合适的浏览器驱动程序,那么我们就可以在Python中使用Selenium了。

如果没有的,请回到第一篇文章学习:

快速掌握Python Selenium Web自动化:搭建Selenium环境

先来看这样一个例子:

# coding:utf-8'''
    @author:州的先生
    @site:zmister.com
    @微信公众号:州的先生
'''from selenium import webdriver

driver = webdriver.Chrome(executable_path=r"D:\chromedriver_win32\chromedriver.exe")
driver.get('http://www.baidu.com')
inputs = driver.find_element_by_id('kw')
inputs.clear()
inputs.send_keys("州的先生")
print(driver.title)

运行上述代码,我们的电脑会自动启动一个Chrome浏览器,并打开百度的首页,接在定位百度的输入框,在其中输入“州的先生”,最后在控制台上输入网页的标题:

02

第一个代码解释

在上面这个程序里面,我们首先从selenium中导入和webdriver子模块,webdriver提供了所有的浏览器驱动程序的实现调用方式:

from selenium import webdriver

在当前版本的selenium中,webdriver实现了绝大多数浏览器的接口:

接下来,我们实例化了一个Chrome浏览器的webdriver:

driver = webdriver.Chrome(executable_path=r"D:\chromedriver_win32\chromedriver.exe")

在Chrome()方法中,我们通过executable_path指定了之前下载好的chromedriver.exe的路径。

driver的get()方法将操纵浏览器打开一个指定的URL,这一步将等待页面完全加载完成:

driver.get("http://www.baidu.com")

在等待页面加载完成之后,我们使用find_element_by_id()方法通过元素的ID来定位和查找页面输入框元素。

在selenium中,webdriver提供了很多个方法来查找元素,其方法的名称都为find_element_by_ *:

inputs = driver.find_element_by_id('kw')

在通过输入框的id值定位到百度首页的输入搜索框之后,我们接着使用clear()方法来清除输入框中的内容(虽然输入框中并没有内容),然后使用send_keys()方法,将一个字符串发送到输入框中:

inputs.clear()inputs.send_keys("州的先生")

最后,我们将页面的标题打印了出来:

print(driver.title)

这样,我们就使用Selenium完成了一个简单的网页自动化操作。

03

总结

本篇,我们通过一个简单的示例——操纵Chrome浏览器打开百度首页,在输入框中输入搜索词,完成了Selenium的初步介绍。Selenium还有更多的用法,在接下来的篇幅中我们会一一介绍到。

下一篇,我们将会介绍在Selenium中进行元素定位。

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2018-04-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LIN_ZONE

vue文件中引入外部js

2103
来自专栏沈唁志

几个实用的 WordPress 代码片段

1233
来自专栏Flutter入门到实战

Android Studio使用Vector创建矢量图并加载

3.选择Local file,然后选择SVG图形路径,点next --> finish 就好了。具体如图所示。

701
来自专栏王磊的博客

eclipse打开文件所在目录

设置 添加扩展工具,添加步骤如下: Run-->External Tools-->External Tools Configurations... new 一个...

2809
来自专栏Android干货

Android Studio 之 注释模板

3017
来自专栏抠抠空间

DropZone(文件上传插件)

2010
来自专栏守候书阁

vue插件开发练习--实用弹窗

上回说了组件(vue组件开发练习--焦点图切换)的一个练习项目,这次换下口味,说下vue的插件练手的项目。相对于现在之前的焦点图切换的组件,这个可能就更简单了,...

742
来自专栏小狼的世界

如何在iOS 7.0中隐藏状态栏

使用Cordova做了一个小项目,在原来iOS6的时候显示挺好,升级为iOS7后,每次App启动后都会显示状态栏,而且状态栏和App的标题栏重叠在一起,非常难看...

632
来自专栏Petrichor的专栏

pycharm: 调用自定义库 报"Unresolved reference"

有时候当我们调用自定义的库时,会发生报”Unresolved reference”警告:

912
来自专栏懒人开发

android studio简单使用(A):自定义模版介绍

自己也没有怎么接触过android studio的模版 只是参考 鸿洋 的博客,接触到了, 自己记录一下 具体参考: https://github.com...

952

扫码关注云+社区