Selenium 常用方法与属性、鼠标悬停与 Select 操作

举报
梦想橡皮擦 发表于 2021/08/11 10:08:32 2021/08/11
【摘要】 如果你有想要交流的想法、技术,欢迎在评论区留言。本篇博客主要学习 Selenium 常用方法与属性,顺带着在学习一下鼠标悬停与 Select 操作@[toc](Selenium 常用方法与属性) Selenium 常用方法与属性方法与属性都是对象的内容,本篇博客涉及的主要是 Selenium 对象与捕获到的网页元素对象。 maximize_window 方法该方法可以实现浏览器窗口最大化操作...

如果你有想要交流的想法、技术,欢迎在评论区留言。

本篇博客主要学习 Selenium 常用方法与属性,顺带着在学习一下鼠标悬停与 Select 操作

@[toc](Selenium 常用方法与属性)

Selenium 常用方法与属性

方法与属性都是对象的内容,本篇博客涉及的主要是 Selenium 对象与捕获到的网页元素对象。

maximize_window 方法

该方法可以实现浏览器窗口最大化操作,代码如下:

# 浏览器最大化
driver.maximize_window()
# 通过 ID 找到输入框,输入模特
driver.find_element_by_id("kw").send_keys("模特")

refresh 方法

刷新页面,类似 F5 或者 CTRL+F5 操作。

driver.refresh()

back 方法

浏览器返回上一页操作,具体自行尝试即可。

forward 方法

浏览器前进一页操作,具体自行尝试即可。

quit 方法

关闭浏览器并杀掉浏览器进程,注意不同的浏览器驱动进程不同,例如我使用的是 firefox,所以在任务管理器中为 firefox.exe 进程。

driver.quit()
# driver.close()

该方法与 close 的区别就是,关闭浏览器同时杀掉进程,而 close 不会。

以上部分都属于 driver 对象的方法,接下来说明一下 driver 对象的属性。

current_window_handle 属性

获取浏览器窗口句柄,看一下即可,使用场景不多。我本地显示为 21,你可以尝试一下你的电脑输出。

# 打开百度图片
driver.get('https://image.baidu.com/')

print(driver.current_window_handle)

current_url 属性

获取当前窗口的 url 地址,代码自行测试。

title 属性

获取当前页面的 title 标题值。

driver 的属性值简单介绍 3 个,接下来是 Selenium 获取到的元素对象相关的方法与属性。

send_keys 方法

前面的博客已经使用过了,代表键盘输入,例如在百度图片输入文字。

from selenium import webdriver
import time

driver = webdriver.Firefox()

# 打开百度图片
driver.get('https://image.baidu.com/')

# 通过 ID 找到输入框,输入模特
driver.find_element_by_id("kw").send_keys("模特")

get_attribute 方法

获取指定标签的属性值。先获取到指定标签,再获取标签的指定属性。

# 打开百度图片
driver.get('https://image.baidu.com/')

print(driver.find_element_by_id("kw").get_attribute("class"))

is_selected 方法

判断元素是否被选中,一般用于复选框,例如下图用户协议。选中返回 True,反之返回 False。

is_enable 与 is_displayed 方法

is_enable 方法用于判断获取的元素是否可用,is_displayed 方法用于判断元素在页面是否显示。

clear 方法

清除输入框输入的内容。

text 属性

通过元素对象的 text 属性,可以获取元素的文本值。

driver.get('https://www.csdn.net/')
print(driver.find_element_by_class_name("headP").text)

Selenium 实现鼠标悬停后选择元素

鼠标悬停在某个元素上,再进行后续的操作,是网页中常见的一种操作,在 Selenium 中,键盘鼠标操作都封装在了 Action Chains 类中,使用的时候需要导入该类。

Action Chains 中一些常用的方法如下:

  • click(某个元素) 单击操作
  • click_and_hold(某个元素) 单击按住不放,例如拖拽
  • double_click(某个元素) 双击
  • context_click(某个元素) 在元素上执行鼠标右键
  • drag_and_drop(元素,拖拽到元素) 鼠标拖拽,将目标元素拖拽到指定元素上
  • drag_and_drop_by_offset(元素,x 坐标,y 坐标) 拖拽到指定位置
  • key_down() 按住键盘上的键
  • key_up() 松开键盘上的键
  • move_to_element(元素) 鼠标移动到元素上
  • move_to_element_with_offset(元素,x 坐标,y 坐标) 将某个元素移动到指定位置
  • perform() 执行一系列的 Action Chains
  • release(元素) 释放鼠标

接下来实现,打开 csdn 首页,然后鼠标移动消息上,点击出现的公告链接。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()
# 浏览器最大化
driver.maximize_window()
# 打开首页
driver.get('https://www.csdn.net/')
# 通过 id 获取消息链接
head = driver.find_element_by_id("toolbar-remind")
# 模拟鼠标移动到消息处
ActionChains(driver).move_to_element(head).perform()
# 点击公告链接
driver.find_element_by_link_text("公告").click()

更多的内容你可以在挖掘一下,非常有意思。

Select 操作

Select 其实就是对网页中的下拉列表进行操作,该内容有些特殊,所以 Selenium 库单独写了一个类。
注意 Select 类的导入。

from selenium import webdriver
from selenium.webdriver.support.select import Select

driver = webdriver.Firefox()
# 浏览器最大化
driver.maximize_window()
# 打开学信网注册页面
driver.get('https://account.chsi.com.cn/account/preregister.action?from=chsi-home')

# 找到身份证下拉列表

credentialtype = driver.find_element_by_id("credentialtype")

Select(credentialtype).select_by_index(1)

运行之后,成功选择了 港澳台身份证

其中用到的方法为 select_by_index,依赖索引选择,对应的还有一个方法为 select_by_value 依赖值选择。还有一个是依赖显示内容进行选择,方法名为 select_by_visible_text

除了设置下拉列表选择哪一项以外,还可以获取所有下拉列表的选项。
通过 3 个属性,第一个为 options,代码示例:

# 找到身份证下拉列表
credentialtype = driver.find_element_by_id("credentialtype")
options = Select(credentialtype).options
print(options)

第二个为 all_selected_options,该属性返回下拉列表中已经被选中的选项。
第三个为 first_selected_option,返回第一个被选中的选项。

第二个与第三个自行尝试即可。

写在后面

本篇博客主要介绍了 Selenium 中常用的方法与属性,额外扩展了实现鼠标悬停的 Action Chains 类中的方法基于 Select 类中的方法。
掌握之后你会 Selenium 会有更深入的理解。


博主 ID:梦想橡皮擦,希望大家点赞评论收藏

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。