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

Web界面自动化操作工具 - Selenium常见用法

Selenium是一个用于自动化浏览器操作的工具,常用于Web应用程序的测试和爬虫开发。

下面是一些Python Selenium的常见用法和代码示例:

1. 导入Selenium库和WebDriver:

from selenium import webdriver

2. 创建WebDriver实例:

# 使用Chrome浏览器
driver = webdriver.Chrome()# 使用Firefox浏览器
driver = webdriver.Firefox()# 使用Edge浏览器
driver = webdriver.Edge()# 使用Safari浏览器
driver = webdriver.Safari()

3. 打开URL并获取页面内容:

# 打开URL
driver.get("https://www.example.com")# 获取页面标题
title = driver.title
print("页面标题:", title)# 获取页面源代码
page_source = driver.page_source
print("页面源代码:", page_source)

4. 查找元素并进行操作:

# 通过ID查找元素并输入文本
element = driver.find_element_by_id("username")
element.send_keys("myusername")# 通过XPath查找元素并点击
element = driver.find_element_by_xpath("//button[@class='submit']")
element.click()# 通过CSS选择器查找元素并获取文本
element = driver.find_element_by_css_selector(".message")
text = element.text
print("元素文本:", text)

其他多种Selenuim定位元素的方法:

4.1. 通过名称定位:

element = driver.find_element_by_name("element_name")

4.2. 通过类名定位:

element = driver.find_element_by_class_name("element_class")

4.3 通过标签名定位:

element = driver.find_element_by_tag_name("element_tag")

4.4 通过链接文本定位:

element = driver.find_element_by_link_text("link_text")

4.5. 通过部分链接文本定位:

element = driver.find_element_by_partial_link_text("partial_link_text")

5. 处理弹窗和框架:

# 切换到弹窗
alert = driver.switch_to.alert
alert.accept()  # 接受弹窗# 切换到框架
frame = driver.switch_to.frame("frame_name")
# 在框架中执行其他操作
driver.switch_to.default_content()  # 切回默认框架

6. 执行JavaScript代码:

# 执行JavaScript脚本
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")  # 滚动到页面底部

7. 等待页面加载和元素可见:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By# 等待页面加载完成
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "username")))# 等待元素可见并点击
element = wait.until(EC.visibility_of_element_located((By.XPATH, "//button[@class='submit']")))
element.click()

8. 关闭浏览器:

# 关闭当前窗口
driver.close()# 关闭整个浏览器
driver.quit()

这些是Python Selenium的一些常见用法和代码示例。Selenium提供了丰富的API用于模拟用户操作和获取页面内容,可以根据具体的需求进行更多的操作和定制化开发。

9.使用场景1 - 打开百度并搜索

from selenium import webdriver
from selenium.webdriver.common.by import By# 启动Chrome浏览器
driver = webdriver.Chrome()# 打开百度网页
driver.get("http://www.baidu.com")# 找到搜索输入框并输入关键词
search_input = driver.find_element(By.ID, "kw")
search_input.send_keys("selenium")# 提交搜索表单
search_input.submit()# 等待搜索结果加载完成
driver.implicitly_wait(20)# 找到搜索结果列表中的第一个结果
first_result = driver.find_element(By.CSS_SELECTOR, "#content_left .result h3 a")# 获取第一个结果的文本内容
first_result_text = first_result.text# 打印第一个搜索结果
print(first_result_text)# 关闭浏览器
driver.quit()

10.使用场景2 - 持续集成Jenkins触发

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 启动Chrome浏览器
driver = webdriver.Chrome()# 打开Jenkins登录页面
driver.get("http://Jenkins_Loginpage/")driver.implicitly_wait(10)# 找到用户名和密码输入框,并输入相应的值
username_input = driver.find_element(By.ID, "j_username")
password_input = driver.find_element(By.NAME, "j_password")username_input.send_keys("username")
password_input.send_keys("password")# 提交登录表单
login_button = driver.find_element(By.NAME, "Submit")
login_button.click()# 等待登录成功后的页面加载完成
driver.implicitly_wait(5)# 打开Jenkins首页
driver.get("http://Jenkins_Homepage/")# 找到搜索输入框,并输入任务名称
search_input = driver.find_element(By.ID, "search-box")
search_input.send_keys("Job_Name")# 提交搜索表单
search_input.submit()# 等待搜索结果加载完成
driver.implicitly_wait(5)# 找到搜索结果中的任务链接,并点击进入任务详情页
job_link = driver.find_element(By.LINK_TEXT, "Job_Name")
job_link.click()# 找到构建按钮,并点击进行构建
build_button = driver.find_element(By.XPATH, "//*[@id='tasks']/div[4]/span")build_button.click()# 等待构建成功的状态出现
wait = WebDriverWait(driver, 60)
build_success_status = wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, ".build-status"), "Success"))# 获取构建状态文本内容
build_status = driver.find_element(By.CSS_SELECTOR, ".build-status").text# 打印构建状态
print(build_status)# 关闭浏览器
driver.quit()
http://www.lryc.cn/news/206462.html

相关文章:

  • Openssl数据安全传输平台009:加密理论基础:哈希/非对称加密RSA/对称加密AES
  • iPhone开发--Xcode15下载iOS 17.0.1 Simulator Runtime失败解决方案
  • Galaxy生信云平台|Maftools高效地汇总、分析、注释和可视化肿瘤基因突变MAF文件...
  • JS三种常见的存储机制
  • 【Python机器学习】零基础掌握BaggingClassifier集成学习
  • [晕事]今天做了件晕事26;gcc对strcmp/strncmp的优化
  • 【深度学习】使用Pytorch实现的用于时间序列预测的各种深度学习模型类
  • ts | js | 爬虫小公举分享
  • 实现el-table打印功能,样式对齐,去除滚动条
  • 2022年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【面试经典150 | 链表】两数相加
  • vue路径中“@/“代表什么
  • java springboot2.7 写一个本地 pdf 预览的接口
  • RustDay06------Exercise[81-90]
  • 【Docker从入门到入土 6】Consul详解+Docker https安全认证(附证书申请方式)
  • PCIe架构的处理器系统介绍
  • 国产内存强势崛起,光威龙武挑战D5内存24×2新标杆
  • 矩阵的运算
  • Android 获取SIM卡号码权限申请
  • Linux CentOS 本地yum配置
  • 【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?
  • ubuntu 安装串口工具和添加虚拟串口
  • 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
  • 为什么POST请求经常发送两次?
  • 打破总分行数据协作壁垒,DataOps在头部股份制银行的实践|案例研究
  • 测试用例的设计方法(全):边界值分析方法
  • 酷开科技 | 酷开系统沉浸式大屏游戏更解压!
  • 读高性能MySQL(第4版)笔记20_Performance Schema和其他
  • spring cloud Eureka集群模式搭建(IDEA中运行)《二》
  • 大模型(LLM)在电商推荐系统的探索与实践