UI测试自动化-Web-Python-Selenium-2-元素操作、浏览器操作

一、元素操作和元素信息获取

1.元素操作 click send_keys clear

2.获取元素信息:

(1)获取元素大小 元素.size

(2)获取元素文本 元素.text

(3)获取元素属性值 元素.get_attribue(属性名'')

--------------4 5 6 返回值:bool--------------

(4)判断元素是否可见 元素.is_displayed()

(5)判断元素是否可用 元素.is enabled()

(6)判断元素是否选中 元素.is selected()

python 复制代码
from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
# 1.打开浏览器 --实例化浏览器
driver=webdriver.Chrome()
# 2.输入url
driver.get("http://60.204.225.104")

# 3.1获取用户名输入框的大小
element_size= driver.find_element(By.XPATH,"//input[@placeholder='账号']").size
print(element_size)
# 3.2判断页面中的span标签是否可见
is_seen=driver.find_element(By.CSS_SELECTOR,"span").is_displayed()
print(is_seen)
# 3.3判断第一个按钮是否可点击
is_clickable=driver.find_element(By.CSS_SELECTOR,"button").is_displayed()
print(is_clickable)

# 4.关闭浏览器
sleep(5)
driver.quit()

二、浏览器操作

API:

1.设置浏览器显示范围:

(1)窗口最大化 driver.maxmize_window()

(2)设置窗口大小 driver.set_window_size(width,height)

(3)设置窗口位置 driver.set_window_position(x,y) 坐标 左上角是(0,0)

2.浏览器显示页面操作

(1)页面后退操作 driver.back()

(2)页面前置操作 driver.forword()

(3)页面刷新 driver.refresh()

3.浏览器关闭操作

(1)关闭当前窗口 driver.close()

(2)关闭浏览器 driver.quit()

4.获取浏览器信息

(1)获取标题 driver.title 应用场景:断言时,通过title获取当前所在的页面

(2)获取网页地址 driver.current_url

5.当前窗口:

创建驱动时第一个打开的窗口,对于当前窗口的元素一般可以直接定位和操作,如果弹出新的窗口,对于新的窗口元素不能直接进行操作,需要结合窗口切换

python 复制代码
from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
# 1.打开浏览器 --实例化浏览器
driver=webdriver.Chrome()
# 2.输入url
driver.get("https://www.baidu.com")

# 3.1 最大化浏览器
driver.maximize_window()
sleep(3)
# 3.2 设置窗口宽度500px 高度700px
driver.set_window_size(500,700)
sleep(3)
# 3.3 设置窗口位置
driver.set_window_position(0,500)
sleep(3)
# 3.4 点击超链接
driver.find_element(By.LINK_TEXT,"新闻").click()
sleep(3)
# 3.5返回首页
driver.back()
sleep(3)
# 3.6 前进到新闻界面 --这里会打开新页面
driver.forward()
sleep(3)
# 3.7 刷新新闻界面
driver.refresh()
# 4.关闭浏览器
sleep(5)
driver.quit()

三、页面交互操作

1.下拉框 --Select 推荐还是使用CSS XPATH

(1)元素定位的方式去操作下拉框,操作繁琐,影响脚本运行效率

所以:Selenium--->Select

(2)导包:

from selenium.webdriver.support.select import Select

(3)创建select对象:

select = Select(element)

(4)选择选项:

select .select_by index(index) 根据下标

select .select_by _value(value) 根据选项value属性值

select .select_by_visible text(text) 根据选项文本

(5)Select类实现选项只适用于HTML原生态的<select>+<option>,而基于Element UI 封装的(结构是<div>+<li>)不能使用Select

python 复制代码
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
import time

driver = webdriver.Chrome()
driver.get("http://60.204.225.104")
driver.maximize_window()

try:
    # 1. 登录(沿用原逻辑,建议替换为显式等待)
    WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.XPATH, "//input[@placeholder='账号']"))
    ).send_keys("admin")
    time.sleep(1)
    driver.find_element(By.XPATH, "//*[@type='password']").send_keys("123456")
    time.sleep(1)
    driver.find_element(By.XPATH, "//*[@placeholder='验证码']").send_keys("2")
    time.sleep(1)
    driver.find_element(By.XPATH, "//*[contains(text(), '登')]").click()
    time.sleep(2)

    # 2. 定位并点击"客户/供应商/承运商"父菜单(展开子选项)  也可以使用lambda 更灵活,适合复杂条件
    parent_menu = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable(
            # 父节点定位语法,找到当前元素的父级<div>元素  --可点击元素时父级div而非span本身
            (By.XPATH, "//span[text()='客户/供应商/承运商']/parent::div")
        )
    )
    parent_menu.click()
    time.sleep(1)  # 等待子菜单展开

    # 点击"供应商"子菜单
    supplier_submenu=WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH,"//*[text()='供应商']"))
    )
    supplier_submenu.click()
    time.sleep(1)


    # 3. 定位"第一级"选项(第二个)
    second_first_level = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable(
            (By.XPATH, "(//*[contains(text(), '第一级')])[2]")
        )
    )
    second_first_level.click()

finally:
    time.sleep(5)
    driver.quit()

2.弹出框

(1)当页面存在弹出框时,必须先处理掉弹出框才能继续其它操作

(2)类型:

自定义弹出框

JS弹出框

(2)自定义弹出框 ---不用处理,可正常操作

<div>+<button>

可以直接通过web浏览器开发者工具查看到具体的元素信息

通过元素定位后直接可以处理掉

(3)JS弹出框 --必须处理

alert() confirm()

通过IS函数实现,通过web浏览器开发者工具无法查看到元素信息 常见JS弹出框形式:alert(警告框)、confirm(确认框)、prompt(提示框)

不能通过元素定位进行处理

(4)获取弹出框对象

alert=driver.switch_to.alert

alert.text 获取弹出框文本 只合适警告框

(5)弹出框处理方法

alert.accept() 接受弹出框

alert.dismiss() 取消弹出框 确认框没有取消按钮,取消方法一样生效

3.滚动条

(1)所操作的元素不在当前展示页,需要滑动滚动条才能找到(比如用户协议同意)js

(2)定义js字符串 js="window.scrollTo(0,1000)"

(3)执行js字符串 driver.execute_script(js)

相关推荐
风吹落叶花飘荡2 小时前
2026 在阿里云(Aliyun)上实现 Certbot 自动化申请
阿里云·自动化·云计算
kobe_OKOK_2 小时前
快递鸟对接发快递后端设计系统
python·django
Tipriest_2 小时前
配置用户pip源与查看当前的pip的源的办法
linux·人工智能·python·pip
谎言西西里2 小时前
React hooks 之 一篇文章掌握 useState 和 useEffect 的核心机制
前端·react.js
Apifox.2 小时前
Apifox 12 月更新| AI 生成用例同步生成测试数据、接口文档完整性检测、设计 SSE 流式接口、从 Git 仓库导入数据
前端·人工智能·git·ai·postman·团队开发
bjzhang752 小时前
使用 HTML + JavaScript 实现滑动验证码
前端·javascript·html
专注VB编程开发20年2 小时前
VB6 UIAutomation 自动化查找元素
运维·自动化·uiautomation·uia
行走的陀螺仪2 小时前
使用uniapp,实现根据时间倒计时执行进度条变化
前端·javascript·uni-app·vue2·h5
科技D人生2 小时前
Vue.js 学习总结(19)—— Vue3 按钮防重复点击三种方案总结
前端·vue.js·uniapp·vue3 防重复提交·uniapp 防重复提交·前端防抖