Selenium的使用

Selenium是一个自动化测试工具,利用它可以模仿人类行为,如点击、下滑、移动鼠标等,同时还能获取网页源码

相关链接:https://www.selenium.dev/

目录

1、准备工作

2、基本示范

3、功能介绍

4、信息获取

5、切换页面

1、准备工作

首先要确保安装好selenium库和对应浏览器的驱动。

2、基本示范

这里用的是Chrome浏览器

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')     
browser.quit()    # 退出

运行代码后会弹出一个百度的页面

如果你用的发其他浏览器,比如Firefox就可以这样写

browser = webdriver.Firefox()

3、功能介绍

3.1、请求网站

get()方法请求网站,传入一个url即可,同时我们可以调用page_source获取源码

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
print(browser.page_source)  # 获取网页源码
browser.quit()  # 退出

3.2、单个节点查找

我们查找一下百度的输入框

在这里插入图片描述
我们可以看到这个input标签内有哪些内容class、id、name,我们可以通过这些来定位这个位置,当然也可以根据css、xpath来查找

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_class_name('s_ipt')
b = browser.find_element_by_id('kw')
c = browser.find_element_by_xpath('//input[@class="s_ipt"]')
browser.quit()  # 退出
print(a)
print(b)
print(c)

输出结果:
<selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")>
<selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")>
<selenium.webdriver.remote.webelement.WebElement (session="3a9746646e68a7e5ddb24304cbd6c705", element="fa252264-5131-42a3-ac27-b393d51867c1")>

我们可以发现都是一样的

find_element_by_class_name()是根据class属性查找find_element_by_id()就是根据id来查找

这里列出所有定位单个节点的方法,大家可以根据自己的习惯来选择

在这里插入图片描述

3.3、节点交互

这里介绍几个常用的功能:点击、输入文本、清空文本

点击用click(),输入文本用send_keys(),清楚文本用clear()

示例:

这里用百度搜索爬虫

首先是要找到输入框所在的HTML位置
在这里插入图片描述
我们可以轻松的找到它,在class为s_ipt的input标签下

输入文本

browser.find_element_by_class_name('s_ipt').send_keys('爬虫')

清空文本

中间加个sleep,可以清楚看到全过程

browser.find_element_by_class_name('s_ipt').send_keys('爬虫')
time.sleep(1)
browser.find_element_by_class_name('s_ipt').clear()

在这里插入图片描述
最后点击百度一下

browser.find_element_by_id('su').click()

4、信息获取

4.1、属性获取

既然可以定位节点那也可以获取节点的属性,可以调用get_attribute()

用上一个案例中的百度一下的按钮吧

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_id('su')
print(a.get_attribute('class'))
browser.quit()  # 退出

运行结果:
bg s_btn

对比一下,一模一样

4.2、获取文本

在这里插入图片描述
文本在class=“title”的span标签内

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_class_name('title')
print(a.text)
browser.quit()  # 退出

运行结果:
下载百度APP

咦,怎么回事呢?

在网页源码中class=“title”的标签不唯一,但是它只会返回第一个符合条件的。那现在怎么办呢?用xpath定位,右键点击标签可以直接copy XPath规则

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
a = browser.find_element_by_xpath('//*[@id="s_icons"]/a[2]/span[2]')
print(a.text)
browser.quit()  # 退出

但是直接报错了,原来是我打开的百度与驱动器打开的百度设置不同。这里就用驱动器打开的百度调试就好了。
在这里插入图片描述
这就对上了

5、切换页面

第一次打开百度一下的页面,第二次新建一个页面打开知乎的官网

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.execute_script('window.open()')
browser.switch_to.window(browser.window_handles[1])
browser.get('https://www.zhihu.com/signin?next=%2F')
browser.quit()  # 退出

execute_script(‘window.open()’)这个命令就是打开一个新的选项卡,switch_to.window()是切换到某个选项卡,这里是切换到第二个选项卡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值