基于python3.9的selenium4使用心得(1)

702 阅读3分钟

前言

最近学校要求完成创新创业知识的网课,但是自己并不想把时间花在这些无所谓的刷课上,于是就想着用python写一个自动刷课的脚本,在查阅了资料后,决定选择Selenium4去做。此系列博客也是记录自己的学习经历,和遇到的困难。


一、Selenium是什么?

Selenium是一个用于Web应用程序测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等; 支持的开发语言有Java、Python、C#、ruby,更多详情可以查阅官方参考文档

二、使用步骤

1.Selenium环境配置

pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple #使用清华镜像网站安装

还需要安装对应浏览器的驱动,可以参考其他博主文章

2.导入库

from selenium import webdriver

3.初步使用Selenium

以Edge浏览器访问百度网站为例

driver = webdriver.Edge()	#创建一个浏览器对象
driver.get('https://baidu.com/')	#访问百度首页
driver.quit()	#关闭浏览器

以上代码可以访问百度的首页,成功访问网站后我们可以与各种各样的浏览器元素进行交互, 但是交互的前提是可以在网页中定位到这些浏览器元素。

4.定位浏览器元素(WebElement)

Selenium4在 WebDriver 中有 8 种不同的内置元素定位策略:

定位方法要求
class name定位class属性与搜索值匹配的元素(不允许使用复合类名)
css selector定位 CSS 选择器匹配的元素
id定位 id 属性与搜索值匹配的元素
name定位 name 属性与搜索值匹配的元素
link text定位link text可视文本与搜索值完全匹配的锚元素
partial link text定位link text可视文本部分与搜索值部分匹配的锚点元素。如果匹配多个元素,则只选择第一个元素。
tag name定位标签名称与搜索值匹配的元素
xpath定位与 XPath 表达式匹配的元素

更多详细的描述可以查阅官方文档中的相关部分

如果我们想要在百度首页上定位搜索栏的位置

在这里插入图片描述

我们可以打开Edge浏览器自带的抓包工具

Fn+F12

在这里插入图片描述 可以看到搜索栏的浏览器元素信息

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

我们可以使用class、name、id等去定位,方法虽多但是当一个元素拥有id的属性时还是优先用id定位,因为id是唯一的。 通过调用driver对象的find_element()方法进行元素查找。

from selenium import webdriver
from selenium.webdriver.common.by import By	#引入这个包是因为其中封装了Selenium的定位方式
driver.get('https://baidu.com/')
element = driver.find_element(By.ID, 'kw')

同理,通过class、name等同样可以定位搜索栏

element = driver.find_element(By.CLASS_NAME, 'wd')		#通过class查找
element = driver.find_element(By.NAME, 's_ipt')		#通过name查找

定位到元素后就可以与该浏览器元素进行交互 例如: 向搜索栏输入:三峡大学

element.send_keys('三峡大学')

完整代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Edge()
driver.get('https://baidu.com/')
element  = driver.find_element(By.ID, 'kw')
element .send_keys('三峡大学')
sleep(4)	#需进行sleep否侧浏览器会立马关闭,导致无法看见现象
driver.quit()

代码执行后可以得到如下界面

在这里插入图片描述

总结

此篇是我的第一篇文章,希望能以此为突破口,在平台上和其他同学一起学习、交流。此系列后续文章将会更加深入Selenium4,包括但不限于更多的元素交互,操作窗口的转移,iframe内的元素查找,后续也会更新自己的学习Selenium4的成果与经验教训。