Selenium 1|学习笔记

简介: 快速学习 Selenium 1

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践 Selenium 1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15408


Selenium 1

 

内容介绍:

一、Selenium 库详解

二、Selenium 安装

三、selenium 用法讲解

四、声明浏览器对象

五、访问页面

六、查找元素

 

一、Selenium 库详解

1.概念

那么首先看一下什么是Selenium库。那么这个Selenium库它主要是一个用来做自动化测试的一个工具,那么它是支持多种浏览器的,比如说它支持safari,chrome,然后firefox ,PhantomJS, Safarl还有一些安卓浏览器之类的等等都支持。

2. Selenium驱动浏览器

那么它主要是用来驱动这个浏览器,然后给它发一些指令,让这个浏览器,来做各种动作的,那么这动作,可能会有一些跳转,输入,点击,然后下拉,等等之类的这些操作,那么都可以用这个Selenium然后来驱动它来完成。

3. Selenium解决javaScript的渲染问题

那么在爬虫中,因为已经有了浏览器,也有了这个Selenium驱动工具,那么这样的话,就可以完全的模拟这个网页加载,所以说在做爬虫的时候如果遇到这个requests库或者是re.lub这些库,然后无法正常的获取这个网页内容的话,也就是说这个网页它可能是后来的这个javaScript的渲染的,那么用Selenium就可以完成这个渲染。

实际上就是模拟了这个浏览器的完整的操作,那么在这里获取的这个源代码,就是这个网页渲染完之后的这个源代码,所以这样可以完全的解决javaScript的渲染的问题。

 

二、Selenium 安装

接下来,就看一下这个Selenium怎样安装的,那么之前也演示过了Selenium,还有它的相关的一些浏览信息动,然后就是说这个chrome,PhantomJS等等的之类的怎样来安装的。如果还没有安装的话,可以看一下前面的一些介绍,那么在这里就简单的提一下,然后它的安装,就是也是用pip3 install selenium,然后传入这个,然后传入这个selenium这个变量。Three pip3 selenium。然后就完成了这个selenium安装。

 

三、selenium 用法讲解

那么接下来就讲解一下selenium这个库的基本用法。比如说怎样来打开一个浏览器,怎样来查找一个元素,怎样网易点击,怎样在浏览器,文本框中输入一些文字之类的。

1. 基本使用

接下来就打开一个notebook文件,那么接下来首先介绍一下这个selenium的一些基本使用。那么首先选一个算是比较全面的一个实例,然后来看一下这个selenium相关的一些功能。

image.gif(1)、浏览对象

比如说在这里就是首先声明了一个浏览器对象,在这里就from selenium import webdriver

// webdriver实际上就是这么一个浏览信息的对象。

browser = webdriver.chrome()

//在这里就可以用点,然后加一个浏览器的名称,然后就可以声明这个浏览器驱动对象,然后把它复制为一个browser, browser是浏览器的意思。

(2)、访问网址

browser.get(‘https://www.baidu.com’)

//然后在这里就可以直接调用. get,然后传入这一个url,比如说在这里就传入这个百度这个网址,然后接下来它就会跳出一个浏览器,然后访问百度这个网址。

(3)、访问id

input = browser.find_element_by_id(‘kw’)

//然后后面就用了这个find_element_by_id,然后把它的这个相关的信息,就是说通过这个ID找出来了,里面的这个ID为kw的元素,然后把它复制一个imput。

input.send_keys(‘Python’)

input.send_keys(Kets.ENTER)

//然后再调用这个send_keys,send_keys就是向这个元素里面发送一些键,那就是说敲入这个python,然后接下来再send_keys敲入回车。

(4)、调用等待

wait = WebDriverWait(browser,10)wait.until(EC.presence_of_element_located((By,’content_left’)))

//然后接下来再调用一下等待,等待某个元素被加载出来,比如说这等待id为content_left的一个元素的加载出来。

(5)、打印

print(browser,current_url)

print(browser,get_cookies())

print(browser,page_source)

然后加载出来之后,再打印出当前的url,然后再把cookies打印出来,再把这个源代码打印出来。

(6)、最终代码

from selenium import webdriver

from selenium. Webdriver.common.by import By

from selenium. Webdriver.common.keys import Keys

from selenium. Webdriver.support import expected_conditions as EC

from selenium. Webdriver.support.wait import WebDriverWait

browser = webdriver.chrome()

try:

browser.get(‘https://www.baidu.com’)

input = browser.find_element_by_id(‘kw’)

input.send_keys(‘Python’)

input.send_keys(Kets.ENTER) wait = WebDriverWait(browser,10)wait.until(EC.presence_of_element_located((By,’content_left’)))

print(browser,current_url)

print(browser,get_cookies())

print(browser,page_source)

finally:

browser.close()

然后外面try,finally把包围一下,最后,把这个浏览器关掉,那么可以看一下这个网页的运行结果,那么先把编码进行最小化,运行一下。

2.运行结果

可以看到下面会弹出一个浏览器,然后马上可以消失了,因为说明它已经执行完了这个串finally,这也是它最后执行了这个close。

(1)、百度链接

那么看一下这个输出结果,那么可以看到下图有一个输出结果current_url,current_url实际上就是百度搜索的一个链接,这个就是平常在做百度搜百度的时候,比如说输入一个python,然后当前的这url变成这样的一种形式,

(2)、爬取的源代码

然后接下来打印输出了这个cookies,这cookies它就会用一个列表的形式给打印输出来,然后再把这page_source,page_source就是网页的源代码,然后下图就是网页爬取的代源代码,

image.gif(3)、提取百度结果

然后这个,就是可以用它来提取一些相关的些信息,那么比如说在这里就是这就是一些python的一些搜索的结果,那么可以对这个源代码进行解析,然后就可以提取出百度的一些搜索结果,

image.gif那么这个就是selenium然后驱动chrome完成的一些操作,那么可以为它完成输入文字,然后敲回车,然后等待加载,然后再获取源代码,这么一个过程,这就是它的一些基本的使用方法。

 

四、声明浏览器对象

那么接下来咱们就详细的一个一个来介绍一下这个selenium的一些基本的用法。那么,首先介绍一下怎样来声明浏览器对象。

from selenium import webdriver

browser = webdriver.Chrome()

browser = webdriver.Firefox()

browser = webdriver.Edge()

browser = webdriver.PhantomJS()

browser = webdriver.Safarl()

那么声明一个浏览器对象首先要引入这个 webdriver这个包,那么在这里,就直接用browser = webdriver.Chrome(),然后它就会给生成一个Chrome这么一个浏览器对象,然后就可以用它来进行各种浏览器系列操作,然后还可以在这里支持Firefox,Edge,PhantomJS,Safarl之类的,然后可能还支持一些特殊的浏览器,可以查看一下官方文档,这个支持的相关的浏览器还是比较多的。那么在这里就不再进行运行了,因为有的浏览器我这里没有安装,所以它在运行过程中会出现一些错误之类的。那么后面的话,主要是用这个Chrome来进行演示,因为它会直接弹出一个Chrome浏览器,然后可以比较直观的看一下这个运行结果。

 

五、访问页面

那么接下来就用这个Chrome来做一些演示,比如说打开这个淘宝页面,然后再把page_source打印出来,然后再把浏览器关闭。

from selenium import webdriver

browser = webdriver.Chrome()

browser.get(‘https://www.taobao.com’)

print(browser,page_source)

browser.close()

那么在这里运行一下。可以看到下面它就弹出来一个Chrome浏览器,然后突然的它出现了一个淘宝这样一个页面,然后立马把Chrome浏览器关掉,

然后下面它就会把淘宝的这个源代码然后打印展示出来,然后就可以用它来进行和一些相关信息的提取了,比如说下图就是一些相关的导航之类的。然后再下面,它可能会有一些商品的一些首页的信息。

image.gif

 

六、查找元素

然后接下来再看一下怎样来查找一个元素,现在已经把一个网页展开了,然后可能需要对这个网页进行一些交互的操作,比如说可能会找到一个输入框,然后输入一些信息,找到一个按钮,然后让它来点击,然后这样的。

1.单个元素

然后接下来就看一下怎样来获取一个元素,比如在这里就直接首先访问淘宝,然后接下来就用一下这个find_element_by_id,也就是说用然后来寻找一个元素,然后这个ID的名称就是q,然后在这里还有一个方法,比如说find_element_by_css_selector (‘#q’),也就是说可以用css选择器去选择一个元素,也可以用x path这种选择器,然后来选择一个元素。那么在这里实际上它之前的选择是完全相同的by_id(‘q’)和by_css_selector (‘#q’)实际上做同样的事情,然后by_ xpath (‘//*[@id=”q”]’)实际上这三个应该是完全一样的,在这里把它分别命名为三个input,然后把它打印出来。

from selenium import webdriver

browser = webdriver.Chrome()

browser.get(‘https://www.taobao.com’)

input_first = browser.find_element_by_id(‘q’)

input_second= browser.find_element_by_css_selector (‘#q’)

input_third = browser.find_element_by_ xpath (‘//*[@id=”q”]’)

print(input_ first, input_ second, input_ third,)

browser.close()

然后再把这个浏览器关掉,然后看一下这个结果。可以看到这个浏览器它又弹出来,然后它就关闭了,那么可以看到这个运行结果,它是一个webelement类型,然后它是有一个代号的,那么可以看到这个webelement等于0.564956等等之类的,可以看到这三个元素,实际上这个代号是完全相同的,也就是说的是完全相同的一个元素,那么这三个是完全等价的。

image.gif2. 单个元素查找方式

那么也就是说,通过这几个方法,它可以找到同样的元素,也就是说说找元素,可以用一些不同的方法找到同样的元素,那么在下面,就列出了一些常用的一些方法,

find_element_by_name

find_element_by_xpath

find_element_by_link_text

find_element_by_partial_link_text

find_element_by_tag_name

find_element_by_class_name

find_element_by_css_selector

ind_element_by_name就是说通过name来查找,然后通过x path来查找,通过link_text来查找,通过一些标签名,一个class,通过一个CSs选择器等等之类的都可以用来查找。那么传入的参数就根据它的一些不同的查找方式而不同。

image.gif3. 单个元素通用查找方式

然后还有一种查找方式,就是一个通用的查找方式,

那么可以直接调用find_element,然后它的第一个参数,就是用一个By,然后后面传一个她的类型。然后第二个参数就是把刚才的传的参数传过来,也就是说它这个方法实际上就是。这种上面这些方法的普遍的一个方法,算是一个通用的一个方法,可以直接的把这个by直接当做一个参数传过来,然后就可以进行选择了,那么也就是说,上面这些方法相当于find_element的一些特殊的事件,那么这个方法实际上也是完全一样的,也可以运行一下这个代码。

from selenium import webdriver

from selenium. Webdriver.common.by import By

browser = webdriver.Chrome()

browser.get(‘https://www.taobao.com’)

input_first = browser.find_element_(By,ID,‘q’)

print(input_ firs)

browser.close()

可以来看一下。这里的浏览器也是出现然后就关闭了,然后可以看到这里,它也是正常的输出了一个网页的元素。



相关文章
|
JavaScript 搜索推荐 API
Selenium 4|学习笔记
快速学习 Selenium 4
Selenium 4|学习笔记
|
前端开发 API 定位技术
Selenium 3|学习笔记
快速学习 Selenium 3
Selenium 3|学习笔记
|
JavaScript 前端开发 API
Selenium 2|学习笔记
快速学习 Selenium 2
Selenium 2|学习笔记
|
移动开发 前端开发 JavaScript
Selenium WebDriver API 学习笔记(三):浏览器控制
Selenium WebDriver API 学习笔记(三):浏览器控制
139 0
|
测试技术 API Python
Selenium WebDriver API 学习笔记(二):浏览器控制
Selenium WebDriver API 学习笔记(二):浏览器控制
130 0
|
前端开发 测试技术 API
Selenium WebDriver API 学习笔记(一):元素定位
Selenium WebDriver API 学习笔记(一):元素定位
106 0
Selenium学习笔记
--变量 DECLARE @Msg VARCHAR(300) = '', @State INT = 0, @Count INT =0
|
Web App开发 jenkins Java
Jenkins +selenium(学习笔记三十一)
jenkins+selenium可以做到对web自动化的持续集成。 Jenkins的基本操作: 一、新建视图及job 新建视图: 新建job: 可以选择构建一个自由风格的软件项目或者复制已有的ite...
1720 0
|
XML 数据格式
Selenium学习笔记之外部化相关测试数据---xml
我们也可以用xml来定义一个信息更为丰富的UIMap.xml文件,比如,额外还添加控件所属的页,控件的类型,然后解析构建一个XMLParser类来读取相应的值。 1 2 3 4 5 6 7 8 9 10 ...
767 0
下一篇
无影云桌面