selenium模块

目录

selenium是什么

selenium安装

使用selenium打开浏览器

使用selenium访问页面

使用selenium获取网页中的某个节点

使用selenium对某个节点交互

获取某个节点的属性

使用selenium运行js代码

使用selenium对标签页的操作

switch_to切换frame标签

selenium对cookie的处理

设置元素等待

 使用selenium前进或后退

selenium相关设置

使用selenium关闭浏览器


selenium是什么

Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一。Selenium 支持的语言包括C#,Java,Perl,PHP,Python 和 Ruby。目前,Selenium Web 驱动程序最受 Python 和 C#欢迎。 Selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 Web 浏览器中运行。在爬虫领域 selenium 同样是一把利器,能够解决大部分的网页的反爬问题。下面就进入正式的 study 阶段。

selenium安装

pip install selenium

使用selenium打开浏览器

# 声明浏览器对象

# 导入selenium模块
from selenium import webdriver  # webdriver 网络驱动

chrome = webdriver.Chrome()  # 谷歌浏览器
firefox = webdriver.Firefox()  # 火狐浏览器
edge = webdriver.Edge()  # Edge浏览器
phantomjs = webdriver.phantomjs()  # phantomjs浏览器
safari = webdriver.Safari()  # 苹果浏览器

使用webdriver方法声明浏览器对象,会返回一个浏览器对象,后面所有的操作都是在此对象上进行操作的。

需要注意的是,在使用selenium打开浏览器前,需要下载相对应的浏览器驱动才能使用,下载教程网上有很多,这里就不过多介绍了。

使用selenium访问页面

chrome.get(url)

使用get方法向某个url发送get请求。

使用selenium获取网页中的某个节点

在最新版本中,使用selenium获取节点只有两个方法

  • find_element()
  • find_elements()

需要传入两个参数,第一个参数为使用哪个方法进行查找,第二个参数表示具体的值。

支持使用使用下列方法获取节点:

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
  • by_link_text和by_partial_link_tex的区别:全部文本和包含某个文本  

如:

from selenium.webdriver.common.by import By

input = browser.find_element(By.ID, "q")

find_element和find_elements的区别:

  • 多了个s就返回列表,没有s就返回匹配到的第一个标签对象

  • find_element匹配不到就抛出异常,find_elements匹配不到就返回空列表

使用selenium对某个节点交互

  • 清空文字 clear方法
  • 输入文字 send_keys方法
  • 点击按钮 click方法

获取某个节点的属性

  • get_attribute('属性名')
    • 获取某个属性值
  • text

    • 获取文本值

  • location

    • 获取该节点在页面的相对位置

  • tag_name
    • 获取标签名称
  • size

    • 获取节点的大小,也就是宽和高

  • page_source

    • 获取页面源代码

使用selenium运行js代码

execute_script('js代码')

使用selenium对标签页的操作

  • window_handles
    • 获取全部标签页,为一个列表
  • switch_to.window('标签')

    • 跳转到某个标签。

一般这两个方法是同时使用的,先获取到全部标签页,然后通过索引指定跳转到某个标签页

switch_to切换frame标签

iframe是html中常用的一种技术,也就是一个页面中嵌套了另外一个网页,selenium默认是访问不了frame中的内容的

解决方法:

  • switch_to.frame(iframe节点元素)

需要注意的是,使用该方法后跳转到frame标签内容后,是无法获取frame标签外的元素的,需要获取当前标签页的句柄,然后切换到该句柄才可以获取frame标签外的元素

selenium对cookie的处理

  • get_cookies()
    • 获取cookie,返回的是一个列表, 其中包含的就是完整的cookie信息
  • delete_cookie("需要删除的名字")

    • 删除某一条cookie

  • delete_all_cookies()

    • 删除全部cookie

设置元素等待

很多页面都使用 ajax 技术,页面的元素不是同时被加载出来的,为了防止定位这些尚在加载的元素报错,可以设置元素等来增加脚本的稳定性。webdriver 中的等待分为 显式等待 和 隐式等待。

  • 隐式等待
    • implicitly_wait('int')

默认时间为0  如果selenium没有在DOM中找到节点,将继续等待,超出设定时间后,则抛出找不到节点的异常,并且隐式等待是全局性的,即运行过程中,如果元素可以定位到,它不会影响代码运行,但如果定位不到,则它会以轮询的方式不断地访问元素直到元素被找到,若超过指定时间,则抛出异常

  • 显式等待
    • WebDriverWait(driver, timeout)
    • driver:浏览器驱动

    • timeout:超时时间,单位秒

设置一个超时时间,每个一段时间就去检测一次该元素是否存在,如果存在则执行后续内容,如果超过最大时间(超时时间)则抛出超时异常

引入WebDriverWait对象,指定最长等待时间,然后调用它的until方法,传入要等待的条件expected_conditions,如:

driver = webdriver.Chrome()
driver.get("https://www.taobao.com/")
wait = WebDriverWait(driver, 10)
input1 = wait.until(EC.presence_of_element_located((By.ID, "q")))

 使用selenium前进或后退

  • back()
    • 后退

  • forward()
    • 前进

selenium相关设置

# 实例化配置对象
options = webdriver.ChromeOptions()  # 创建一个配置对象
options.add_argument('--headless')  # 开启无界面模式
options.add_argument("--disable-gpu")  # 禁用gpu
options.add_argument("--proxy-server=http://202.20.16.82:9527")  # 使用代理ip
options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36")# 设置useragent
# 添加配置对象
driver = webdriver.Chrome(chrome_options=options)

使用selenium关闭浏览器

  • close()
    • 关闭当前标签页
  • quit()
    • 关闭浏览器

有关selenium更多详细操作看下面链接

selenium用法详解【从入门到实战】【Python爬虫】【4万字】_Dream丶Killer的博客-CSDN博客_seleniumicon-default.png?t=M666https://blog.csdn.net/qq_43965708/article/details/120658713?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165905672916781818722727%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165905672916781818722727&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-120658713-null-null.142^v35^experiment_28w_v1&utm_term=selenium&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值