Python Selenium简介(三)

news/2024/11/27 10:09:01/

Selenium点击元素的方法

在这里插入图片描述

使用右键点击
python">canvas_element = chromedriver.find_element(By.TAG_NAME, 'canvas')
ActionChains(chromedriver).context_click(canvas_element).perform()
文本输入、清除与提交
python">import time
# 导入selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
# 通过css选择器定位输入框
input_text = browser.find_element(By.CSS_SELECTOR,'#toolbar-search-input')
# 输入文本
input_text.send_keys("selenium")
# 停留2秒
time.sleep(2)
# 清空文本
input_text.clear()
# 停留三秒后关闭浏览器
time.sleep(3)
browser.quit()
submit()提交
  • 注意:submit()只能用于包含属性type='submit’的标签,并且嵌套在form表单中。
  • 也可以使用click()代替submit()使用。
  • 注意:submit()和click()是有很大区别的,这里不再做具体说明。
python">import time
# 导入selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.bing.com")
# 通过xpath选择器定位输入框,并输入CSDN
input_text = browser.find_element(By.XPATH,'//*[@id="sb_form_q"]').send_keys("CSDN")
time.sleep(2)
# 定位提交按钮后提交
browser.find_element(By.XPATH,'//*[@id="sb_form_go"]').submit()
# 停留3秒后关闭
time.sleep(3)
browser.quit()
click() 方法

这是最简单和最常用的方法。通过选中要点击的元素,然后使用 click() 方法来触发点击事件。

python">element = driver.find_element_by_id("element_id")
element.click()
JavaScript 执行点击事件

有时候使用 Selenium 的 click() 方法可能不够稳定,可以通过执行 JavaScript 代码来模拟点击事件。

python">element = driver.find_element_by_id("element_id")
driver.execute_script("arguments[0].click();", element)
使用 ActionChains 类

ActionChains 类提供了模拟用户行为的方法,其中包括鼠标点击操作。

python">from selenium.webdriver.common.action_chains import ActionChainselement = driver.find_element_by_id("element_id")
ActionChains(driver).click(element).perform()

可以根据具体情况和需求选择合适的方式来触发点击事件。通常情况下,推荐优先使用 click() 方法,如果出现稳定性问题,可以尝试使用 JavaScript 执行点击事件或者 ActionChains 类来解决。

send_keys(Keys.RETURN) 模拟回车键

对于某些元素,可以使用 send_keys(Keys.RETURN) 方法来模拟按下回车键,从而触发点击事件。

python">element = driver.find_element_by_id("element_id")
element.send_keys(Keys.RETURN)
JavaScript 修改元素属性

可以通过执行 JavaScript 代码来修改元素的属性,从而触发点击事件。例如,将元素的 onclick 属性设置为 null,然后再点击该元素。

python">element = driver.find_element_by_id("element_id")
driver.execute_script("arguments[0].setAttribute('onclick', 'null');", element)
element.click()
Robot 类模拟物理点击

在某些情况下,可以使用 Python 的 pyautogui 或 Java 的 Robot 类来模拟鼠标点击,从而触发点击事件。

python">import pyautoguielement = driver.find_element_by_id("element_id")
element_location = element.location
pyautogui.click(element_location['x'], element_location['y'])

获取页面内容

  • title页面标题
  • page_source 页面源码
  • current_url页面连接
  • text标签内文本
python">import time
# 导入selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
# 获取标题
title = browser.title
# 输出
print(title)
# 获取源代码
source_code = browser.page_source
#输出源代码
print(source_code)
# 获取页面链接
url = browser.current_url
#输出页面链接
print(url)
# 获取标签内文本
text = browser.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div[2]/div/div/button/span').text
print(text)
# 关闭页面
time.sleep(3)
browser.quit()

前进一页后退一页

  • forward()前进一页。
  • back()后退一页。
python">import time
# 导入selenium
from selenium import webdriver
from selenium.webdriver.common.by import By# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
browser.find_element(By.LINK_TEXT, 'Python').click()
#停留2秒
time.sleep(2)
# 页面后退一页
browser.back()
# 停留2秒
time.sleep(2)
# 前进一页
browser.forward()
# 关闭页面
time.sleep(3)
browser.quit()

页面刷新

  • refresh()页面刷新
python">import time
# 导入selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
browser.find_element(By.LINK_TEXT, 'Python').click()
#停留2秒
time.sleep(2)
# 页面刷新
browser.refresh()
# 关闭页面
time.sleep(3)
browser.quit()

窗口切换

  • current_window_handle获取当前窗口的句柄
  • window_handles获取所有打开页面的句柄,是一个列表
  • switch_to.window(“XX”)切换到指定页面,XX代表页面句柄
  • switch_to.frame(XX)切换到内敛框架页面,XX代表内联框架标签的定位对象
  • swith_to.parent_frame()切回到内敛框架的上一级,即从内敛框架切出。
  • switch_to.alert切换到页面弹窗
python">from time import sleep
# 导入selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动并打开指定页面
browser = webdriver.Firefox()
browser.get("http://www.csdn.net")
sleep(2)
# 获取当前窗口句柄
page_context = browser.current_window_handle
# 打开其它页面
browser.find_element(By.XPATH, '//*[@id="toolbar-search-input"]').send_keys('selenium')
browser.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div[2]/div/div/button/span').click()
sleep(2)
# 切换到刚开始打开页面
browser.switch_to.window(page_context)
# 获取当前打开所有页面的句柄
pages_context = browser.window_handles
# 输出当前打开页面个数
print(len(pages_context))  # 结果:2
# 关闭
sleep(3)
browser.quit()

http://www.ppmy.cn/news/1550319.html

相关文章

排序算法之冒泡排序篇

冒泡排序的思想: 是一个把元素从小到大排的一个算法思想 相邻的两个元素两两比较,大的那一个元素向后移,小的那个元素向前移 核心逻辑: 比较所有相邻的两个项,如果第一个比第二个大,就交换它们 从头开始…

数字图像处理(6):除法运算、除法器

(1)当除数是常数时,可以先转化为乘法,再右移,乘法的N越大,计算误差越小。 如:计算x/122,可以看成(x * 67)>>13,N13,使用verilog实现: reg …

浅谈人工智能之基于容器云进行文生视频大模型搭建

浅谈人工智能之基于容器云进行文生视频大模型搭建 引言 随着深度学习技术的不断发展,文生视频(Text-to-video)大模型成为了计算机视觉和自然语言处理领域的一个研究热点。文生视频模型可以根据输入的文本描述生成高质量的视频,广…

Springboot自带注解@Scheduled实现定时任务

基于Scheduled注解实现简单定时任务 原理 Spring Boot 提供了Scheduled注解,通过在方法上添加此注解,可以方便地将方法配置为定时任务。在应用启动时,Spring 会自动扫描带有Scheduled注解的方法,并根据注解中的参数来确定任务的…

c++:面向对象三大特性--继承

面向对象三大特性--继承 一、继承的概念及定义(一)概念(二)继承格式1、继承方式2、格式写法3、派生类继承后访问方式的变化 (三)普通类继承(四)类模板继承 二、基类和派生类的转换&a…

(五)Ubuntu22.04+Stable-Diffusion-webui AI绘画 模型转换插件安装及其使用

一、说明 这是秋叶大佬开发的一个模型转换插件,秋叶整合包中自带。如果你的 Stable Diffusion WebUI 中没有这个插件,请使用下面这个地址安装,安装完成之后别忘了重启 WebUI。 模型转换插件 https://github.com/Akegarasu/sd-webui-model-c…

深度神经网络模型压缩学习笔记二:离线量化算法和工具、实现原理和细节

文章目录 一、离线量化基础概念二、离线量化难点三、离线量化算法介绍四、离线量化工具介绍五、离线量化工具整体设计结构六、离线量化工具代码解读七、实践:Dipoorlet量化MobileNet 一、离线量化基础概念 二、离线量化难点 三、离线量化算法介绍 四、离线量化工…

低速接口项目之串口Uart开发(二)——FIFO实现串口数据的收发回环测试

本节目录 一、设计思路 二、loop环回模块 三、仿真模块 四、仿真验证 五、上板验证 六、往期文章链接本节内容 一、设计思路 串口数据的收发回环测试,最简单的硬件测试是把Tx和Rx连接在一起,然后上位机进行发送和接收测试,但是需要考虑到串…