Python selenium 使用笔记

前言

1.前置准备

1、selenium是Python的第三方模块,因此需要通过pip下载使用。

pip3 install selenium

2、下载对应版本的 chrome driver (Chrome浏览器驱动程序)

下载地址:http://chromedriver.storage.googleapis.com/index.html

2.基础用法

配置:
# 导入模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

# 生成Options对象
opt = webdriver.ChromeOptions()

# 设置窗口隐(2种方法任选一种)
opt.add_argument("--headless")
opt.set_headless()

# 添加user-agent
opt.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"')

# 设置代理(ip、port为代理IP、端口)
opt.add_argument("--proxy-server=http://{}".format(ip:port))

# 设置窗口打开时的大小
opt.add_argument("window-size=1920,1080")

# 创建浏览器对象,其中options为选填参数
driver = webdriver.Chrome(options=opt)
基本操作:
# 请求网站
url = "www.baidu.com"
driver.get(url)

# 获取网站HTML
driver.page_source

# 获取网站URL
driver.current_url

# 获取HTML中元素节点
driver.find_element_by_xpath(xpath字符串)
driver.find_element_by_class_name(class字符串)
driver.find_element_by_id(id字符串)
driver.find_element_by_name(name字符串)
driver.find_element_by_link_text(文本文字)

# 获取HTML标签中指定属性值
driver.find_element_by_xpath(xpath字符串).get_attribute(属性名)

# 获取元素在网页中的坐标位置(格式:{'y':15, 'x':25})
coordinate = driver.find_element_by_xpath(xpath字符串).location

# 判断元素在网页上是否可见(返回值为True或False)
result = driver.find_element_by_xpath(xpath字符串).is_displayed()

# 判断元素是否被选中(通常用于checkbox和radio标签,返回值为True或False)
result = driver.find_element_by_xpath(xpath字符串).is_selected()

# 模拟点击元素节点
driver.find_element_by_xpath(xpath字符串).click()

# 双击操作
ActionChains(driver).double_click(元素对象).perform()

# 模拟输入文本框
driver.find_element_by_xpath(xpath字符串).send_keys(要输入的内容字符串)

# 模拟清空输入框的内容
driver.find_element_by_xpath(xpath字符串).clear()

# 关闭浏览器当前标签页
driver.close()

# 关闭浏览器所有元素标签页
driver.quit()
窗口操作:
# 窗口最大化
driver.maximize_window()

#窗口切换操作
#获取浏览器的全部窗口信息
handles = driver.window_handles
#切换窗口(方法2选1)
driver.switch_to_window(handles[0])
driver.switch_to.window(driver.window_handles[0])

页面滚动

# 模拟页面滚动
driver.execute_script("window.scrollTo(x,y)")

详解:
x 表示横向水平坐标位置 (-)
y 表示纵向垂直坐标位置 (|)
实用:
y 滚动至页面底部:document.body.scrollHeight
y 页面按比例滚动至50%的位置:document.body.scrollHeight * 0.5


frame操作

# frame框架的切换
# 通过索引定位
driver.switch_to.frame(0)

# 从iframe跳回HTML
driver.switch_to.default_content()

frame框架的切换
frame的作用是在HTML代码中嵌套一个或多个不同的HTML代码
(iframe和frame实现)

特殊操作

#shadow-root操作

# 获取shadow-root下的某内容
sales_num_obj = self.driver.execute_script('return document.getElementsByTagName(SR父元素)[0].shadowRoot.querySelector(定位标签属性)'

详解:
主要同过JS方式进行操作
SR父元素:表示shadow-root的上一级元素标签,根据实际选择定位方式
定位标签属性:定位需要获得的对应标签元素,通过一下方式获取
id ("#名称")
class (".名称")
标签名称 (“名称”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值