首页 > 其他分享 >Selenium自动化测试——个人博客系统

Selenium自动化测试——个人博客系统

时间:2024-05-07 09:45:53浏览次数:14  
标签:10 Selenium driver 博客 element EC 自动化 until WebDriverWait

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()

 

标签:10,Selenium,driver,博客,element,EC,自动化,until,WebDriverWait
From: https://www.cnblogs.com/zyj3955/p/18176535

相关文章

  • 腾讯公益赛个人冲刺博客10(2024.5.6)
    今天测试多人联机整体效果    ......
  • 腾讯公益赛个人冲刺博客7(2024.5.1)
    今天处理sos的定位功能,但自动定位功能不稳定,需要手动定位importandroid.Manifest;importandroid.content.pm.PackageManager;importandroid.os.Bundle;importandroid.widget.Toast;importandroidx.annotation.NonNull;importandroidx.appcompat.app.AppCompatActivit......
  • 腾讯公益赛个人冲刺博客2(2024.4.24)
    登录注册页面,问题暂无,明天做帮扶的第一个界面<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.andro......
  • 腾讯公益赛个人冲刺博客3(2024.4.25)
    今天做了帮扶功能的添加界面的雏形,以后可能还需要完善问题:一开始在想用不用网格布局,后来结合着改了一下明天做后端<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android......
  • 腾讯公益赛个人冲刺博客4(2024.4.26)
    今天完善了帮扶程序的后端,实现了后端的增和查询packagecom.example.helppeople;importandroid.annotation.SuppressLint;importandroid.content.Intent;importandroid.os.Bundle;importandroidx.appcompat.app.AppCompatActivity;importcom.example.helppeople.R;......
  • 腾讯公益赛个人冲刺博客5(2024.4.29)
    今天调整了帮扶功能前端页面,略微比之前好看了一些<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:to......
  • 腾讯公益赛冲刺个人博客1(2024.4.23)
    今天确定了组内第一阶段的任务是基本完成sos和帮扶两个核心功能以及登录注册等常规功能完成登录和注册的基本页面以及数据库的设计packagecom.example.helppeople.entity;publicclassStudent{privateStringid;privateStringname;privateStringphon......
  • 测试自动化(seleuim使用)
    测试自动化(seleuim使用)【概要】【步骤】1.2.【问题汇总】【问题1】使用text获取页面元素文本信息时,语句不报错,但是拿不到文本【解决1】将定位元素和获取文本语句分开执行,运行成功【问题2】使用assert显示报错信息时,直接输出key,未输出value【解决2】未获得wrong_message信息,此时wro......
  • 测试自动化(xpath定位)
    测试自动化(xpath定位)【概要】XPath是一种用于在XML和HTML文档中定位元素的语言,基本语句为【//元素类型[@元素属性=‘’]】其中,元素类型前须加//,可选【span、input、button、div、h1、h2】等html元素,元素属性前须加@,可选【class、placeholder、id】等元素属性在选择定位元素时,常......
  • 小伙伴说VuePress太简洁了,还有没有其他博客推荐?
    写在前面自从上一篇文章发出来之后,不少小伙伴开始用VuePress搭建自己的个人网站。如果小伙伴也想用VuePress零代码零成本搭建个人网站,可以看过来传送门......