当前位置: 首页 > article >正文

不废话简单易懂的Selenium 页面操作与切换

不废话简单易懂的Selenium 页面操作与切换

本人在操作Selenium由于之前没有总结笔记,做各种操作的时候总是要查资料查来查去,所以总结一下一些常用的Selenium操作方法和基础配置,如果需要针对html进行内容截取和操作,可以同时看本人的lxml操作笔记食用:

python简单易懂的lxml读取HTML节点及常用操作方法-CSDN博客

基础配置

基础包安装

我一般用清华源下载

Selenium基础包安装,注意版本不同,语法也会有所变化,我使用的python版本是3.19

pip3 install selenium~=4.23.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

方便快速下载对应chrome驱动包的工具下载

pip3 install webdriver_manager=4.0.2

初始化

        # 初始化自动化爬虫
        # 配置参数
        chrome_options = Options()
        # 设置日志级别为 FATAL
        chrome_options.add_argument('--log-level=3')
        # 忽略证书错误
        chrome_options.add_argument('--ignore-certificate-errors')
        chrome_options.add_argument("--headless")  # 启用无头模式,隐藏浏览器界面
        chrome_options.add_argument("--no-sandbox")  # 防止一些潜在问题
        chrome_options.add_argument('--disable-dev-shm-usage')
        chrome_options.add_argument("--window-size=1800,3000") # 防止页面某些元素可能不被点到

        # 添加user-agent,避免被当作爬虫脚本,使得无头模式下能够正常爬取
        chrome_options.add_argument(
            "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
        executable_path = ChromeDriverManager().install() # 安装chrome驱动并自动获取地址返回
        service = ChromeService(
            executable_path=executable_path)
        driver = webdriver.Chrome(service=service, options=chrome_options) # 得到驱动器

基础操作

打开链接url

从当前页面打开链接:

driver.get(url)

新建一个标签页并打开链接(注意此时句柄还是上一个页面,需要手动切换):

 # 打开新标签页
driver.execute_script("window.open('{}');".format(link))

获取句柄与切换关闭标签页

句柄代表的是一个页面,切换句柄来获取每个页面的信息进行操作

获取当前句柄:
page_list_handle = driver.current_window_handle
获取全部句柄:

获取到的是句柄的数组列表

all_handles = driver.window_handles
切换句柄(切换标签页):

切换回一开始保存的句柄

self.driver.switch_to.window(page_list_handle)

切换到当前的最后一个句柄,也就是新创建的句柄:

self.driver.switch_to.window(all_handles[-1])
关闭指定标签页:

此时被关闭的是当前选中的句柄,就自然关闭了标签页

driver.close()

获取当前句柄的网页html

driver.page_source  # 获取当前页面的HTML源代码

获取当前句柄的网页链接

driver.current_url

通过js去获取当前网页链接

current_url = driver.execute_script("return window.location.href;")

执行所有操作完毕关闭驱动

driver.quit()  # 关闭驱动程序,释放资源

元素选择和点击,输入

按钮

按钮可以通过xpath定位获取,driver.find_element是定位一个元素,driver.find_elements是定位多个元素

next_button = driver.find_element(By.XPATH, "//*[contains(@id, 'next') or contains(@name, 'next') or contains(@class, 'next')]")

点击

next_button.click()

当一般的点击操作无法生效的时候可以使用js单击法

driver.execute_script("arguments[0].click();", next_button)
文本框

获取多个文本框的其中一个文本框

input_element = driver.find_elements(By.XPATH, ".//input")[0]

清除文本框内容

# 清除输入框中的默认文本(如果有的话)
input_element.clear()

如果发现无法清除,则最好用js方法清除

driver.execute_script("arguments[0].value='';", input_element)

输入内容

# 输入数字
input_element.send_keys(page_num)

获取文本框内容

注意,获得的数字的值可能是string类型,要手动转int

current_value = input_element.get_attribute('value')

模拟键盘操作(回车)

# 模拟回车键
input_element.send_keys(Keys.RETURN)

http://www.kler.cn/news/305226.html

相关文章:

  • Python实现一个简单的爬虫程序(爬取图片)
  • postgresql 导出CSV格式数据
  • 电脑连手机热点,上不了网
  • CSS 响应式设计(补充)——WEB开发系列36
  • [数据集][图像分类]痤疮严重程度分级分类数据集999张3类别
  • QT学习第五天
  • mysql workbench 如何访问远程数据库
  • 快手手撕 力扣2487 从链表中移除节点 单调栈 递归
  • HTTP 请求方式`application/x-www-form-urlencoded` 与 `application/json` 怎么用?有什么区别?
  • C++编译环境(IDE)推荐及安装
  • 美国硅谷大带宽服务器带宽堵塞解决方案
  • Oracle发邮件功能:设置的步骤与注意事项?
  • 【Oracle】TIMESTAMP类型时间计算时间差
  • SprinBoot+Vue宠物共享平台的设计与实现
  • 性能诊断的方法(五):架构和业务诊断
  • 前端下载word、excel文件的两种方法
  • [数据集汇总]智慧交通-铁路相关数据集汇总
  • dedecms靶场(四种webshell姿势)
  • JMeter 入门之远程启动,服务模式,多机联测,负载均衡测试
  • 基于python+django+vue+MySQL的酒店推荐系统
  • Golang | Leetcode Golang题解之第396题旋转函数
  • 数据结构C //线性表(链表)ADT结构及相关函数
  • Qt与MQTT交互通信
  • 探索音视频SDK的双重核心:客户端与服务端的协同作用
  • 裸金属服务器与云服务器的区别有哪些?
  • 选择合适的工业制造营销代理机构:应关注哪些方面
  • 【开源免费】基于SpringBoot+Vue.JS高校心理教育辅导系统(JAVA毕业设计)
  • Axios 掌握现代 Web 开发的 HTTP 客户端
  • jenkins入门
  • Leangoo敏捷工具在缺陷跟踪(BUG)管理中的高效应用