from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 启动 Chrome 浏览器
driver = webdriver.Chrome()
try:
# 步骤1:进入首页
driver.get("http://localhost:8080/#/")
# 步骤2:点击登录按钮
login_button = driver.find_element_by_xpath("//span[text()='登录']")
login_button.click()
# 步骤3:输入账号和密码,点击登录
username_input = driver.find_element_by_css_selector("input.el-input__inner[placeholder='用户名']")
password_input = driver.find_element_by_css_selector("input.el-input__inner[placeholder='密码']")
login_button = driver.find_element_by_xpath("//span[text()='登录']")
username_input.send_keys("Yingjie")
password_input.send_keys("123456")
login_button.click()
# 等待登录成功
WebDriverWait(driver, 10).until(EC.url_contains("#/"))
# 步骤4:点击分类按钮查看文章分类
category_element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//li[@class='el-menu-item' and text()='文章分类']"))
)
category_element.click()
# 步骤5:查看后端分类对应的文章列表
back_element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//h4[@class='me-allct-name' and text()='后端']"))
)
back_element.click()
# 步骤6:点击标签按钮查看标签
tag_element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//li[@class='el-menu-item' and text()='标签']"))
)
tag_element.click()
# 步骤7:查看spring标签对应的文章列表
spring_element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//h4[@class='me-allct-name' and text()='springmvc']"))
)
spring_element.click()
# 步骤8:查看文章详情
try:
# 使用 CSS 选择器定位文章标题链接元素
article_link = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '.me-article-header > a.me-article-title'))
)
article_link.click()
except Exception as e:
print("发生异常:", e)
# # 步骤8:查看文章归档列表
# articles_element = WebDriverWait(driver, 20).until(
# EC.presence_of_element_located((By.XPATH, "//li[@class='el-menu-item is-active' and text()='文章归档']"))
# )
# articles_element.click()
# 步骤9:写文章
write_element = driver.find_element_by_xpath("//li[@class='el-menu-item' and contains(text(),'写文章')]")
write_element.click()
# 获取输入标题元素
try:
# 使用显式等待确保元素加载
wait = WebDriverWait(driver, 10) # 等待最多10秒
title_textarea = wait.until(
EC.presence_of_element_located(
(By.XPATH, "//div[@class='me-write-input el-textarea']/textarea[@placeholder='请输入标题']"))
)
# 一旦找到,执行相关操作
title_textarea.send_keys("Selenium测试3")
except TimeoutException:
print("超时,未找到元素")
# 输入文章内容
try:
# 使用显式等待确保元素加载
wait = WebDriverWait(driver, 10) # 等待最多10秒
textarea = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, "textarea[placeholder='开始编辑...']"))
)
# 一旦找到,执行相关操作,输入文本
textarea.send_keys("这是我要输入的文本")
except Exception as e:
print("发生异常:", e)
# 点击发布
try:
# 定位父元素
parent_element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.CLASS_NAME, "me-write-btn"))
)
# 在父元素中查找发布按钮
publish_button = parent_element.find_element(By.XPATH, "//span[contains(text(), '发布')]")
# 点击发布按钮
publish_button.click()
except Exception as e:
print("发生异常:", e)
# 摘要
try:
# 使用 CSS 选择器定位文本框元素
summary_textarea = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, 'textarea[placeholder="请输入摘要"]'))
)
# 在文本框中输入内容
summary_textarea.send_keys("测试")
except Exception as e:
print("发生异常:", e)
# 下拉框
try:
# 等待下拉框可点击
dropdown = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".el-input__inner")))
# 点击下拉框以展开选项
dropdown.click()
# 等待下拉框选项出现
dropdown_option = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='后端']")))
# 选择下拉框的值
dropdown_option.click()
except Exception as e:
print("发生异常:", e)
# 标签
try:
# 等待文章标签元素可见
tag_checkbox = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.XPATH, "//span[text()='springboot']")))
# 点击文章标签复选框
tag_checkbox.click()
except Exception as e:
print("发生异常:", e)
# 发布
try:
# 使用 XPath 定位 "发布" 按钮元素
publish_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable(
(By.XPATH, '//button[contains(@class, "el-button--primary") and .//span[contains(text(), "发布")]]'))
)
# 点击发布按钮
publish_button.click()
except Exception as e:
print("发生异常:", e)
# 步骤10:评论
try:
# 使用 XPath 定位评论文本框元素
comment_textarea = WebDriverWait(driver, 10).until(
EC.presence_of_element_located(
(By.XPATH, '//div[contains(@class, "me-view-comment-text")]//textarea[@placeholder="你的评论..."]'))
)
# 在评论文本框中输入内容
comment_textarea.send_keys("这是我的评论。")
except Exception as e:
print("发生异常:", e)
# 提交评论
try:
# 使用 CSS 选择器定位评论按钮元素
comment_button = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, 'button.el-button.el-button--text span'))
)
# 使用 JavaScript 执行点击操作
driver.execute_script("arguments[0].click();", comment_button)
except Exception as e:
print("发生异常:", e)
finally:
# 关闭浏览器
driver.quit()
Selenium自动化测试——个人博客系统
最新推荐文章于 2024-10-13 22:27:35 发布